Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
536 56 113

C#/Сишарп/.NET Тред - Шапка edition #15 /csharp/ Аноним 24/11/19 Вск 11:26:07 15282621
4.png (70Кб, 512x512)
512x512
5.png (103Кб, 512x512)
512x512
59fd9bb3a0c5515[...].png (392Кб, 700x933)
700x933
2183202145b4aa3[...].gif (1839Кб, 540x304)
540x304
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.

Литература вторым постом

1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/

2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler

3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.

4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.

5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.

6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials

7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL

8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях

Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ

Код этой шапки: https://pastebin.com/YJFQKsNm

Прошлый тред тонет здесь: >>1515204 (OP) (OP)
Аноним 24/11/19 Вск 11:26:41 15282632
>>1528262 (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

18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
Аноним 24/11/19 Вск 12:30:00 15282833
ЛУЧШИЙ ОНЛАЙН РЕСУРС ПО C#/JS/SQL И СОПУТСТВУЮЩИМ ТЕХНОЛОГИЯМ
https://metanit.com/
Аноним 24/11/19 Вск 18:53:10 15286384
>>1528262 (OP)
Ты заебал, выкинь этого аниме-трапа нахуй уже
Аноним 24/11/19 Вск 23:13:29 15288525
>>1528263
Уже 8.0 книжки выходят, ты все 6.0 подсовываешь.
Аноним 25/11/19 Пнд 00:26:13 15289186
picture.jpg (43Кб, 646x306)
646x306
Ну и как это отлаживать? Хули он мне целый тред повесил?
Аноним 25/11/19 Пнд 00:29:19 15289227
>>1528852
Ты можешь предложить любую книжку в любой момент. Если захочешь.
Аноним 25/11/19 Пнд 09:03:22 15290008
Аноним 25/11/19 Пнд 13:26:39 15291039
Аноны сейчас осиливаю С# по учебнику "Полное руководство C# 4.0".
Идет тяжеловато и со скрипом, но дальше хуже. Что мне стоит изучать после киньте пожалуйста литературы и советы если есть какие полезные кроме ВЫЕБЫВАТЬ И УЧИТЬ
Аноним 25/11/19 Пнд 13:49:37 152911710
>>1529103
гугли hh по своему региону, смотри стэк, который требуют
Аноним 25/11/19 Пнд 14:15:18 152913811
image.png (69Кб, 902x712)
902x712
image.png (68Кб, 789x692)
789x692
image.png (66Кб, 873x791)
873x791
image.png (72Кб, 789x816)
789x816
Вот так первые 4 открыл.
Подскажите на что из этого лучше нацелится я так понимаю мыслить надо адекватно и смотреть на пик 1 джун, но что-то там ключевых наваков дохуя, а платят нихуя во-о-о-т.
Еще и опыт JavaScript это что подъеб такой? Я в C# хочу вкатиться чтоб JavaScript поучить?
Вообще посоветуйте на какой из пиков лучше нацелиться и еще раз хорошей литературы по теме. Да я тупой
Аноним 25/11/19 Пнд 14:32:23 152914812
>>1529138
Что за вакансии на рузком языке, лул? Это аборигены, которые ищут дурачков без знания ангельского на легаси? Улыбнуло "есть рядом столовая". Что за чуханские вакансии? 4 пика это mid+, туда даже не смотри. 1 - это за хлеб работа, ищут пиздюков.

По сабжу - что прет делать, то и учи. Сейчас веб - это 90% вакансий. А там решай сам.
Аноним 25/11/19 Пнд 15:06:31 152918913
>>1529148
У меня в городе всего 16 ваканский C# из них лишь одна на ангельском и там надо столько, что я охуел
За то 50+ на 1С не то я учу ой не то.
У меня уже ручки трясуться и я готов все бросить не поеду же я в ДС за работой ладно пока буду продолжать учить может нормальные вакансии появятся
Аноним 25/11/19 Пнд 15:16:04 152919414
>>1529189
я всегда удивляюсь логике вкатывальщикам на двоще. Если ты кодишь, чтобы работать, так бери стек, который больше всего востребован. Если ты кодишь по кайфу, то берешь самый привлекательный (лично для тебя) язык по синтаксису и возможностям.
Тоже самое и за релокейт. Готов - смотришь вакансии в городах, куда можешь поехать. Не готов - свой регион.
Аноним 25/11/19 Пнд 15:44:16 152921315
>>1529194
Но я слышал, что 1C это пиздец помойка для умственно отсталых, что-то вроде ассенизаторов в мире программистов и даже программистом называться права не имеешь ты червь пидор который ковыряется палкой в говне без возможности роста всю жизнь вынужденный тыкать в одно и тоже говно палкой
Аноним 25/11/19 Пнд 15:51:11 152922016
>>1529213
Вот тебе реальность из взрослого мира.
Знакомый челик кодит в 1с для нефтянки. В провинции. Выплатил ипотеку за двушку в хорошем районе, семья, дети, на отдых ездит регулярно. Не перерабатывает, не парится, после работы фреймворки не учит. Как ты думаешь, похоже на помойку?
Аноним 25/11/19 Пнд 15:52:35 152922217
>>1529213
1С это пиздец, а сисярп это язык больших корпораций и легаси десктопного говна, в твоей мухосрани нужны небось натягиватели верстки на вордпресс и фронтэндеры, бэкенд-языки вряд ли в принципе твой выбор, так как вакансий в самом деле будет 3 штуки на каждый из 10 бэкенд языков, зато во фронте один жс и фронт в принципе востребован. И бэкендеры тоже должны жс знать, правда хуже.
Аноним 25/11/19 Пнд 15:54:43 152922418
>>1529222
Понятно говна я поел только время зря потерял. КАКОЙ ЖЕ Я ДОЛБОЕБ А-А-А СУКА Я и так не сильно умный, но так проебаться боже мой.
>>1529220
Я уже закрыл учебник у меня еще год полтора пойду в 1С знаю сложный он и что кого.
Аноним 25/11/19 Пнд 16:02:19 152923619
>>1529213
>1C это пиздец помойка
так и есть. Все на рузком языке (тем, кто не осилил ангельский самое оно)
ООП? с 8.3 какую то пародию делали, но это не точно (только со слов 1Сника слышал)
>даже программистом называться права не имеешь ты червь пидор который ковыряется палкой в говне без возможности роста всю жизнь вынужденный тыкать в одно и тоже говно палкой
Уже вижу тебя на лесаси шарпов с .NET 2.0 где то, где просто ад. На собесе будут спрашивать то, что на твоем древнем, как говно мамонта проекте, в момент разработки еще не придумали. А переписывать - можно просто повеситься.

Да кстати, разрушу миф вкатывальщиков, что с 0 проекты мало кто пишет, восновном сапортят/фиксят. И если в вакансии пишут - продуктовая, необходимо знание жизненного цикла продукта с 0 - посадят на проект, который галера сапортит уже N лет и будешь ковырять, как ты говоришь, не то что говно, а такой пиздец, что в страшном сне не придумать.
Аноним 25/11/19 Пнд 16:03:12 152923720
>>1528638
> аниме-трапа
Ты чо, пёс. Это лучшая девочка!
Аноним 25/11/19 Пнд 16:04:12 152924021
>>1529237
>>1528638
а то, что название треда Без названия, видимо никого не смущает
Аноним 25/11/19 Пнд 16:32:03 152927822
>>1529213
>1C это пиздец помойка для умственно отсталых

зато работу на нем можешь найти в любом мухосранске. Практически все российские компании завязаны на 1С.
Аноним 25/11/19 Пнд 18:14:39 152936923
Почему если я пишу:
{var foo = Task(bar);
foo.Start();}
оно выполняется вроде как асинхронно
А если пишу:
{var foo = bar;
foo.Start();
}
async Tasl bar(){}
Оно работает синхронно?
Аноним 25/11/19 Пнд 18:21:11 152938024
image.png (1013Кб, 1000x617)
1000x617
image.png (53Кб, 738x298)
738x298
image.png (314Кб, 1187x523)
1187x523
Феликс помоги!
Аноним 25/11/19 Пнд 18:21:44 152938125
>>1529380
я хочу сгенерировать див а внутри дива сгенерировать а с линком
Аноним 25/11/19 Пнд 20:45:30 152952826
>>1529369
async не делает метод асинхронным, это знают взрослые и дети
и это написало в любой книге/статье, ебаный рот, когда вы начнете читать
Аноним 26/11/19 Втр 06:05:37 152971427
>>1529528
Я это знаю, но почем, блин, первый вариант с той же функцией просто засунутой внутрь таска делает?
Аноним 26/11/19 Втр 06:50:17 152972228
>>1529714
Потому что таск выполняется асинхронно?
Аноним 26/11/19 Втр 07:15:39 152972629
>>1529722
Ну так а почему тогда второй пример не выполняется асинхронно? Да, там я опечатался, но можно догадаться что
async Task bar() должно быть.
Аноним 26/11/19 Втр 11:43:52 152986030
Может ли один юнит тест быть подвязан к другому? На сколько я знаю, каждый юнит тест должен отделять конкретный метод от всей системы. Но как протестировать, например метод Update? Сравнить массив до Update и после?
Аноним 26/11/19 Втр 15:41:45 153004831
>>1525310
твой пост не оставляет покоя в голове. Реализовую DbContext с 15+ сущностей DbSet, в каждом из которых пишу методы CRUD-a. Причины:
1. Не могу брать базовый функционал от DbSet - т.к. нет проверки на null, если введут хуйню;
2. Все CRUD методы DbSet идут без SaveChanges. Так что хоть так, хоть так нужно будет переписывать методы.
Аноним 26/11/19 Втр 20:41:29 153024832
>>1529714
>Я это знаю
Очевидно нет. Тебя там даже компилятор должен варнинг кидать,что без авейта не будет асинхронности. А еще скидывай валидный код, потому что не понятно в чем у тебя там загвоздка ибо та хуйня даже не заработает ибо нельзя стартануть (.Start()) задачу, возвращаемую из асинхронного метода.
Аноним 27/11/19 Срд 19:16:47 153099533
Блядь, я наверное совсем тупой, но вот попытка номер ТРИ!
https://ideone.com/EmOlmj
https://ideone.com/XETOkj
https://ideone.com/OOtswd

Суть, я вроде как проверил и оно даже вроде как работает, пока клиентов мало. Но вот я сделал 500 клиентов которые ломятся в мой сервер и в определенный момент ошибка что компуктер отклонил подключение, сессии, вроде как, отключаются, но новые подключатся не хотят и приходится перезапускать.
Аноним 27/11/19 Срд 19:45:19 153102534
>>1530995
Может на гитхаб зальешь?
Аноним 27/11/19 Срд 19:47:35 153102635
>>1531025
А как на него отдельные файлики а не весь проект заливать? Не хочу чтобы все видели мои попытки реализовать HTTP-парсер
Аноним 27/11/19 Срд 20:07:06 153104736
>>1531026
Закидывать-то можно, но я имел ввиду именно проект, чтоб можно было запускать.
Аноним 27/11/19 Срд 20:34:22 153106337
28/11/19 Чтв 03:14:50 153129638
Аноним 28/11/19 Чтв 11:47:08 153141039
Аноним 28/11/19 Чтв 11:48:12 153141240
28/11/19 Чтв 12:28:13 153144241
image.png (208Кб, 480x320)
480x320
АНОНЫ, помогите! тут такая фигня, мне нужно получить инпут в формате datetime но я не могу найти нигде как-то сделать?
Аноним 28/11/19 Чтв 12:31:20 153144942
>>1531442
может нахуй сходишь, с такими вопросами? То блять со строками играют, то инпут даты нужен, что за кретины тут сидят? Где аноны, обсуждающие тонкости работы CLR и архитектурных принципов?

давай, помогай таким. А потом сиди и скроль ленту с даунскими вопросами
28/11/19 Чтв 12:35:00 153145243
image.png (166Кб, 480x360)
480x360
Аноним 28/11/19 Чтв 12:55:33 153147644
>>1531449
>обсуждающие тонкости работы CLR
А нахуя? Вот есть Рихтер, нахуя его читать, кто пояснит?
Аноним 28/11/19 Чтв 13:05:46 153149145
>>1531476
ofc, лучше даунам писать, как инпут датой получать. Спору нет.
Аноним 28/11/19 Чтв 13:24:20 153150846
>>1531449
Давай лучше поговорим в каких чулочках ты программируешь?
Носишь ли ты дома юбочки?
Аноним 28/11/19 Чтв 16:52:56 153167947
Что-то я жёстко туплю. Вот у меня есть некий лист items. И мне нужны его properties. Тогда я делаю
PropertyInfo [ ] Props = items.First().GetType().GetProperties()
И я получаю ВСЕ свойства этого листа, но как мне получить не все, а только определенные?
Аноним 28/11/19 Чтв 17:03:58 153169048
1111.png (2Кб, 698x66)
698x66
Аноним 28/11/19 Чтв 17:27:15 153170249
>>1531690
А это можно как-то в цикл засунуть? А то я изначально не знаю имена нужных свойств.
Аноним 28/11/19 Чтв 18:22:22 153173550
Аноним 28/11/19 Чтв 18:24:26 153173651
Короче, никто таки не знает как >>1531063>>1530995 нужно сделать нормально? Тогда единственный оставшийся мне выход - делать на асинхронных сокетах, как мелкософт показывает. Эх.
Аноним 28/11/19 Чтв 20:36:41 153180852
Как повышать свой скилл, если на работе мне в основном приходится обмазываться wpf? Просто я боюсь, что в случае чего мне просто некуда будет податься с этим говном.
Аноним 28/11/19 Чтв 20:48:44 153181853
>>1531736
>Не можешь в базовый протокол
>Даже с помощью супер высокоуровневых перделок для домохозяек
Первокурсники совсем дегроднули
Аноним 28/11/19 Чтв 21:08:37 153182954
>>1531818
В какой еще базовый протокол? У меня свой с свистелками-перделками и несколькими уровнями, включая криптографический(я или в вашей ветке, или в нуботреде описывал его).
Да и я таки смог, действую по примеру https://docs.microsoft.com/en-us/dotnet/framework/network-programming/asynchronous-server-socket-example просто я не понимаю, что изначально делал не так. Вроде же все нормально и оно даже работает, но потом решаешь "стресс-тест" устроить запустив 10к клиентов, и оно сначала вообще ломалось, потом я таки догадался и запихнул один кусок в try-catch и оно не ломалось, но после подключения кучи клиентов очень долго думало и один некоторые клиенты отваливались не дождавшись ответа, а потом я решил из браузера покидать пакеты и почему-то мой сервер после 3 подключений именно из браузера 90% мощностей процессора съедал и 20 гигов оперативки куда-то улетало, я хуй знает с чем это связано и просто переписал на по примеру(ну не совсем по нему, сессии-хуессии и все остальное таки перенес, а то как-то не представляю как их методом можно организовать нормальную работу и разные протоколы) и внезапно оперативу даже с кучей клиентов даже 100мб не жрет, процессор загружен всего на 1%, опять же, хуй знает чому так. Вот мне и интересно же, чому так, может анон умный и знает где я в первой реализации обосрался.
Аноним 28/11/19 Чтв 21:17:08 153183755
>>1531736
Ты хоть какую нибудь книгу читал? Не код, а сплошная дичь.
Аноним 28/11/19 Чтв 21:20:55 153184056
>>1531829
>догадался и запихнул один кусок в try-catch и оно не ломалось
Ну это вообще пушка. Ошибки не так исправляют, так ты просто проглотил исключение.
>>1531829
> 90% мощностей процессора съедал и 20 гигов
А чего ты ждал, один метод Purge может все ресурсы выкачать.
Аноним 28/11/19 Чтв 21:31:18 153185157
>>1531829
>Не может в хеллоу ворлд на сокетах
>Высерает пласт текста на 2 абзаца
Очень интересно, сейчас всё прочитаю
Аноним 28/11/19 Чтв 21:33:02 153185358
>>1531837
А зачем что-то читать, когда можно писать? Деды-то ничего не читали, а сразу писали, а потом для бак записывали что написали в книжки. Чем я хуже дедов-то?
>>1531840
> Ошибки не так исправляют, так ты просто проглотил исключение.
Так падало-то из-за отключения клиентов, как по другому-то делать? Ну, т.е. я же не знаю при обращении подключен ли этот хуй все еще или нет. А если каждый раз пинговать, чтобы проверить, по моему протоколу клиент посылает ответ что не знает что это такое ему пришло, вот я его получу и буду считать что он еще подключен, а он именно в этот момент отключится и я попробую считать и все опять упадет. Мне кажется что try-catch в данном случае очень даже неплохое решение.
> А чего ты ждал, один метод Purge может все ресурсы выкачать.
Ну, это я вроде понимал и потому каждый Purge после очистки тред усыплял же. Да и как я понимаю, если все потоки заняты, то таск с Purge хрен когда выполнится. Судя по отладке все съедал метод чтения у сессии, но я как не ебался так и не понял как его правильно сделать и, как уже сказал, все переписал на пример майкрософта и вроде как пока нормально работает.
Аноним 28/11/19 Чтв 21:39:33 153185759
>>1531851
Если это так просто, то чего же ты не покажешь как надо?
Аноним 28/11/19 Чтв 21:46:11 153185960
>>1531857
1. Ты не заплотил
2. Я пока еще не опустился до сярпа
Аноним 28/11/19 Чтв 22:12:20 153186561
>>1531853
>Чем я хуже
Деды-то с ассемблера начинали и могли в голове регистрами процессора жонглировать. А ты не можешь из готовых блоков на высокоуровневом языке своять простейшую прогу, пытаешься запихнуть круглую фигурку в треугольное отверстие. Так что иди и впитывай мудрость дедов, любезно оставленную ими в книгах.
>>1531853
>падало-то из-за отключения клиентов
Ну ок, вообще исключения надо обрабатывать, если это сделано грамотно , то без вопросов.
>Ну, это я вроде понимал
Навряд ли. С использование тасков у тебя беда и 0 в понимании асинхронности. И выкинь финализатор ты им показываешь отсутствие знаний и напрягаешь лишний раз GC.
>не покажешь как надо?
Дай нормальное описание того, что тебе надо и я накидаю тебе на выходных пример.
Аноним 28/11/19 Чтв 22:39:39 153189262
>>1531865
> 0 в понимании асинхронности
Я знаю...
> Дай нормальное описание того, что тебе надо и я накидаю тебе на выходных пример.
Мне надо чатик с комнатками(т.е. не всем клиентам рассылается то что отправил кто-то а только тем кто в комнатке с этим клиентом, при этом может быть и общий чатик) и возможностью клиентов друг с другом общаться без лишних ушей, по кастомному бинарному протоколу с разными типами клиентов(кто-то админ и может забанить матершиника, кто-то просто может цветной текст делать, кто-то картинки отправлять, кто-то в муте и может только читать что в комнате), при этом чтобы сессия не завершалась если пользователь отвалился, а жила какое-то время на случай если человек переподключится и его клиент пришлет пакетик с нужной инфой.
Да и я бы таки все же не примеров кода хотел(потому что то что я накатал сейчас, как мне кажется, за 10-20 минут не напишешь), а действительно книжек, но сколько я не просил что тут что в нуботреде, никто ничего годного не посоветовал, а то что советовали это очередное Один клиент-один сервер, почитай до <EOF> , отправь аперкейсом и закрой сессию.
29/11/19 Птн 07:53:36 153214663
Аноним 29/11/19 Птн 12:35:23 153224564
Поясните такую вещь, вот у меня есть класс и в нем поле, я хочу сделать его приватным, но при этом я хочу чтобы некоторые объекты, не являющиеся наследниками, таки могли его изменять. Как это реализовать не выпячивая наружу всем метод для изменения этого поля?
Аноним 29/11/19 Птн 13:08:52 153227265
Аноним 29/11/19 Птн 13:12:13 153227666
>>1532245
вообще странное требование, стоит подумать как сделать без этого гемороя.
конкретно по твоей ситуации мне видится вариант использования 2 интерфейсов, которые твой класс реализует 1 - публичный без метода, 2 - для некоторых наследников с методом
Аноним 29/11/19 Птн 14:49:32 153236467
>>1532245
>некоторые объекты
По каким критерия определяется дозволено ли иметь классу доступ?
Аноним 29/11/19 Птн 19:22:08 153261568
>>1532364
По критерию: Мне кажется что удобно было бы этим объектом иметь доступ к данным полям, но при этом другим объектам даже этого класса низя и а уж объектам другого класса - тем более.
Аноним 29/11/19 Птн 19:49:36 153262769
Аноним 29/11/19 Птн 20:18:20 153264170
>>1532615
Хуйня какая-то а не критерий. Думай дальше.
Аноним 30/11/19 Суб 11:19:16 153351571
>>1532627
И как он поможет мне? Вот я сделал поле private, как мне теперь без рефлексии сделать так, чтобы объект класса B мог изменить поле класса A?
>>1532641
Нормальный же. Скажем, вот у меня есть класс Enemy, и я не хочу создавать новый класс, который просто будет отличаться тем что имеет интерфейс какой-то, но хочу чтобы некоторые Enemy, например красного цвета, понижали скорость передвижения объекта класса Hero, при этом я не хочу вводить новый класс Effect, которые будут такой вот затычкой для этого всего. Хочу просто чтобы крассные Enemy имели возможность понижать скорость Hero и всё.
Аноним 30/11/19 Суб 11:41:53 153352872
>>1528262 (OP)
Может шапку пора уже обновить? Какой VS 2015, какой C# 6.0? А уж про совет почитать Professional ASP.NET MVC 5 я вообще молчу, есть намного свежее издания, вы совсем говно мамонта советуете. Не все новички могут додуматься найти более свежие версии книг, пожалейте этих людей, обновите шапку!
Аноним 30/11/19 Суб 12:24:47 153355673
>>1533528
>Какой VS 2015, какой C# 6.0

Ты че несешь? До сих пор миллионы проектов собираются в восьмой студи и/или под старые версии языка. Пятнадцатая до сих пор не может в стабильную работу, не говоря о новейших релизах. Хуяк-хуяк продакшн зумеры не нужны.
Аноним 30/11/19 Суб 14:05:22 153369574
>>1533515
Ну ты можешь, например, накладывать баффы/дебаффы на юнита (этим должен заниматься какой-нибудь менеждер, а не сами юниты) в зависимости от условий. А уже юнит считает свою скорость учитывая их. Можно еще посмотреть на паттерн visitor. А лучше поискать популярные решения в гейдеве, ты не первый, кто пишет игру, наверняка есть бест практисес.
Аноним 30/11/19 Суб 15:37:36 153379075
>>1533515
>Не хочу
Мало ли что ты хочешь
Аноним 30/11/19 Суб 17:16:41 153383576
Шарпаны, а еще такой вопрос, как лучше реализовывать свой бинарный протокол с несколькими уровнями? Я просто погуглил-погуглил и что-то не нашел примеров на шарпе, кроме плоских протоколов вида: [t,[payload]delim], где t- тип пакета, payload данные и delim - байтик конца пакета. Это как-то тривиально и я так не хочу, я хочу так: [0xff,[t[payload]userID,hash[salt],],0xff], при этом все что между ноликами зашифровано моим супер алгоритмом(с помощью xor'а), чтобы злыдни не прознали что на сервер приходит. Ну так вот, а как собственно сервер должен понимать, что с пакетом делать, если ключ для каждого клиента свой? Я вот что имею ввиду, вот смотрите, я получил пакет, благодаря 0xff я предполагаю, что это, вроде как, не мусор, но ведь я из-за того что userID зашифрован не могу просто так полезть в БД и посмотреть там его ключик, чтобы расшифровать пакет и понять что с ним делать дальше. А если вынести userID наружу, то получится что какой-нибудь злой злыдень будет знать id пользователя и, как минимум, поймет что вот тот человек что-то там писал в этот мой супер чатик, а я не хотел бы чтобы кто-то знал что за клиент в мой чатик писал.
Аноним 01/12/19 Вск 00:06:32 153408377
Аноним 01/12/19 Вск 00:33:54 153410078
>>1534083
Что в статическом методе используется нестатическое поле.
Аноним 01/12/19 Вск 00:42:00 153410479
>>1534100
Я поставил статик лист, ошибка вроде пропала, но жопой чую что это неправильно. Как решить правильно?
Аноним 01/12/19 Вск 02:52:46 153415880
>>1533835
злыдень-шизоид, сейчас бы на интерпрайз языке писать протоколы, эх блять, где же мои кресты...
>>1534083
не нравиться, что ты читать не умеешь. Тебе компилятор все написал.
Аноним 01/12/19 Вск 15:46:28 153478581
image.png (54Кб, 801x647)
801x647
image.png (13Кб, 515x237)
515x237
image.png (6Кб, 411x185)
411x185
Почему нельзя сравнить типы данных? Мне надо проверить, есть ли хороший корень у числа, если число после нахождения корня - целое, значит у числа хороший корень. Но здесь какие-то странные ошибки выдаются
Аноним 01/12/19 Вск 16:03:08 153480982
>>1534785
Блин, я видимо с JS попутал, тут typeof чё-то другое. Ну а как тогда с этой же логикой можно сравнить типы данных?
Аноним 01/12/19 Вск 16:05:25 153481183
screen-0002.png (48Кб, 967x623)
967x623
>>1534785
>не надо проверить, есть ли хороший корень у числа, если число после нахождения корня - целое, значит у числа хороший корень
Сколько тебе лет? Ты в курсе, что есть как минимум два нормальных способа проверить целое ли число? Нахуя ты микроскопом забиваешь гвозди?
Аноним 01/12/19 Вск 16:07:29 153481684
>>1534811
Я уже понял как сделать грамотнее, сейчас в принципе интересует, есть ли как в js такое сравнение типов? Есть is as, но это только с ссылочными типами работает
Аноним 01/12/19 Вск 17:43:08 153492285
Короче, можно ли как-то вашу интерпрайз парашу превратить в няшный?
Просто кресты отвратительны, ваша параша поприятнее во многих моментах, но блядское ООП всюду, еще и это говно со сборкой мусора, IL, необходимостью тащить всякое говно чтобы просто консольное приложение запустилось и т.д.

Поясню что я хочу:
using System;

bool IsOpHui => true;

void main(){
Console.WriteLine("Hello world");
}

И при сборке чтобы у меня был один исполняемый файл вменяемого размера, если я сам не захочу кучу dll и прочих ресурсов отдельно иметь.

Вот как добиться подобного эффекта?

Аноним 01/12/19 Вск 19:01:28 153500186
>>1534922
Шарп это язык для крупных приложений а не для хеловордов, попробуй го
Аноним 01/12/19 Вск 19:09:11 153501987
>>1535001
Так мне и нужно для крупных приложений, только без такой жесткой привязки к ООП. Шарп во всем остальном меня устраивает, кроме того что для того чтобы 1 блядскую функцию захуячить нужно создавать отдельный класс, а если будешь в том же классе хуячить на тебя будут смотреть как на дебила, ведь ООП же, нужно для всего свой класс сделать, иначе не тру, и вообще логику отдельно представление отдельно, модель отдельно, и похуй что ты просто дублируешь данные и из-за этого у тебя просто какое-то говно вместо решения задачи, MVVM и MVC же, как ты можешь не запилить отдельный класс экшенов, а данные не забиндить, вместо того чтобы просто менять их по своему желанию в кнопочке, умные же дяди говорят что так надо делать, и плевать что это неудобно, делай как сказали и не выебывайся.
Аноним 01/12/19 Вск 20:06:05 153509788
>>1535019
>ООП язык
>А можна без ООП???7
Говорю же - попробуй го какой-нибудь
Аноним 01/12/19 Вск 20:07:09 153510089
>>1535019
Скажи честно, ты студент или стажёр?
Аноним 01/12/19 Вск 20:08:07 153510390
>>1535097
Ну блин((( Шарпик таки очень удобный во всем что не касается ООП. А го я посмотрел и это какой-то джаваскрипт. Видимо придется с крестами ебаться.
Аноним 01/12/19 Вск 20:11:19 153511091
>>1535100
Я распиздяй, который уже получил вышку, постажировался, поработал кодером и понял что именно работать кодером - не мое(я не могу без творческой свободы что-то делать, не могу когда есть дедлайны, не могу в команде работать), но писать что-то свое все равно хочется.
Аноним 01/12/19 Вск 20:14:53 153511592
>>1535110
Действительно, кодинг не твоё
Аноним 01/12/19 Вск 20:19:24 153512793
>>1535115
Не кодинг совсем, а именно работа кодером. Скажем, олимпиадки в вузе мне нравились, нравится свои штуки делать, нравится на кодворсах всякое решать. А вот работать, ну такое.
Аноним 01/12/19 Вск 22:41:47 153537194
>>1535103
> удобный во всем что не касается ООП
А что в шарпе не ООП? inb4 linq
>>1535103
>c крестами ебаться.
Так они тоже ООП. Хочется функциональщины иди в F#/Haskell или чистый C.
Аноним 02/12/19 Пнд 07:29:31 153555595
>>1535371
> Так они тоже ООП
Я знаю. Но на нем можно и так и этак, а ООП применять там где оно нужно, а не везде под дулом компилятора, который просто на соберет твой проект, если ты все в классы не запихнул. Вот опять же, посмотри как в питоне: есть ооп, но ты сам решаешь, юзать его или нет, то же и в JS, лично мне такой подход больше нравится, на мой взгляд класс состоящий из одной-двух функций не нужен, а запихнуть их в другой класс не получается чисто из соображений семантики класса.
> А что в шарпе не ООП
Структуры, например. Да много вообще всяких фишек которые именно к ООП не привязаны. Опять же, мне просто не нравится что нужно для всего делать класс(а класс, в моем понимании должен быть чем-то семантически оформленным, и именно что объединяющим класс задач которые решает объект класса, например чтение строк, запись в файл, взаимодействие с сетью и т.д.), при этом еще и в неймспейс запихнуть. На кой? Вот почему просто нельзя ебануть функцию внутри неймспейса и жить себе счастливым, нет тебе для этого нужно сделать класс и получается что у тебя в коде появляются статические классы, со статическими функциями которые по сути выполняют роль неймспейсов и являются дурным тоном для всех ООПшников.
Аноним 02/12/19 Пнд 08:40:22 153556896
>>1535555
Ты или шизик какой-то или вообще не понимаешь как шарп работает.
Ну хуле, не нравится так ебашь все в Main()
Аноним 02/12/19 Пнд 18:03:57 153604897
Есть вопрос - как в шарпе можно наиболее удобно организовать глобальные переменные? А то как ни пытаюсь сделать, постоянно очущение, что делаю через жопу и можно проще. (Если что, я пишу на C в основном, шарпом приходится пользоваться в силу обстоятельств)

Всех кукаретиков с ответами вида "не делай глобальные переменные", "у тебя неправильная архитектура", "глобальные переменные эта плоха, эта низзя" прошу заранее пройти нахуй.
02/12/19 Пнд 18:43:42 153607198
>>1536048
public static class ...
{
public const ...

public const ...

.....
}
Аноним 02/12/19 Пнд 20:52:14 153614199
>>1536048
Если именно переменные, то
public static MyVars{
public static int a;
public static int b;
...
}

Это кстати еще одна хуйня из-за которой я бомблю с шарпа. Но меня уже назвали шизиком, потому не буду высираться, но просто, блядь, действительно был бы годный язык, если бы ООП было одной из, а не основной парадигмой. Столько удобных фитч из коробки, синтаксис не так перегружен как у крестов, огромная библиотека на все случаи жизни, если бы ООП сделали необязательным, цены бы не было.
Аноним 02/12/19 Пнд 22:09:10 1536208100
Аноним 03/12/19 Втр 14:05:01 1536499101
>>1536208
Не хочу. Хочу на шарпе. Ну или чтобы в Си завезли все что может шарп, только без ООП.
Аноним 03/12/19 Втр 15:58:23 1536665102
Аноним 03/12/19 Втр 16:00:25 1536673103
>>1536499

У тебя на группировку по смыслу аллергия?

Тебе нужно обязательно чтобы стопицот хуиток общей кучей на нулевом уровне без разбора лежали?
Аноним 03/12/19 Втр 17:40:42 1536851104
>>1536499
Ты третий день в треде срешь. Тебе уже посоветовали фшарп.
Аноним 03/12/19 Втр 18:27:57 1536892105
Аноним 03/12/19 Втр 18:38:47 1536906106
>>1536673
У меня аллергия на необходимость плодить сущности без необходимости. Зачем мне делать отдельный класс, если он не будет переиспользоваться и вообще не особо несет в себе смысла, кроме как выполнить 2,5 функции. Так бы я просто ебанул эти 2,5 функции и все, когда нужно вызвал, когда не нужно не думаешь о них.
>>1536851
> фшарп
Не советовали. Мне только про Го говорили. Посмотрю этот твой эфшарп.
Аноним 03/12/19 Втр 18:42:07 1536908107
>>1536048
csharpindepth.com/articles/singleton
Аноним 03/12/19 Втр 18:59:26 1536918108
image.png (2Кб, 371x163)
371x163
Аноним 03/12/19 Втр 19:29:06 1536936109
Аноним 03/12/19 Втр 19:32:18 1536938110
>>1536936
Зачем ты меня обзываешь? Ну не заметил или забыл уже из-за того что большую часть времени не советовали что-то а доказывали что ООП нужно.
Аноним 03/12/19 Втр 19:32:22 1536939111
>>1536906
>Зачем мне делать отдельный класс, если он не будет переиспользоваться и вообще не особо несет в себе смысла, кроме как выполнить 2,5 функции
Ну так, блядь, не делай
У тебя походу вообще 0 понимания проектирования и ООП, зато своим охуительным мнением который день в тред срешь.
Аноним 03/12/19 Втр 19:46:18 1536945112
Я сениор-хуениор С++ разработчик, хочу выучить шарп полноценным вторым языком, т.к. некоторые вещи в дотнете сделаны в гигатонны раз проще, чем дергать их через Winapi.

Есть что-то в мире типа книг "C# для умеющих программировать"?
Аноним 03/12/19 Втр 19:48:04 1536946113
>>1536939
> Ну так, блядь, не делай
И что прикажешь, прямо в классе какого-нибудь юнита каждому объекту явно указывать где лежат ресурсы с ним? Это же как раз не по ООПшному. При этом делать отдельный класс, который будет вызывать только 1 функцию: загрузи ресурсы из этого файла, это пиздец как тупо.
> 0 понимания проектирования и ООП
Ну, моего понимания ООП достаточно, чтобы считать его в большинстве ситуаций перегруженым говном, а его адептов - каргокультистами, которым ООП нужно ради самого ООП. Ну а проектирование это вообще отдельная тема, я, в отличии от тебя, смотрел исходники того же net core и могу с уверенностью сказать, что все это же на каком-нибудь питоне можно было бы написать элегантнее.
Аноним 03/12/19 Втр 20:00:07 1536959114
>>1536946
Так шёл бы в какой-нибудь тред без ООП: раст, хаскель, тред любого фп языка. Что ты здесь забыл?
Аноним 03/12/19 Втр 20:03:33 1536964115
>>1536945
>Есть что-то в мире типа книг "C# для умеющих программировать"?
зачем? если ты умеешь программировать, то просто берёшь и начинаешь писать решение своей задачи на шарпе. гуглишь лучшие инструменты для этого на шарпе. всё. если ты до этого хорошо на крестах писал, то на решетке будешь так же хорошо писать, просто беспокоиться нужно о меньшем количестве вещей.
Аноним 03/12/19 Втр 20:11:51 1536973116
>>1536918
Забыл сказать, это визуалка 19
Аноним 03/12/19 Втр 20:18:08 1536984117
>>1536964
я сейчас так и делаю, но это достаточно ублюдочно получается без базы о всяких там IDIsposable, GC и прочей object model
Аноним 03/12/19 Втр 20:37:40 1537000118
>>1536984
если ты в своих задачах зачем то обращаешься к GC, то не лучше бы тебе эту задачу на крестах это делать и в шарпе дёргать через pinvoke?
Аноним 03/12/19 Втр 20:45:25 1537006119
>>1536946
Съеби уже, стажёр вечный
Аноним 03/12/19 Втр 20:50:24 1537010120
>>1537006
Н-н-н-о я же просто школьник.
>>1536959
Мне нравится шарп во множестве аспектов, кроме ООП. Не думаю что я один такой на весь сосач. Вот и хотел узнать, может кто знает альтернативу близкую к шарпу, но при этом без ООП. Видимо такой нет, к сожалению.
Аноним 03/12/19 Втр 21:02:41 1537022121
>>1537010
>Люблю хуярить собак палкой, но мне нравится, что они визжат, а ещё не нравится палкой махать — рука устаёт.
>Я вот думаю, может есть что-то похожее, но без визжания и махания?
Перекатывайся уже в хаскель, если хочешь ФП с GC, или в ржавчину, если хочешь отсутствие и ООП и GC.
Аноним 03/12/19 Втр 21:08:21 1537030122
>>1537010
а что не так с ООП? особенно в шарпе с его сладким синтаксисом
мимопроходил
Аноним 03/12/19 Втр 21:14:14 1537037123
Аноним 03/12/19 Втр 21:24:00 1537043124
>>1537037
зачем тебе в базовых вещах к GC обращаться? с IDisposable тоже всё просто. оператор using автоматически за тебя его вызовет по выходу из скоупа. зачем тебе целые книги об этом читать? но ладно, так беседа может в срач скатиться. я просто никогда не видел практической пользы от книг. всего ты всё равно не запомнишь, а нужную информацию непосредственно при необходимости всегда можно поднять на stackoverflow, благо коммьюнити у шарпа на объяснения не скупится.
Аноним 03/12/19 Втр 21:24:55 1537044125
>>1537030
ООП — порождение макакинга и ебанутости людей: "Одноклеточное -> простейшее многоклеточное -> земноводное -> макака -> человек". В итоге у человека есть аппендикс, копчик, иногда другие генетические проблемы. Код ДНК вырожденный — триплеты онли; никаких utf-4 кодировок, где часть можно закодить одной парой или двумя парами, онли триплеты, как я уже сказал. Программы с ООП страдают теми же проблемами.
Аноним 03/12/19 Втр 21:27:55 1537046126
>>1537044
что? даже если проводить такую параллель, то тут проблема не самого ООП, а его неграмотного использования. если бы аппениксы и копчики были вынесены в интерфейсы, то проблем бы не было, если бы человек их не наследовал. Хотя тут конечно можно доебаться непосредственно к ООП шарпа, неподдерживающего множественное наследование, но всё равно играя интерфейсами и абстрактными классами не пришлось бы реализовывать тыщу раз интерфейсы аппендиксов и прочих рудиментов.
Аноним 03/12/19 Втр 21:33:56 1537051127
>>1537046
Проблема в том, что ООП поощряет аппендиксы и копчики, а не в том, что от них можно избавиться при грамотном написании кода. Макакич не будет тебе делать абстрактный класс — он просто ебанёт наследование от макаки к человеку.
Аноним 03/12/19 Втр 21:40:27 1537061128
>>1537051
всё равно не вижу в этом проблемы ООП. пока что всё, что ты говоришь, что ООП может привести к ебанутой архитектуре из за неграмотности программиста. это всё равно, что обвинять кухонные ножи в том, что ими алконафты иногда убивают людей. чё теперь, ложкой мясо резать? может быть, ты можешь предложить парадигму программирования получше для задач, предполагающих постоянное состояние приложения и работу с данными?
Аноним 03/12/19 Втр 21:42:22 1537063129
>>1537030
То что оно не везде нужно и там где оно не нужно оно создает кучу лишнего кода из-за того что все нынешние реализации ООП лютое говно, которое построено на костылях и костылями погоняет. Ко всему выглядит неэстетично, порождает завышенные требования к аутистичности программиста, работает в большинстве случаев медленнее, если делать так как говорят гайдлайны и умные дядьки, ко всему оно просто неочевидно работает в большинстве случаев и из-за этого обосраться с ООП намного легче чем без него.
Аноним 03/12/19 Втр 21:45:44 1537067130
>>1537010
>Я же просто школьник
Оно и видно
Аноним 03/12/19 Втр 21:48:19 1537074131
>>1537063
>То что оно не везде нужно и там где оно не нужно оно создает кучу лишнего кода
? так не используй там, где не нужно. в чём проблемы? тебя никто не заставляет хуярить фабрики на каждый интерфейс
>все нынешние реализации ООП лютое говно, которое построено на костылях и костылями погоняет
почему?
> Ко всему выглядит неэстетично, порождает завышенные требования к аутистичности программиста
вкусовщина
> ко всему оно просто неочевидно работает в большинстве случаев
чего? наверно от реализации конечно зависит, но по крайней мере в шарпе неочевидного ничего не помню. документация по языку в помощь.
Аноним 03/12/19 Втр 21:50:56 1537078132
>>1537061
Нет наследования (или оно реализовано через раздраконивание ануса, а не одним знаком) — нет проблем. И для постоянной работы с состоянием и данными используют DOD, а не ООП, потому что ООП ускоряет только работу с кодом, а работу кода может разве что замедлить. Чтобы реализовать DOD в ООП языке, ты должен забыть всё, чему тебя научило наследование.
Аноним 03/12/19 Втр 21:54:55 1537082133
Итт школьники и стажёры поясняют почему проверенные десятилетиями продакшна решения не нужны, я правильно понял?
Ну ладно, я сам таким в 17 был, когда для себя пистон открыл. А потом с первым проектом серьезнее мувисерчера пришло понимание необходимости ООП, ФП и прочих подходов к структурированию программ на уровне синтаксиса.
Аноним 03/12/19 Втр 22:34:52 1537118134
>>1537082
> КТО-ТО ХОЧЕТ ИСПОЛЬЗОВАТЬ ОГРОМНЫЙ ФУНКЦИОНАЛ КОТОРЫЙ ПРЕДОСТАВЛЯЕТ .NET НЕ ДЛЯ ТОГО ЧТОБЫ ДЕЛАТЬ ОЧЕРЕДНУЮ КРУДОШЛЕПСКУЮ ХУЙНЮ НА ГАЛЕРЕ! ДА КАК ОНИ СМЕЮТ ПРОСТО ПОДУМАТЬ ОБ ЭТОМ! Я ВОТ ДЕЛАЮ ПО 10 КРУДОШЛЕПСКИХ ХУЕВИН В НЕДЕЛЮ И ВЫ ТАК ДЕЛАЙТЕ, ИНАЧЕ ВЫ НЕ ПРОГРАММИСТЫ

Блядь, а меня потом шизиком называют. Мне, блядь, нравится что шарп может из коробки, но при этом мои задачи как раз не предусматривают ЧЕГО-ТО БОЛЬШОГО. Вот вы же выпросили себе ML, хотя нахуй он сдался в вашем говнопрайзе?, а я хочу вся библиотека шарпа и его приятный синтаксис не были привязаны к ООП, что в этом такого странного-то? Т.к. ты макака, я для тебя большими буквами напишу: ЕСТЬ ЛЮДИ, КОТОРЫЕ НЕ РАБОТАЮТ НА ГАЛЕРАХ, ПРИ ЭТОМ ОНИ ХОТЯТ ИСПОЛЬЗОВАТЬ ШАРП ИЗ ЗА ОБИЛИЯ ПЛЮШЕК, ОДНАКО ВСЯ ЭТА ПОДЗАЛУПНАЯ СРАНЬ С ООП ИМ НЕ НУЖНА И В ИХ ПРОЕКТАХ ПРОСТО УВЕЛИЧИТ КОЛИЧЕСТВО СТРОК КОДА, А СЛЕДОВАТЕЛЬНО ВРЕМЯ НА РАЗРАБОТКУ. Может быть так дойдет.
Аноним 03/12/19 Втр 22:50:52 1537133135
Задача следующая: нужно расшифровать текст зашифрованный неизвестным ключом шифром Виженера.
Как это сделать?
Аноним 03/12/19 Втр 23:24:41 1537157136
>>1537118
Назови не-ооп плюшки шарпа, которых нет ни в одном другом языке, раз так дрочишь на них. Линк и тот всего лишь кастрированные списочные функции из любого ФП-языка, лол.
Основная сила шарпа в ООП и платформе с кучей готовых либ, а не в синтаксическом сахаре, которого и в других языках навалом. Не нравится ООП - уебывай в тред ФП, там иногда фшарперы проскакивают.

>В их проектах
Любой проект сложнее тудулиста требует той или иной формы организации кода. Нет, разбить код на 5 файлов это не организация кода

>Выпросили себе ML
Что ты несёшь блядь господи.
Аноним 03/12/19 Втр 23:43:55 1537165137
>>1537118
Заебал, тред по скале 2 блока ниже
Аноним 04/12/19 Срд 00:15:44 1537191138
>>1528262 (OP)
Анон, есть один корпоративный git-репозиторий с парой сотен grpc'шек, каждая с несколькими протобафными dto'шками.
Я хочу всё это запихнуть в отдельные nuget'ы, чтоб при каждом обновлении git-репозитория тимсити мне все это собирала и пушила во внутренний nuget-репозиторий.
Как это грамотнее сделать?
Пока придумал только такое:
- для каждого grpc создавать папочку с проектом
- копировать шаблоны .csproj, AssemblyInfo.cs и .nuspec в эту папочку, проставляя названия пакета, версию и зависимости
- компилировать grpc и protobuf'ы в .cs'ы
- вписывать вновь созданные проекты в .sln
- билдить все проекты в сборки netstandard2.0, собирать .nuget'ы и пушить в репу

Какие подводные?
Можно ли сделать кучу сборок из единого .csproj проекта?
Можно ли это упростить как-то?
Аноним 04/12/19 Срд 01:05:40 1537258139
>>1537133
сходить на лекцию по истории крипты или попросить у одногруппников фото презентации
Аноним 04/12/19 Срд 05:20:55 1537308140
Анон, есть два солюшена, запускаю через райдер. В одном два проекта - сама консольная программа на последний дотнет, в другом nunit тесты.
Во втором солюшена все то же самое.
Но - почему-то в первом случае тесты видят неймспейс программы (т.е можно через using достучаться), а во втором нихуя, не видит. В чем может проблема быть?
Аноним 04/12/19 Срд 10:37:05 1537344141
images.jpg (7Кб, 299x168)
299x168
>>1537308
нужно создать третий солюшен и запустить
Аноним 04/12/19 Срд 11:19:08 1537363142
>>1537308
Загляни в csproj с тестами, есть ли там ProjectReference на проект с программой?

Еще могут TargetFramework не совпадать
Аноним 04/12/19 Срд 16:04:05 1537529143
Аноним 04/12/19 Срд 20:21:11 1537710144
Снова привет, шарпаны. Я тот анон что спрашивал про сервер. Короче, я таки сделал что память никуда не утекает и даже если куча сессий запущена процессор не жрет все ресурсы, и даже не на сокетах, а переписал на TcpClitnt(оказалось что я просто забыл закрыть сессию когда клиент отвалится и сессия пыталсь до последнего что-то прочитать из закрытого сокета, а т.к. все было в try-catch ошибка не вываливалась и я только поняв что резкий прирост потребления ресурсов появляется после отключения сессии догадался ее заканчивать, вот я бака).
Даже чатик между клиентами реализовал по своему супер протоколу. Принес преподу, а он говорит, что это как-то не серьезно: второй курс и просто байтики прочитал-отправил, потому нужно, чтобы клиенты после регистрации и всех обязательных операций могли по своим кастомным протоколам общаться, типа они сами могут описать его у себя в файлике, отправить друг-другжке, а потом общаться этим протоколом, если захотят, а не моим.
И я чет не понимаю как это-то сделать. Типа у меня завязано принятие клиентов на сервер по моему супер протоколу, все остальные пакеты я считаю мусором еще на моменте если первые два байтика не единички нолик и сессию что присылает мусор даже не создаю, а тут нужно как-то понять что вот это не мусор вовсе и я не совсем понимаю как. Конечно у меня появилась идея, типа добавить класс ClientInfo, в который вынести из обработчика сессии всю инфу о клиенте, и реализовать такую вот логику: Клиент сначала входит, отправляет все пакеты регистрации-авторизации и если все проходит нормально, то я в классе ClirntInfo ставлю флажок что: Это свой пацан, можно все подряд принимать, только вот я не понимаю, а как мне, если протокол может быть любой, понять кому сервер должен переправить пакет, потому что у меня то кому отправляются данные указывалось в пакете, а значит я не смогу узнать кому переправить данные, если во-первых не знаю структуру протокола, во-вторых, если таки знаю, в протоколе не указан получатель.

К чему я это все написал? На самом деле просто изложив в письменной форме проблему мне самому легче ее проанализировать, потому можете не обращать внимания, конечно от книжек и советов мудрых я не откажусь.
Аноним 04/12/19 Срд 22:54:06 1537790145
>>1537710
>можете не обращать внимание
>от мудрых я не откажусь
пиши в блокнот, что ты там надумал себе. Твои говно проекты из шараги никому не интересны

TPC клиент на шарпах, что за долбоеб
Аноним 05/12/19 Чтв 08:34:59 1537941146
>>1537790
А на чем я должен делать, если в ВУЗе только шарп преподают?
Аноним 05/12/19 Чтв 10:49:07 1537985147
В сисярпе есть records?
Аноним 05/12/19 Чтв 11:02:04 1537996148
Аноним 05/12/19 Чтв 11:06:18 1538003149
>>1537996
А в чем их смысол? В таких строгих ооп язычках вместо них классы.
Аноним 05/12/19 Чтв 11:15:21 1538009150
>>1538003
Так класс/структура это вариант рекорда, не?
Аноним 05/12/19 Чтв 11:24:11 1538020151
>>1538009
Да, но как в ООП стиле одновременно применять и классы, и рекорды? Одних классов достаточно.
Аноним 05/12/19 Чтв 13:42:32 1538155152
Вы тупые. Вам когда-нибудь об этом говорили?
Аноним 05/12/19 Чтв 14:21:50 1538186153
>>1538155
Да каждый тред какой-то неосилятор кукарекает.
05/12/19 Чтв 14:24:55 1538189154
>>1538020
struct-ы очень полезны как Value Objects например
Аноним 05/12/19 Чтв 14:26:03 1538193155
>>1538189
Я не про структуры.
Аноним 05/12/19 Чтв 14:28:07 1538201156
Аноним 05/12/19 Чтв 14:28:55 1538202157
>>1538020
> одновременно применять и классы, и рекорды?
А как можно применять не одновременно, если класс это и есть рекорд с плюшками.
Аноним 05/12/19 Чтв 14:31:01 1538206158
>>1538202
Я не в том смысле.
Когда следует юзать records, а когда class?
Аноним 05/12/19 Чтв 14:44:24 1538226159
image.png (89Кб, 701x537)
701x537
Аноним 05/12/19 Чтв 14:48:03 1538230160
>>1538226
Но это как бы понятно, что в классах мы тупо ссылку присваиваем и обеими указываем на сейм обжект.
Аноним 05/12/19 Чтв 14:49:28 1538233161
>>1538206
Ладно, вскрываемся. Что ты называешь record'ами?
Аноним 05/12/19 Чтв 14:50:28 1538235162
>>1538233
Это новая фишечка из 8 версии, еще она буит в яве в марте.
Аноним 05/12/19 Чтв 15:10:50 1538256163
>>1538235
Тогда в чем смысл вопроса есть ли они в шарпе?
Аноним 05/12/19 Чтв 17:47:14 1538402164
>>1538256
Ну плюсовики иногда шутят, что в с++ структур нет. Вот я и шутканул.
Аноним 06/12/19 Птн 12:04:08 1538999165
Аноны, я полный ноль в программировании не так давно вкатился в си шарп
У меня возник вопрос
На чём создавать WPF приложения?
Помимо визуал студио
Я вот работаю в редакторе кода -- vs code и там, конечно, такое сделать не получится
Аноним 06/12/19 Птн 12:39:37 1539021166
>>1538999
Почему не получится? Кодом, xaml-ками. Пиши и будет работать
Аноним 06/12/19 Птн 12:51:56 1539032167
>>1539021
Серьёзно?
Разве vs code на такое способен?
Это же редактор кода, а не полноценная среда разработки
Поправь, если не прав
Аноним 06/12/19 Птн 12:53:43 1539034168
>>1539032
Ну, ты хоть в блокноте можешь писать, если у тебя все либы фреймврока есть. Какая разница? Да, никакого драг-н-дропа, но кто тебе мешает справляться без него?
Аноним 06/12/19 Птн 12:56:52 1539039169
>>1539034
В общем, я пока слишком нубасик
Наверное, мне лучше пока забыть о примитивных приложениях и изучить базовый синтаксис
Аноним 06/12/19 Птн 16:07:29 1539292170
>>1539039
Лучше всегда сначала изучить синтаксис. А приложения в студии действительно проще делать, хоть впф, хоть формы, хоть ксамарин. Я её тоже не люблю, но куда деваться
Аноним 06/12/19 Птн 16:38:35 1539317171
Можете подсказать литературу по структурам данных? На метаните вообще не понимаю что написано
Аноним 06/12/19 Птн 16:44:50 1539321172
>>1539034
А разве там компиляция не через жопу консоль будет с ручным пердолингом через baml? Или code умеет собирать сама впф поректы?
Аноним 06/12/19 Птн 16:46:22 1539324173
>>1539317
Иди в тред компутер саенс, там тебе пояснят за литературу. А у нас обходятся википедией и мсдн.
Аноним 06/12/19 Птн 16:59:42 1539346174
>>1539317
>На метаните вообще не понимаю что написано
забей тогда на CS. Если на метаните не понятно, то в других источниках точно ничего не поймешь
Аноним 06/12/19 Птн 17:03:17 1539353175
>>1539346
Окей, но это мне ведь не помешает в изучении коллекций? Или лучше разобраться со структурами?
Аноним 06/12/19 Птн 19:27:02 1539523176
>>1539317
"Грокаем что-то там" почитай, оно с картинками
Аноним 06/12/19 Птн 19:32:32 1539534177
>>1539523
Грокаем алгоритмы? Думал там только про алгоритмы, спасибо
07/12/19 Суб 10:25:28 1539893178
Война это мир
Сисярп это рабство
Незнание альтернатив мелкософту сила
1984
Аноним 07/12/19 Суб 17:46:17 1540193179
>>1539523
Да, крутая книга, супер понятно объясняет, спасибо ещё раз
Аноним 07/12/19 Суб 18:23:06 1540218180
Нубский вопрос. Как оптимизировать вижак, чтобы он грузился быстрее, чем за минуту?
Аноним 07/12/19 Суб 18:33:23 1540225181
Аноним 07/12/19 Суб 19:36:17 1540353182
>>1540218
Взять VSCode и кодить в нем. Вижак нужен только когда ты отлаживаешь программу, чтобы ловить утечки и смотреть как ресурсы распределяются.
А вообще, я не понимаю, что такого в том, чтобы грузился он долго, ведь его один раз запустил и не закрываешь, пока работу не доделал.
Аноним 07/12/19 Суб 23:09:35 1540559183
Мёртвый тред.
07/12/19 Суб 23:19:01 1540563184
Мертвого языка.
Аноним 08/12/19 Вск 06:04:31 1540705185
>>1536499
Си и так может всё, что может шарп, и ещё в десять раз больше. Что тебе ещё нужно-то, я не понял?
Аноним 08/12/19 Вск 10:29:30 1540740186
>>1539321
Можно и через консоль, можно и скрипт автоматизированный написать скачать
Аноним 08/12/19 Вск 11:33:37 1540758187
>>1540705
>десять раз больше
всмысле только в десять? C - язык богов, он может АБСОЛЮТНО все. Нам не нужны управляемые модули с MSILом, только расходование ресурсов. Там не нужны типобезопастные типы, С боги и так пишут все правильно. Да даже IDE нахуй не нужна - Notepad наш инструмент.
>>1540559
>>1540563
>>1539893
полностью поддерживаю. Потраченные годы на этот говноязык мелкософта
>>1540218
удалить
Аноним 08/12/19 Вск 11:35:51 1540762188
>>1528262 (OP)
>>1540758
>говноязык
Что он тебе сделал, лол. Я рад что начал именно этот язык учить, работаю в энтерпрайзе, уютный офис, халявная еда, нормальная зп. Не понимаю претензии
Аноним 08/12/19 Вск 12:13:45 1540781189
>>1540762
Это местный шиз, забей
Аноним 08/12/19 Вск 13:06:17 1540806190
Ребзя, посоветуйте хороший мануал по TPL. Чтобы нормально было расписано про ConfigureAwait(false)
Аноним 08/12/19 Вск 14:01:26 1540844191
>>1540353
Когда уже починят anti-alising? Шарам итак пизда от монитора тут ещё и мыльное говнецо, вместо шрифтов.
Аноним 08/12/19 Вск 14:34:32 1540883192
image.png (98Кб, 1227x620)
1227x620
image.png (45Кб, 580x603)
580x603
Как вы безопасно элементы класса в лист записываете? Я чё-то с этими гетенумераторами совсем запутался.
Аноним 08/12/19 Вск 14:36:48 1540886193
Аноним 08/12/19 Вск 14:39:02 1540887194
>>1540883
Ебать дебил, ты класс сам в себя засовываешь.
Аноним 08/12/19 Вск 14:40:54 1540894195
>>1540887
А как объект засунуть в _numbers?
Аноним 08/12/19 Вск 15:18:52 1540926196
>>1540894
Вынеси в отдельную функцию, лол.
Ты понимаешь же, что все наебывается из-за того что у тебя рекурсия, потому что ты в конструкторе всю эту хуйню делаешь? Просто поставь точку останова в конструкторе и посмотри как оно проиходит по шагам.
Аноним 08/12/19 Вск 15:31:36 1540934197
Аноним 08/12/19 Вск 15:33:55 1540938198
Няши, у меня тупой вопрос. Короче, смотрите, я сделал событие в базовом классе, сделал несколько наследников. Делаю 2 класса, которые подписывается на это событие у наследников, но блджад, почему-то один класс подписывается и делает что надо при срабатывании события, а другой - не подписывается. У обоих классов подпись происходит в конструкторе. Я долго ломал голову, почему так происходит, и пришел к выводу: Всему виной асинхронность(потому что других причин не нашел), сделал те классы что генерируют событие потокобезопасными синглтонами и все нормально стало происходить. Но блядь, мне кажется что это я какую-то хуйню сделал, потому что ну не дело же каждый раз делать синглтон хуячить на случай если тот класс на который нужно подписаться еще не создался. А как тогда правильно делать? Просто вот мне захотелось свое логирование сделать своему супер серверу, а не брать Serilog, и я хотел чтобы мой лог просто подписывался на события, типа: пришло сообщение, клиент отвалился, сервер закрыл сессию; но как я уже сказал, пока я "сервер" не запихнул в синглтон почему-то логер не хотел подписываться, хотя мой обработчик сессий ровно по тому же принципу работает что и должен был логгер, но он на эти же события нормально подписывался и обрабатывал.
Аноним 08/12/19 Вск 15:41:59 1540946199
image.png (62Кб, 686x639)
686x639
Аноним 08/12/19 Вск 15:54:49 1540969200
.png (21Кб, 557x647)
557x647
>>1540946
>>1540883
Лучшая реализация коллекции интов что можно придумать. Дарю просто так.
Аноним 08/12/19 Вск 15:56:44 1540973201
Аноним 08/12/19 Вск 16:10:15 1540991202
Аноним 08/12/19 Вск 16:16:24 1540993203
>>1540991
>Предоставляет перечислитель, который поддерживает простой перебор элементов неуниверсальной коллекции.
И как мне это поможет?
Ну IEnumerable помогает использовать foreach для экземпляров класса, и шо
Аноним 08/12/19 Вск 16:32:50 1540996204
блять, поясните долбаебу как обратиться к уже созданному экземпляру класса? Я создаю экземпляр класса в одном классе, записываю данные в переменную, мне нужно вызвать этот экземпляр в другом классе. Уже два дня не могу решить эту проблему, пиздец.
Аноним 08/12/19 Вск 16:42:04 1541001205
.png (23Кб, 534x815)
534x815
Аноним 08/12/19 Вск 16:46:56 1541004206
>>1540996
Попробуй почитать любой учебник, модификатор паблик
Аноним 08/12/19 Вск 17:12:16 1541021207
Хм, а я тут подумал насчет вот этого >>1540996 вопроса и у меня возникла странная мысль: А как вызвать метод какого-то класса из другого класса, не создавая объект того класса? Скажем, вот у меня класс А, он имеет метод: печатать строку; вот у меня класс Б, он хочет напечатать строку методом из класса А, но при этом не хочет никак с классом А напрямую взаимодействовать и даже через интерфейсы и промежуточные классы. Разве нельзя просто как-нибудь из памяти достать указатель на функцию класса А и что-то сделать с ней в классе Б? Конечно, наверное это все какая-от хуйня, и вообще такие вещи рефлексией делаются, но, как я читал, использование той же рефлексии может к непредсказуемым последствиям привести, если ты в опциях компиляции решишь оптимизацию включить, да и раздувает размер сборки.
08/12/19 Вск 17:30:15 1541037208
Аноним 08/12/19 Вск 17:32:49 1541041209
>>1540969
>Лучшая
Ну тогда сделай класс еще и потокобезопасным.
Аноним 08/12/19 Вск 17:39:04 1541053210
Откуда такой наплыв вкатывальщиков в тред блядь
Аноним 08/12/19 Вск 17:43:35 1541062211
>>1541041
А что там делать? Добавил просто объект синхронизации и местах где кто-то может ресурс затребовать и ебанул lock.
Аноним 08/12/19 Вск 17:43:45 1541063212
>>1541053
В чём проблема? Тебе нравился мёртвый тред?
Аноним 08/12/19 Вск 17:45:58 1541073213
>>1541063
Лучше мертвый тред чем засраный
Аноним 08/12/19 Вск 17:53:37 1541092214
>>1541073
Ты мне лучше скажи, что он хотел сказать >>1540991
Аноним 08/12/19 Вск 18:08:23 1541107215
>>1541092
Я хотел чтобы ты посмотрел как реализуют коллекции умные люди, потом посмотрел на свою и больше так не делал.
Аноним 08/12/19 Вск 18:09:40 1541109216
>>1541107
Я посмотрел открытые поля, и понял, что msdn сосёт, о чём ты
Аноним 08/12/19 Вск 18:10:27 1541110217
Аноним 08/12/19 Вск 18:11:44 1541111218
>>1541001
Огромное спасибо! Я еще не до конца понял как это работает в твоем примере, но главное работает!
Аноним 08/12/19 Вск 18:13:13 1541115219
>>1541053
Тебя ебет, козла ебаного? Хотим и задаем тут вопросы, пошел нахуй если чего - то не устраиват.
Аноним 08/12/19 Вск 18:32:20 1541141220
>>1541092
Чтобы ты шел учебники читать >>1541115
Так если я уйду, кто вам хуесосам тупорылым помогать будет?
Аноним 08/12/19 Вск 19:37:19 1541239221
Котаны, есть следующая проблема. Пишу виндоус формочки. У меня есть метод comboBoxSelectArrayType_SelectedIndexChanged(object sender, EventArgs e). Но если я пишу в другом методе строчку comboBoxSelectArrayType.SelectedIndex=2, то первый метод не вызывается. Как быть? Пробовал вызывать первый метод с аргументами this и EventArgs.Empty, нихуя не работает.
Аноним 08/12/19 Вск 19:51:39 1541258222
>>1540969
найс ты с DefLessons урок с коллекциями копипастишь. Держи с полки пирожок.
>>1541053
в воскресенье доучивают уроки и начинают мозги ебать на право и налево. типо такого >>1541239
>>1541073
двачую
Аноним 08/12/19 Вск 20:08:02 1541285223
>>1541107
>как реализуют коллекции умные люди

Вот так:

List<int> numbers = new List<int>();

Или так:

int[] numbers = new int[] {0, 1, 2, 3, 4, 5};
Аноним 08/12/19 Вск 20:17:06 1541296224
>>1541258
>DefLessons
Чё это? Не гуглится
Аноним 08/12/19 Вск 20:40:13 1541326225
>>1541258
> DefLessons урок с коллекциями
Что это вообще такое, лол? Я за всю жизнь ни одной книжки и ни одного курса не прошел, только то что в универе рассказывали помню.
Аноним 08/12/19 Вск 20:41:52 1541331226
>>1541326
>только то что в универе рассказывали помню.
Пиздос, мне бы такой вузик. Учим паскаль
Аноним 09/12/19 Пнд 12:03:12 1541724227
Аноним 09/12/19 Пнд 16:36:09 1542003228
Нужны ли вообще делегаты? Редко с ними встречался ( хотя не особо много когда видел в своей жизни), такое ощущение что выполняешь одни и теже действия по несколько раз.
Аноним 09/12/19 Пнд 17:12:38 1542033229
image.png (149Кб, 1366x768)
1366x768
image.png (170Кб, 1366x768)
1366x768
image.png (176Кб, 1366x768)
1366x768
image.png (142Кб, 1366x768)
1366x768
Сап двач, захотел вкатиться в шарпы и поэтому решил написать простой код для решения квадратного уравнение, расписав переменную для ввода с клавиатуры, она у меня не выводиться... В чем трабл подскажите( пик 1, 2)! если уберу текст, то спокойно выводит (пик 4 и 5.)
Аноним 09/12/19 Пнд 17:13:39 1542034230
>>1542033
Где ты присваиваешь значения a?
Аноним 09/12/19 Пнд 17:14:01 1542036231
Аноним 09/12/19 Пнд 17:16:03 1542038232
>>1542033
Попробуй Console.WriteLine($"a = {a} ");
Аноним 09/12/19 Пнд 17:16:55 1542040233
>>1542038
>>1542034
Да и лучше сразу конвертить ридлайн в переменную, зачем отдельная переменная?
Аноним 09/12/19 Пнд 17:23:41 1542043234
Отвлекитесь от лаба2, есть серьеный вопрос.
Как слить два Linq Expression в один? То есть есть model => model.Field и field => field.Nested, нужно сложить их в model => model.Field.Nested.
Просто вызвать второй экспрешн от первого не канает, т.к. используемая библиотека для своей работы раскладывает переданный экспрешн, и единственный способ решить поставленную задачу - передать ей именно "model => model.Field.Nested". А у меня есть только model => model.Field и field => field.Nested.
Аноним 09/12/19 Пнд 17:26:20 1542048235
>>1542040
А не подскажешь как это написать?
Аноним 09/12/19 Пнд 17:27:41 1542049236
>>1542048
Подумай сам, это несложно, вся информация есть
Аноним 09/12/19 Пнд 17:28:00 1542050237
>>1542038
Вот так получилось) Спасибо
Аноним 09/12/19 Пнд 17:29:34 1542051238
Аноним 09/12/19 Пнд 17:49:24 1542058239
Какой оптимальный способ проверки вхождения одной коллекции в другую. К примеру есть:
List<int> listInt = new List<int>() { 1, 3 ,5 } - лист, который должен содержать другая коллекция
List<int> listIntTest1 = new List<int>() {1,3,4,6} - false
List<int> listIntTest2 = new List<int>() {1,3,5,7} - true
List<int> listIntTest3 = new List<int>() {1,2,4,8} - false
Как это можно реализовать без LINQ All?
Аноним 09/12/19 Пнд 17:59:01 1542060240
>>1542003
Погуглил события, видимо здесь и нужны делегаты
Аноним 09/12/19 Пнд 18:52:51 1542088241
>>1542003
Publisher-subscriber загугли, что это такое и поймешь зачем они нужны
Аноним 09/12/19 Пнд 19:13:57 1542095242
>>1542043
Ты сам то понял чего хочешь? Какаую-то хуйню написал. В общем, показывай код или иди нахуй.
Аноним 09/12/19 Пнд 19:23:25 1542103243
>>1542058
static public bool IsIntersects(IList<int> target, IList<int> second)
{
return target.Intersect(second).Count() == target.Count;
}
Аноним 09/12/19 Пнд 19:39:46 1542117244
image.png (42Кб, 566x434)
566x434
image.png (8Кб, 446x131)
446x131
image.png (38Кб, 797x247)
797x247
Как перечислить свойства всех экземпляров? Вот у меня допустим есть 2 экземпляра с разными номерами, надо вывести этот список.
Писать %объект_name%.Number естественно невозможно будет, если клиентов 100. Вот написал код, но это форич только для 1 экземпляра.
Спасибо
Аноним 09/12/19 Пнд 19:42:53 1542122245
>>1542117
foreach (var customer in customers )
{
Console.WriteLine(customer.number);
}

В общем, читай как работает foreach и не пиши хуйни.
Аноним 09/12/19 Пнд 19:59:15 1542135246
>>1542095
Метод имеет следующую сигнатуру:
Expression<Func<TIn, TOut>> Merge(Expression<Func<TIn, TMiddle>> first, Expression<Func<TMiddle, TOut>> second)
Принимая на вход m=>m.Field и f=>f.Nested, должен вернуть в точности m=>m.Field.Nested - любое эквивалентное ему по смыслу возвращаемое значение не подходит, нужна именно такая форма.
Не могу допереть как реализовать.
Аноним 09/12/19 Пнд 20:11:15 1542144247
>>1542122
>customer.number
По моему это ты не знаешь как форич работает
Аноним 09/12/19 Пнд 20:16:08 1542147248
>>1542144
Как знаешь, не мне лабу2 сдавать надо.
Аноним 09/12/19 Пнд 20:17:01 1542148249
>>1542147
Чел, ты ща у локальной переменной пытаешься найти свойство/поле намбер.
Аноним 09/12/19 Пнд 20:25:44 1542161250
>>1542148
У тебя коллекция List в которой хранятся объекты типа Customer, при перечислении этой коллекции тебе будут возвращаться объекты этого типа, у каждого такого объекта есть свойство Number. Но судя по твоим постам у тебя полная каша в голове, к тому же ты долбоеб непробиваемый, поэтому могу посоветовать тебе нахуй пойти.
Аноним 09/12/19 Пнд 20:26:50 1542164251
Аноним 09/12/19 Пнд 23:02:45 1542333252
>>1542103
Сначала подумал, что за метод Intersect, потом понял, что это метод расширения, о котором за более полу года использования LINQ только узнал. Спасибо.
Аноним 10/12/19 Втр 01:27:12 1542447253
>>1541021
Насчёт напрямую - разве что рефлексией, но есть вариант - делегаты. Передаешь в класс делегат через метод/конструктор и делаешь с ним что захочешь.
Аноним 10/12/19 Втр 12:51:03 1542712254
image.png (18Кб, 1029x94)
1029x94
image.png (8Кб, 492x76)
492x76
Аноны, подскажите глупому человеку в чем проблема, как мне сделать так что бы при изменении выбранного элемента из списка что-то происходило,
Аноним 10/12/19 Втр 15:43:14 1542797255
>>1542712
Тебе же русским языком пишут, что событие может находиться только в левой части операции += или -=
Советую отталкиваться от слова событие и гуглить в эту сторону.
Аноним 11/12/19 Срд 15:00:00 1543481256
image.png (1Кб, 196x46)
196x46
двачик что за херня с этим ебанным аспом, почему это такое говно?


я хочу сделать красивую кнопочку для контрольки fileupload но вот беда fileupload не поддерживает стили, то есть он конечно формально поддерживает но поверх все равно пыхает вот эту ебанутюу херню на первом пикриле
ну думаю бля костыльную херню надо исправлять костыльным кодом, написал что что типа
fileUpload : display none
и решил просто ссылаться на него через джаваскрипт который буду вызывать уже нормальной кнопкой, но вот херня, мне надо название файла, и если вы думаете что его мнжно взять просто через fileupload.filename то нет, потому что fileupload не задает page.postback и страница тупо файла не видит, думаю ну блять пиздец надо тогда вызвать page.postback через скрипт дописал и блять ЭТА ХУЙНЯ ВСЕЕ НЕ РАБОТАЕТ потому что скрипт и загрузка файла работают асинхронно и страница может все еще не видеть файла, пробовал уже тогда сделать просто input type = file эта хуреня тоже не подошла я уже пол часа пытаюсь как-то накостылять код на эту парашу, господи как же у меня горит от этой аспшной хуйни
костыль на костыле блеять, и костылем погоняет.
Аноним 11/12/19 Срд 15:07:02 1543490257
>>1542712
> Аноны, подскажите глупому человеку в чем проблема, как мне сделать так что бы при изменении выбранного элемента из списка что-то происходило,

Тебе в событие надо лямбду хуйнуть.
Аноним 11/12/19 Срд 15:08:15 1543492258
>>1543481

Потому что нахуй тебе это серверсайдное говно мамонта, пили уже норм отдельно бэк на рестапи и фронт.

https://primefaces.org/primevue/#/
Аноним 11/12/19 Срд 15:20:24 1543501259
>>1543492
ты лучше скажи как мне получить postback по загрузке файла?
Аноним 11/12/19 Срд 15:29:11 1543505260
>>1543501
>>1543492
ладно не надо, я уже закостылял решение
Аноним 11/12/19 Срд 18:02:22 1543629261
Какой парсер HTML используете?
Аноним 11/12/19 Срд 19:40:28 1543726262
Блядь, объясните, как найти причину ObjectDisposedException? Я просто, блядь, не понимаю, был класс, в нем два сокета, один принимает сообщение и пересылает в другой, все было нормально, решил прикрутить БД, чтобы промежуточный объект контекста сохранял данные в БД, ничего там не диспозю, но, блядь, почему-то эндпоинт диспозится, я просто блядь не понимаю. Вот как и почему? Я даже, блядь, решил с точкой остановы посмотреть, выглядит так: Вот два сокета, как только первый биндится, у промежуточного объекта, который даже никак с ним не связан, просто диспозится сокет и все идет по пизде. Вот что это за хуйня? И еще эта ебаная студия, которая почему-то в проекте на 5к строк кода не может найти место где эксепшн возникает и просто валится с сообщением что он возник, заставляя меня как деда ебаного писать кучу хуйни вида Console.WriteLine("Зашли в метод Хуй класса Пизда"); Console.WriteLine("Вызвано событие Залупа класса Жопа"). Пиздец нахуй.
Аноним 11/12/19 Срд 19:54:07 1543738263
>>1543726
Значит его диспозит GC. Попробуй использовать GC.SuppressFinalize на объекте который у тебя эксепшн вызывает, но это сомнительный костыль и проблема может быть в том, что у тебя этот объект объявляется не на глобальном уровне, а в каком-нибудь классе/методе который выходит из области видимости и поэтому диспозится GC.
Аноним 11/12/19 Срд 20:03:39 1543744264
>>1543738
А можно как-то посмотреть что GC решил задиспозить? Вообще, наверное тупой вопрос, но может быть в студии есть какая-нибудь приблуда, которая бы отображала созданые мной объекты и их состояние в данный момент и в какой момент они задиспозились и все это вот?
Да и горит у меня из-за того что ну вот, работало же, 100 раз проверил, а сейчас я просто хочу считаную инфу в базу записать, а оно теперь не работает в том месте где работало.
Аноним 11/12/19 Срд 21:27:10 1543812265
>>1528262 (OP)
Везде в вакансиях на дотнетчика указано базовое знание JS - на каком уровне его нужно для вката?
Аноним 11/12/19 Срд 21:32:05 1543815266
>>1543812
> на каком уровне его нужно для вката
Можешь написать SPA любой сложности чисто на JS.
Аноним 11/12/19 Срд 22:48:01 1543874267
>>1543812
На уровне знания React/Vue/Angular
Аноним 11/12/19 Срд 22:50:19 1543878268
>>1543812
2+ года коммерческой разработки на JS.
Аноним 12/12/19 Чтв 01:08:38 1543968269
15749385279560.jpg (30Кб, 512x512)
512x512
Аноним 12/12/19 Чтв 01:56:54 1543977270
Вкатываюсь к вам прямиком из мира фронтенда реакта жса тса. Держу в курсе.
Аноним 12/12/19 Чтв 13:36:24 1544228271
>>1543977
Ну удачи. Наверное будет сложно, ведь во фронтенде думать не надо было
Аноним 12/12/19 Чтв 14:32:09 1544277272
Я ща мозг нахуй сломаю с этими событиями. Ебабоба, вот есть делегат, я могу его нахуй вызвать в любой нахуй момент ( если уже сохранил туда методы ) А нахуя собственно события?
Аноним 12/12/19 Чтв 14:32:46 1544278273
>>1544277
ыааааыаыаыаыаыаыаыаыаы патписчики атписчики нипанятна
Аноним 12/12/19 Чтв 14:34:09 1544279274
>>1544278
Ещё не понятно, то EventHandler когда ивент объявляешь, то ли название другого делегата ыаыаыаыаыаыаыаыаыа
Аноним 12/12/19 Чтв 14:47:41 1544293275
>>1544277
События созданы для того, чтобы не надо было создавать методы для добавления/удаления методов из списка вызова делегата. С событиями ты создаешь один делегат и несколько событий связанных с этим делегатом, а компилятор дописывает за тебя методы для добавления обработчиков этих событий.
Аноним 12/12/19 Чтв 17:12:24 1544448276
>>1543815
>>1543874
>>1543878
Т.е. по сути джун-дотнетчик - это уже готовый джун фронтендер? А сверху еще бэкэнд надо знать?
Аноним 12/12/19 Чтв 17:13:20 1544452277
>>1544448
Вообще обычно учат шарп, к нему джс, а в итоге становимся фронтендерами, ведь шарп страдает
Аноним 12/12/19 Чтв 17:19:23 1544461278
>>1544452
вообще учат плюсы, а остальным хуй подтирают
Аноним 12/12/19 Чтв 17:38:22 1544476279
Можно ли как-то в конструкторе добавлять в List<Class> экземпляр класса ?
То есть при создании экземпляра класса они добавлялись в List<Class>, а не в ручную каждый экземпляр добавлять в лист.
Аноним 12/12/19 Чтв 17:44:03 1544488280
>>1544476
Ну так передай в конструктор лист и добавь в конструкторе this в лист
Вот только нахуя тебе такой дерьмокод?
Аноним 12/12/19 Чтв 17:45:29 1544491281
>>1544488
А, вообще забыл что такое this.
А почему дерьмокод? Ну надо же хранить где-то пользователей, допустим, вот в листе удобно и сортировать, и форичить. Сказка же
Аноним 12/12/19 Чтв 17:50:58 1544499282
image.png (34Кб, 459x452)
459x452
>>1544491
И у меня не видит этот лист в мейне. Всё публичное
Аноним 12/12/19 Чтв 18:11:14 1544512283
>>1544491
Потому что во первых не надо создавать зависимостей на ровном месте, во-вторых не надо раздувать функционал класса там где не надо. Это усложняет переиспользование кода
А в третьих это нечитабельно нахуй.
Аноним 12/12/19 Чтв 18:12:19 1544513284
>>1544499
Как ты к этому листу в мейне обращаешься? Если через тип, то и не будет видеть, т.к. лист - член типа. Если через экземпляр - то должно видеть
Аноним 12/12/19 Чтв 18:13:04 1544514285
>>1544512
да пусть помесит глинку, со временем поймет, что это говно. Все через это проходят
Аноним 12/12/19 Чтв 18:15:07 1544516286
image.png (25Кб, 496x244)
496x244
>>1544513
>экземпляр
Ну customers, название листа, через него обращаюсь.
Аноним 12/12/19 Чтв 18:18:17 1544517287
>>1544516
customers - член типа, а не экземпляр. Создай экземпляр и обращайся к его членам
Аноним 12/12/19 Чтв 18:39:59 1544532288
.png (61Кб, 1793x865)
1793x865
Блядь, пиздос шарп странный. Короче, я вчера писал про ObjectDisposedException. Короче, нашел в чем была проблема. В классе который обрабатывал запрос при попытке записать пришедшие данные вылетал эксепшн, из-за того что я недоглядел и пытался сохранять строку в виде класса. Так вот, блядь, почему диспозится сокет, когда эксепшен вообще в другом классе и сокет никак не связан с тем что там происходит?
Я даже картинку нарисовал чтобы было понятно как это выглядит со стороны. Вот и как такое предотвращать? Вообще, с какого хуя эксепшн в одном объекте, не связаным ничем, кроме передаваемых в него данных, вызывает диспоз у сокета, который просто передает хендлеру данные и дальше не при делах?
Аноним 12/12/19 Чтв 19:10:13 1544554289
Хочу сделать игру, но не хочу шквариться об юнити. В идеале хочу свой движок с блекджеком написать. Так вот, у меня два стула: взять OpenGL или directx. Что лучше, учитывая что игра должна быть изометрической пиксельной РПГ?
Аноним 12/12/19 Чтв 19:11:40 1544556290
>>1544448
Да, различие лишь в том, что тебе не надо знать всех мелочей, т. е. спрос меньше, так как ты шарп знаешь. Твоя основная задача это бэкенд.
Аноним 12/12/19 Чтв 19:13:37 1544559291
>>1544499
Тебе нужно свойство customers (которое List) сделать статичным.
Аноним 12/12/19 Чтв 19:14:44 1544563292
>>1544532
Без кода твой пост похож на шизовысер. Мы тут по картинкам гадать не умеем.
Аноним 12/12/19 Чтв 19:15:49 1544565293
>>1544554
C/С++ тред двумя боками ниже, дружок-пирожок. На С# движки для игр не пишут.
Аноним 12/12/19 Чтв 19:17:19 1544566294
>>1544563
Ты будешь 5к строк смотреть, лол?
Аноним 12/12/19 Чтв 19:21:25 1544571295
>>1544566
Показывай место эксепшена и сокета который диспозится.
Дело может быть и не в этом, может быть у тебя там используется многопоточность и из-за твоей криворукости убивается работающий поток который отвечает за сокет. Такое может происходить если ты используешь Thread.Abort() (поток завершил свою изначальную задачу и принялся выполнять другую, и в это время ты его завершил абортом).
Аноним 12/12/19 Чтв 19:25:42 1544575296
>>1544571
У меня все на тасках завязано. Разве должен эксепшн в таске убивать поток целиком?
Аноним 12/12/19 Чтв 19:30:03 1544577297
>>1544575
Таск это такой же поток, различие в том, что он может выполнятся в отдельном потоке или в уже существующем. Тогда как Thread это всегда отдельный поток.
Аноним 12/12/19 Чтв 19:40:07 1544583298
>>1544577
Хм, я почему-то думал, что таск это такая хреновина, которую засовывают в пул потоков и она там по потокам прыгает до завершения, если есть свободные ресурсы, а если умирает, то с потоком ничего не происходит. Именно потому таски и решил использовать, лол. Наверное глупой затеей было садиться писать асинхронный сервер, ни читая ни одной книги.
Аноним 13/12/19 Птн 20:21:47 1545639299
Анон, объясни неосилятору на примере говна и жопы на пальцах, что такое ивенты и зачем они нужны. По учебникам и гуглу понятно не становится.
Аноним 13/12/19 Птн 20:33:31 1545644300
>>1545639
Это такая хуйня, которая позволяет тебе не ебаться с реализацией одного популярного паттерна. Оч удобно, что есть из коробки.
Нужна, чтобы понизить связность сущностей, при этом добавив какую-то хитрую логику. На, банально, вот у тебя в формочке юзер изменяет постоянно что-то, а то что он там изменяет хорошо бы на лету обсчитывать, например сразу сказать: Слыш, пидрила, хули ты в поле год рождения буквы пишешь или год больше текущего, охуел чтоли, а ну давай нормально, или вообще не дать пидорасу это сделать. Вот ты и делаешь эвент: TextChanged, на него вешаешь подписчика, который смотрит что там пидрила ввел и решает принимать текст или подсветить красным и не дать кнопочке сохранения стать активной. Это самый популярный сценарий, но вообще ты можешь и без них жить, просто у тебя в коде где было бы TextChanged?.Invoke(this, new EventArgs()) будет куча методов вида: db.OnTextFieldChanged("Хуй залупа"), GUI.OnTextFieldChanged("Хуй залупа"), webServed.OnTextFieldChanged("Хуй залупа") и т.д. Короче, это сахарок такой вот, позволяет тебе делать штуки с меньшими движениями жопы. Всю пользу поймешь, когда решишь свой проект на 10к+ строк написать.
Аноним 13/12/19 Птн 20:46:28 1545648301
Бля, я>>1545644 конечно хуево описал. Просто нужно самому попробовать использовать и тогда поймешь. Попробуй более-менее нормальный тудулист сделать с возможностью задачи по группам создавать, синхронизацией с сервером, возможностью залогиниться из браузера, и с возможностью "начальнику" всем "подчиненным" добавить задачу, типа он добавляет задачу: "Выполнить пятилетку за три года", а все его "подчиненные" должны это сразу в списке своих дел увидеть.
Аноним 13/12/19 Птн 20:52:37 1545655302
>>1545639
Для того чтобы не писать кучу бойлерплейт кода при работе с делегатами. По сути это обертка над делегатами чтобы было удобней с ними работать, можно всё на делегатах делать, отличие будет лишь в количестве кода которое тебе нужно написать.
Аноним 13/12/19 Птн 20:57:04 1545659303
>>1545655
Будто делегаты это тоже не сахарок. Деды все это на сях указателями на функции делали и ничего, жили себе, писали высокопроизводительный софт, который жрал почти нихуя памяти, а сейчас хелловорлд шарповский пару мегобайт весит и сразу отжирает 6мб оперативки, чтобы ебучую строку текста в консоль вывести. Эх, было же время. Ух. И хуй-то стоял...
Аноним 14/12/19 Суб 00:22:13 1545845304
Нужен совет
есть функция (не моя, оптимизировать не получится) которая вызывается в foreach
проблема в том что каждый цикл выполняется тыщу лет (около секунды),
меня посетила идея запихнуть каждый цикл foreach в отдельный поток и паралельно выполнить все (или N циклов)
можно ли как то по простому это реализовать?
Аноним 14/12/19 Суб 00:37:17 1545852305
.png (24Кб, 881x466)
881x466
Аноним 14/12/19 Суб 00:40:28 1545855306
Аноним 14/12/19 Суб 01:33:31 1545886307
>>1545845
Каждый не надо, на переключение туда-сюда больше времени проебешь
Аноним 14/12/19 Суб 01:46:39 1545889308
>>1545886
там довольно большой объем операций
полный цикл foreach занимал на тестах около 5-6 секунд ( а на боевом сервере я хотел увеличить входящие данные в два раза минимум)
потому не факт что это заняло бы больше времени
async предложенный выше полностью решил проблему с временем выполнения
Аноним 14/12/19 Суб 04:39:26 1545922309
1.jpg (47Кб, 408x484)
408x484
>>1545659
Что еще спизданешь? Пикрил - программа для переключение частоты обновления монитора в один клик, при этом в ней использована сторонняя библиотека, что явно больше чем хеллоу ворлд.
Аноним 14/12/19 Суб 13:58:32 1546120310
Можно ли создать объект класса на уровне класса, а не метода? Если да то как, если нет, то как получить доступ к объекту класса из другого метода?
Аноним 14/12/19 Суб 14:05:00 1546125311
>>1546120
Что ты спросить-то, блядь, хочешь? Какой еще уровень класса, метода? Совсем ебанулся?
Аноним 14/12/19 Суб 19:29:15 1546511312
>>1546120
у тебя каша в голове
>создать объект класса на уровне класса, а не метода?
вообще ничего не понял. Ты сначала создаешь тип, потом создаешь его экземпляр. Обращаешься ты или к типу или к экземпляру в зависимости от того, какой тип ты создал.
>как получить доступ к объекту класса из другого метода?
создать ссылку на этот объект (тип) из пространства имен, в котором ты работаешь. Если поля (метод в твоем случае) этого типа не закрытые, то ты можешь к ним обращаться.
Аноним 14/12/19 Суб 19:58:57 1546543313
>>1545639
Я, кстати, также не понимал, но мне пояснили вот как
Если оставить делегаты как анонимные методы в стороне, то события и делегаты соотносятся как свойства и поля.

1. Событие — это свойство с методами "add" и "remove".
2. Вызов свойства доступен только изнутри класса.
3. Событие может быть как обёрткой над полем-делегатом (аналог автосвойства), так и хранить ссылки на делегаты в какой-то другой форме и вообще содержать любую дополнительную логику.
4. Событие может быть виртуальным и т.п.
Аноним 14/12/19 Суб 20:16:04 1546552314
Аноним 14/12/19 Суб 22:30:35 1546668315
Анончик, нужен совет. Нужно разработать апликуху под ШINDOWS - выбираю технологию. WPF - зарекался связываться с вонючим xaml, консоль не пойдет - нужен базовый клиенский UI, WinForms - говно мамонта, не хочу даже связываться. Я бы на Core написал, там html+razor - более интуитивно понятно, но мне для юзверов нужно, а он запускается в Kestrel/IIS - проблема. Посоветуйте на чем захуячить. Требование - чтобы у юзвера был только .NET framework и всо.
Спасибо.
Аноним 14/12/19 Суб 22:39:04 1546674316
>>1546668
На WPF, что ты там зарекался никого не ебёт.
Аноним 14/12/19 Суб 23:05:48 1546722317
>>1546674
но этой залупе жить от силы пол года. С выходом Core 3.0 все забудут за это убожество Xml-а под подливой WPF
Аноним 14/12/19 Суб 23:11:11 1546732318
>>1546543
ИМХО, такое объяснение даже сложнее для понимания. Я бы, будь совсем нубом не понял нах оно надо. Да и делегаты тоже имеют методы add-remove.
Тут нужно, ИМХО, именно область применения понимать и попробовать что-то с ними намутить. Например чтобы при приходе данных на сервер ты не мутил отдельный метод записи в БД, а просто подписался из контекста БД на событие и сразу добавлял что пришло.
Аноним 14/12/19 Суб 23:27:52 1546756319
>>1546543
>>1546732
у рихтера отличное объяснение с факсом, принтером, телефоном и почтовым сервером. Гугл рихтера, начало главы про делегаты-события
Аноним 14/12/19 Суб 23:52:42 1546778320
>>1546722
Долбоеб, wpf приложения можно и на неткоре делать.
Аноним 15/12/19 Вск 00:11:27 1546803321
Аноним 15/12/19 Вск 00:20:41 1546816322
>>1546803
Уебище тупорылое, у тебя нет приложения, зачем ты ссылаешься на статью для тех, кто писал своё приложение используя net framework? WPF приложения уже можно писать используя .Net Core, представь себе.
Аноним 15/12/19 Вск 13:53:14 1547199323
Шарпаны, поясните, а когда нужно использовать кортежи? Ну, т.е. вроде как понятно, что типа если у нас функция принимает кучу аргументов это неудобно и лучше запихнуть эту кучу в кортеж и тогда, скажем, будет 2 аргумента, но ведь это, на мой взгляд, какая-то залупа, которая просто те же переменные прячет под коврик, а на деле все то же самое. Ну или скажем приводят пример с тем что в одном месте программы приходят данные и тебе влом заводить отдельный класс для этого дела, потому делаешь кортеж и пихаешь в него, дальше что-то там с пришедшими данными делаешь и все, но такая же херня выглядит как какой-то говнокод, особенно с ростом мест, где ты будешь пользоваться кортежами. Может быть я не совсем понимаю, но разве действительно есть какая-то острая необходимость наличия кортежей в шарпе, кроме: "Везде есть, пущай и у нас будет!"?

То же касается и новой фишки с дефолтной реализацией в интерфейсе. Вот нахуй оно надо-то? Мне несложно было для этого сделать абстрактный класс и проделывать все те же свистопляски в нем, а так получается что не понятно теперь, когда что использовать.
Аноним 15/12/19 Вск 14:43:06 1547241324
>>1547199
Кортежи для возврата удобны
У нас в легаси проекте дохуища классов типа ValidationResult, ParsingResult, ConvertResult итд которые нужны исключительно чтобы вернуть 2-3 переменные из функции.
А ещё дохуя функций, которые возвращают данные и успешность операции. Там вообще на out bool построено, что ебано.
Были бы кортежи - стало бы в разы проще.

Про реализацию в интерфейсе - напомни, сколько классов ты можешь наследовать за раз в одном сабклассе, а сколько интерфейсов реализовывать?
Аноним 15/12/19 Вск 15:08:54 1547275325
>>1528262 (OP)
Как защитить свой код от реверс-инжиниринга? Я тут написал годную десктоп-программку на C#, уже был готов раздать коллегам на тестирование, в расчёте через какое-то время монетизировать и не присесть на бутылку как Сысоев. Но решил проверить, не спиздит ли кто-то годноту. И таки да - спиздить ничего не стоит. Dot peek позволяет просматривать все кишки моих dll и exe.
Как сделать так, чтобы нихуя нельзя было понять по бинарникам?
Пока есть только идея переписать ключевые моменты на C++, оставив в C# только IO.
Аноним 15/12/19 Вск 15:40:05 1547304326
>>1547275
> Как защитить свой код от реверс-инжиниринга?
Нанять штат юристов.
Аноним 15/12/19 Вск 15:59:46 1547345327
>>1547241
все, что ты перечислил можно сделать с передачей класса, в который входят эти поля. Я как то упустил из внимания эти кортежи и сам иногда задаюсь вопросом - нахуй они нужны.
Аноним 15/12/19 Вск 16:04:04 1547354328
Аноним 15/12/19 Вск 16:54:36 1547397329
>>1546756
Прочитал. Ахуеть. То есть я правильно понимаю, что ивенты - это синтаксический сахар, чтобы вместо Fax1.DoSomething(); Pager1.DoSomething(); писать одну строку аля NewMail(), да?
Аноним 15/12/19 Вск 17:02:23 1547406330
>>1528262 (OP)
Такая проблема: Вот у меня есть несколько переменных, которым я хочу присвоить значения в цикле do while, в который будет встроена обработка исключений таким образом, чтобы к концу этого цикла всем переменным были присвоены некоторые корректные значения. То есть по замыслу нет возможности покинуть цикл и далее использовать эти переменные в программе, если они не присвоены корректными для них значениями в некотором диапазоне.
Но вот в чем дело: несмотря на все это я не могу просто объявить их в начале программы а уже потом присвоить им значения в цикле, в любом случае мне нужно присвоить хотя бы фиктивное значение. Как избавиться от него?
P.S. Чувствую, что спросил максимально многословно и нелаконично, может даже и не понятно, прошу прощения за это.
код - https://ideone.com/5JfbWs
Аноним 15/12/19 Вск 17:33:09 1547429331
.png (20Кб, 618x728)
618x728
>>1547406
Не понял в чем проблема просто объявить переменные как-то так:
bool? f;
int? n;
int? m;
do{...}while(...)
У них значение по-умолчанию будет null.
Еще не понял, на кой черт ты while(f) используешь. Я вижу что ты так останавливаешь цикл, но нахуя, если можно break сделать? И нахуя тебе do-while? И вообще зачем там делать try-catch опять же?
Аноним 15/12/19 Вск 17:34:45 1547432332
>>1547429
Бля, только условие не то сделал, у тебя же там (0;50], думаю сам понимаешь как исправить.
Аноним 15/12/19 Вск 17:39:42 1547436333
.png (20Кб, 608x611)
608x611
>>1547429
Хотя да, try-catch как защита от дурака можно использовать. Тогда код будет как-то так выглядеть.
Аноним 15/12/19 Вск 17:42:45 1547437334
photo2019-12-15[...].jpg (17Кб, 482x199)
482x199
>>1528262 (OP)
Добрый день, уважаемые.
Давненько не юзал уже asp.net, уже аж core 3.1 вышел.

И вот понадобилось мне написать приложение для интеграции со всякими сервисами, с которыми моя компания работает.

Я как привык - есть access_token, который как-то генерируется и который выдается тому, кто у меня его запросил.

Вот я хочу при обращении к контроллеру/экшну проверять этот access_token, который передается, например, в хедере или юрлпараметром, дальше лезть в базу и смотреть, есть такой токен/нет. Если есть и не истек, то все ок, ппускаю его в контроллер/экшн.

Я думал, это можно сделать, унаследовав атрибут Authorize. но в нем есть какие-то
Клеймы
Политики
Роли

, назначение конторых мне непонятно от слова совсем.
Никаких методов в этом классе нет совсем.
Роли - еще могу понять - reader/writer какой-нибудь.

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1

Был тут, после чего совсем уже совсем тупым себя ощутил.

Можете, пожалуйста, на пальцах объяснить, что значат все эти клеймы, политики и роли, как с ними работать на уровне МиддлВаре и на уровне моих контроллеров/экшнов применительно к моей задачке с access_token?

Аноним 15/12/19 Вск 18:14:11 1547463335
>>1547429
>Не понял в чем проблема просто объявить переменные как-то так:
>bool? f;
>int? n;
>int? m;
Блять и правда. Спасибо, анон.
>Еще не понял, на кой черт ты while(f) используешь.
>Я вижу что ты так останавливаешь цикл,
>но нахуя, если можно break сделать?
Да, наверное ты прав. Так и правда логичнее.
>И нахуя тебе do-while?
Всмысле нахуя мне do-while? Мне цикл для чтения ввода нужен и он должен продолжаться до тех пор, пока не будет введено корректное значение.
>И вообще зачем там делать try-catch опять же?
Ну а вдруг я вместо числа введу строку? Или что-нибудь еще некорректное сделаю. Может быть я конечно и здесь проебался, но не вижу пока в чем.
Аноним 15/12/19 Вск 18:17:17 1547467336
>>1547397
не правильно. У тебя есть 3 устройства, у каждого из которых может возникнуть событие (а может и нет) на получение сообщения. Когда создаешь экзепляр такого объкта, где из полей есть событие, которое принимает делегат, ты можешь сделать подписку на него, а можешь не делать (в зависимости от политики проектировки типа).
Приведу другой пример - у тебя есть материнка, на ней куча сокетов. Один из сокетов для спикера. Ты можешь его подключить, чтобы он выдавал тебе сигналы, а можешь не подключать, но шаблон проектирования материнской платы всегда подразумевает возможность подключения спикера.
Если и сейчас не понятно - почитай про паттерн publisher-subscriber
Аноним 15/12/19 Вск 18:42:32 1547501337
>>1547463
> Всмысле нахуя мне do-while? Мне цикл для чтения ввода нужен и он должен продолжаться до тех пор, пока не будет введено корректное значение.
Ну так вот>>1547436 Обычный while, будет продолжаться пока не введешь корректное значение, а do-while, на мой взгляд, это довольно мутная темка, которая снижает понятность кода, ведь ты, обычно, стараешься читать код сверху-вниз, а тут получается что ты сначала видишь do, спускаешься к концу блока, смотришь условие выхода из цикла, а потом что в самом цикле происходит, конечно это не то чтобы прямо страшная фигня, но зачем писать лишние строки, если их можно не писать?

А насчет try-catch я таки сам понял зачем ты его используешь. Просто как-то уже отвык от ситуации когда корректность ввода так надо проверять.
Аноним 15/12/19 Вск 18:52:00 1547512338
>>1547345
Долбоеб тупорылый, он и говорит, что у него это реализовано классами, а если бы были кортежи, то не нужно было плодить кучу классов для возврата нескольких значений.
Аноним 15/12/19 Вск 19:36:53 1547574339
>>1547512
Класс удобнее, потому что его можно переиспользовать и ты всегда знаешь что это за сущность. В крайнем случае можно структуру ебануть. А кортеж он выглядит просто как данные в вакууме и хуй пойми зачем оно надо, потому что не все удосуживаются имена членам кортежа дать и у тебя получается что-то вида: (int, int, double, string), а при работе с этим кортежем ты вынужден чере a,b,c,d обращаться к значениям.
Аноним 15/12/19 Вск 19:37:47 1547576340
>>1547574
Ага, а кортеж переиспользовать тебе никто не даст. Что за хуйню ты несёшь?
Аноним 15/12/19 Вск 20:00:49 1547590341
>>1547576
>>1547512
мамкин кодер из шараги решил свои 5 копеек вставить. В интерпрайзе выкатишь код со своими кортежами и попробуй не закоментить, что ты там возвращаешь - индус нашлет порчу. Или же сам увидешь свой код и будешь вспомнитать, что ты там высрал год назад.
Для возвращения объекта создаются отдельные сервисы, которые читабельны (не нужно вспоминать, что делает код) и более понятны (есть ребята, которые фич с 7.0 в работе не видели)
Весь ебучий синтаксический сахар на производительность не влияет, убирая лишние 3-4 строчки кода делает код не читабельным.
Аноним 15/12/19 Вск 20:05:51 1547595342
>>1547590
Скорее мамкин нонконформист решил доказать всему миру, что кортежи не нужны. У членов есть имена, поэтому тебе не нужно запоминать, что они возвращают. Классы возвращать нужно там, где это полноценный класс, а не набор полей, которые ты потом в переменные преобразуешь, именно для этого и нужны кортежи.
Аноним 15/12/19 Вск 21:33:47 1547665343
каков положняк по си шарпу к 2020?
Аноним 15/12/19 Вск 21:50:25 1547678344
>>1547590
А что, любая фича должна влиять на производительность, гений?
Аноним 15/12/19 Вск 22:24:02 1547703345
>>1547678
>любая фича должна
как один из пунктов. Но точно не вредить. С каждым апдейтом запиливают сахара все больше и больше. Возьми чувака с легаси .NET core >4.0 он вообще охуеет от синтаксиса
>>1547595
ты просто видимо кроме решеток не на чем не писал и не знаешь, что хороший язык тот, который:
1. Выполняет задачу;
2. Имеет friendly сигнатуру
3. Вытекает из 2 - Легко читается, сапортится
Есть некоторые фичи, которые нахуй нужно выпилить из языка
>>1547665
все так же, мертвый язык. Почитай что выше пишут, одни вкатывальщики из шараги
Аноним 15/12/19 Вск 22:25:42 1547706346
>>1547354
Есть годные бесплатные?
Аноним 15/12/19 Вск 22:27:45 1547707347
>>1547703
>1. Выполняет задачу;
>2. Имеет friendly сигнатуру

Это и достигается при помощи лаконичных кортежей, а не тысячей классов вида ValidationResult, ParsingResult, ConvertResult ...
При этом, если говорить о производительности, то твои классы будут сосать у ValueTuple, поэтому тебе придётся делать структуры, которых в твоей "нормальной" джаве нет, как и кортежей.
Аноним 15/12/19 Вск 22:53:44 1547724348
.jpg (69Кб, 640x640)
640x640
Сейчас пишу программу, в котором получилось очень много блоков switch. И заметил следующую хуйню: если в условном case 1 у меня есть int hui, то в case 2 я не могу объявить int hui, потому что ЭТА ПЕРЕМЕННАЯ УЖЕ ОБЪЯВЛЕНА.
То есть что это такое, анончики? Я пишу переменную для case 1, но компилятор воспринимает ее как переменную всего блока switch? Это же пиздец какой-то, нет? Как в плане синтаксиса (потому что я в case 2 могу использовать переменную hui, которая объявлена в case 1. А если у меня между объявлением и применением переменной 300 строк кода?), так и в плане оптимизации (если мне массив нужно объявлять для case 2, то независимо от того, какой case в итоге выбран, у меня этот массив в памяти висеть будет, даже если он нахуй не нужен).
Это я долбоеб или switch - это сомнительный синтаксический сахар, который при это убивает на корню всю эффективность решения? Я где-то читал, что компилятор воспринимает switch как if-elseif-else, но это же тогда полная хуита получается, потому что в if-elseif-else переменные остаются локальными. Рассудите, анончики.
Аноним 15/12/19 Вск 23:00:24 1547735349
20190929094910.jpg (36Кб, 311x273)
311x273
>>1547724
Бывший петухонщик, ты? Всё объявлять можно, достаточно в фигурные скобки заключить блок case.
Аноним 15/12/19 Вск 23:03:17 1547740350
>>1547735
Благодарю покорнейше. Впервые услышал, что так можно.
Петухоном ни разу не пользовался
Аноним 15/12/19 Вск 23:07:35 1547744351
>>1529860
Через Mock`ирование ?
Аноним 15/12/19 Вск 23:08:47 1547746352
>>1531808
Те же мысли, параллельно изучаю Java..
Аноним 15/12/19 Вск 23:10:12 1547750353
>>1531808
Читать книги, очевидно. Если времени много, то можешь на их основе пет-проекты делать.
Аноним 15/12/19 Вск 23:24:50 1547766354
>>1547703
>Вредить
Она вредит только в твоём шизомирке.
>Сахара все больше
И это хорошо, не любишь сахар - можешь пиздовать на сях писать сразу
Аноним 15/12/19 Вск 23:28:04 1547770355
>>1547746
Только смотри не учи Swing/JavaFX
Аноним 15/12/19 Вск 23:46:27 1547785356
>>1547770
Не-не, я понял, что бабло в hibernate + spring
Аноним 16/12/19 Пнд 00:09:41 1547802357
>>1547707
>в твоей "нормальной" джаве
шизик, сам додумываешь?
остальное коментировать не вижу смысла, только время терять.
>>1547724
>очень много блоков switch
говном завоняло с соседьнего треда. В решетках ООП, ты еще про Goto вспомнил бы
>>1547744
>>1529860
хоть через что. Модульное тестирование - отрезать кусок от инфраструктуры и тестить. Подвязывать один тест на другой - зашквар, т.к. если упадет один, упадет и зависимые
>>1531808
так и есть, в Core уже запилили WPF, так что возможно не сгниет и xaml будет процветать (но это не точно)
>>1547766
>Она вредит только в твоём шизомирке.
понаписывают такие дебичи, как ты () => () конструкцию на 10 этажей и сиди разбирай. Еще про Си вспомнил, что за долбоеб, земля тебе пухом
Аноним 16/12/19 Пнд 00:48:07 1547840358
>>1547199
Анон, поясни за перспективы Шарпа в датасаенс. Кто-то его юзает или проще забить хуй, удалять Rider и качать мануалы по питону и R?
Аноним 16/12/19 Пнд 00:49:00 1547841359
>>1547840
Блядь, ссылку на случайный пост сделал
Аноним 16/12/19 Пнд 00:53:53 1547842360
>>1547840
Расскажи, какие ты задачи в "Дата саенс" хочешь решать?

еня вот позавчера один "дата саентист" очень слёзно просил ему в sql-server Включить поддержу питона, потому что тока на нем можно быстро работащий код написать для его дата-аналайзиса.

Открываю, значит, его код на питоне, а там просто все данные из таблички в память засаываются, а потом циклами всякие медианы считаются. Было для меня небольшим откровением о том, что такое дата-сайнс.
Аноним 16/12/19 Пнд 01:08:26 1547847361
>>1547842
Ну вот к примеру обсчет данных секвенатора, чтобы из обрывков последовательность ДНК собирать
Хотя я ж еще не практик, я просто мимовкатыш.
Аноним 16/12/19 Пнд 01:27:40 1547849362
>>1547842
>"дата саентист"
>поддержу питона
99% этих бездарных уебищь только для этого питон и используют
Аноним 16/12/19 Пнд 09:31:02 1547987363
>>1547847
Тогда не уверен, что шарп тебе подходит.

Мелкомягкие сделали ML.Net, однако он выглядт, как набор готовых решений: «бери и используй», а все, что выбивается за рамки регрессионного анализа, всяких там популярных подходов, вряд ли будет сделано хорошо.
Аноним 16/12/19 Пнд 09:42:53 1547995364
image.png (260Кб, 1666x686)
1666x686
.NET НЕ ГОВНО ПОВТОРЯЮ .NET НЕ ГОВНО
МАЙКРОСОФТ ГИГАНТ С СЕРЬЕЗНЫМ ЭНТЕРПРАЙЗЕМ
В БИНАРНИКАХ АНАЛЬНЫХ ЗОНДОВ НЕТ
Аноним 16/12/19 Пнд 17:24:38 1548361365
>>1547802
>Понаписывают
Маня, если ты даже с лямбдами обсираешься и сам не понимаешь что понавысрал через 5 минут, то не надо это проецировать на других
Синтаксический сахар упрощает читаемость и поддержку, для этого он и создан. А то что кто-то его не к месту юзает, обсирается и бежит ныть на двач - это не проблемы белых людей

Бтв в одном я неправ, признаю. Тебе не в тред плюсовиков, слишком умно для тебя будет. Тебе к гошникам, которые даже дженерики осилить не могут и кричат НИНУЖНА. Вот там ты точно приживешься.
Аноним 16/12/19 Пнд 18:12:12 1548398366
реквестирую код на шарпе, который будет менять бинд смены раскладки. то есть, с шифт-альта на ктрл-шифт. с меня как обычно нихуя
Аноним 16/12/19 Пнд 18:18:32 1548407367
>>1528262 (OP)
Хочу выучить байткод C# с целью реверсинга софтины, скомпиленной под .NET. Какую книгу подскажете?
Аноним 16/12/19 Пнд 18:28:37 1548416368
>>1548407
Не байткод, а MSIL он же CIL (Common Intermediate Language). У Троелсена есть глава в которой он рассматривает некоторые примеры.
Аноним 16/12/19 Пнд 19:22:49 1548479369
>>1548407
Нахуя, когда ты можешь рефлексией из сборки вытащить абсолютно все?
Аноним 16/12/19 Пнд 19:44:49 1548503370
image.png (8Кб, 300x218)
300x218
image.png (10Кб, 372x201)
372x201
image.png (17Кб, 473x295)
473x295
сап пр, собсна дрочусь с файлами и делегатами. запихуваю в string[] делегат методы которые возвращают string[].
Пытаюсь записать их в файл, но пишет что я долбоеб и System.String[].
да, я в курсе что делегаты - это ссылки на метод, а не контейнер хранящий методы.

Однако, пик 1 - работает, а пик 2 - нет.

На пик 3 - метод, который принимает string[] и ДОписывает в файл.
Помогите, чому в файл записывается System.String[] вместо нормального текста. Я пытался создавать отдельный массив в который записывал примерно так:

string[] newarr = new string[] {Convert.ToString(searchImageFiles(path)), Convert.ToString(searchVideoFiles(path))};

Всё равно в файл дописывалось System.String[]
В гугле не забанили, пытался гуглить - в итоге нихуя не понял. Ебусь второй день. Да, я долбоеб, говнокодер итд итп. Прошу помогите
Аноним 16/12/19 Пнд 19:47:44 1548505371
Короче, два тупых вопроса.
1. Смотрите, я подключил EF Core и заметил что если обращаться к контексту БД постоянно, производительность существенно падает. Как я понял, связано это с тем, что я сохраняю постоянно прямо в базу при каждом изменении полей классов, которые мне нужно держать в актуальном состоянии. Я ебанул костыль с тем что при запуске программы создается статичный класс с хэштаблицей, который все что мне нужно из базы один раз читает, я в таблицу пишу-апдейчу, при закрытие "синхронизирую" это говно с базой. И как-бы да, производительность сразу возросла в разы, только я чет думаю что я хуйню делаю. Как правильно-то? Я думал что может просто убрать сохранение изменений и вызывать его по таймеру, но не уверен что это правильный выход.
2. Как правильно свой вебсервер реализовывать на базе HttpListner? Просто я как-бы сделал простенький, но получается, что в классе этого сервера куча методов которые просто идут в папочку и достают страничку. Скажем, я догадался парсить URL запроса и рефлексией методы вызывать, чтобы не делать огромный switch-case, но вот что как настроить маршрутизацию нормально? Типа тупо же делать кучу одинаковых методов которые нужны просто чтобы /Home /Index и просто / выдавали одну и ту же страничку, но по другому я пока не представляю как делать, типа думал может сделать файл с "маршрутами", в виде словарика, в котором кусок URL - ключ, а значением выступает метод, тогда получится, что я из URL могу получать название методов и даже может от рефлексии можно будет отказаться, но тоже хз.
Аноним 16/12/19 Пнд 20:20:32 1548558372
>>1548503
Какой тип имеет searchFiles?
Почему на первом пике в case 2 ты сначала отнимаешь, а потом присваиваешь совершенно другое значение, затирая предыдущее? Тебе не кажется, что что-то тут лишнее?
не факт что помогу, но интересно
Аноним 16/12/19 Пнд 20:29:40 1548567373
.png (135Кб, 1920x1034)
1920x1034
Аноним 16/12/19 Пнд 20:34:35 1548573374
>>1548558
тип - string[]
чтобы избавиться от ссылки на другое значение
>>1548567
search.Invoke это что бля такое ваще, а Where?
Аноним 16/12/19 Пнд 20:52:01 1548598375
>>1548573
Invoke я по привычки ебнул. Вообще правильно было бы написать: search?.Invoke(path), так делегат выполнится только если ему что-то присвоено -> внезапно твоя фиговина не упадет из-за NullReferenceException, при этом это короче чем if(search!=null) писать.
> а Where
Это хуйня из linq. Linq крайне приятная штука на самом деле при работе с любыми коллекциями, списками, массивами и т.д.
Аноним 16/12/19 Пнд 20:53:08 1548599376
>>1548598
Так что Invoke делает?
Аноним 16/12/19 Пнд 21:04:57 1548623377
>>1548599
Просто выполняет(вызывает?) делегат. Экзекуцию производит.
Аноним 16/12/19 Пнд 21:10:57 1548639378
>>1548573
Если это тип string, то почему ты передаешь ей аргумент (path)? Короче я хз что у тебя происходит. Я правильно понял, что вместо пути ф файл записывалась строка "System.String[]"?
На втором пике в case 3 аргументы справа от знака присваивания твои собственные? Возможно, где-то в них что-то не так?
Аноним 16/12/19 Пнд 21:17:16 1548650379
image.png (20Кб, 679x354)
679x354
>>1548639
В файл должен записываться путь, который возвращает метод. Проблема в том, что я не знаю как возвратить нормально массив со значениями, из-за этого в файл записываются не пути а system.string[]
Аноним 16/12/19 Пнд 21:20:16 1548655380
>>1548650
Массив в шарпе - это указатель, соответственно ты можешь передавать имя массива как аргумент или возвращаемое значение, и все должно быть ок.
Аноним 16/12/19 Пнд 21:21:17 1548656381
>>1548655
нихуя не работает, значит не можно.
Аноним 16/12/19 Пнд 21:33:40 1548668382
image.png (24Кб, 395x150)
395x150
>>1548567
что у тебя идет после Where?
Аноним 16/12/19 Пнд 21:33:52 1548669383
.png (19Кб, 970x429)
970x429
>>1548650
Твой проеб в этом месте из-за того что ты пытаешься массив конвертить в строку. Соответсвтенно вызывается метод ToString(), который и возвращает тебе System.String[]. Тебе нужно было просто объединить массивы. Мог, например, создать третий размером как эти два и в него закинуть все, либо просто ебануть список и в него впихнуть эти два.

Еще 5 копеек.
Зачем тебе считать в цикле, если ты можешь просто свойство Length у массива посмотреть? Т.е если тебе нужна была сумма, ты мог просто Console.WriteLine($"Amount: {TxtFiles.Length+DocxFiles.Length}");
Ну и да, с Linq это короче было бы.
Аноним 16/12/19 Пнд 21:37:23 1548672384
>>1548669
>Зачем тебе считать в цикле, если ты можешь просто свойство Length у массива посмотреть?
Точно, совсем об этом почему-то не подумал. Ты прав

>Твой проеб в этом месте из-за того что ты пытаешься массив конвертить в строку.
Понял, спасибо. Я пытался объединить массивы, но нихуя не получалось. Спасибо тебе большое
Аноним 16/12/19 Пнд 21:38:35 1548675385
image.png (6Кб, 526x288)
526x288
>>1548656
Тыщу раз так делал, все работает.
Аноним 16/12/19 Пнд 21:42:50 1548679386
>>1548675
Зачем ты из войда ретёрн делаешь после того как форич завершился? Я еще понимаю, типа чтобы "аварийно" выйти из метода, но тут-то зачем?
Аноним 16/12/19 Пнд 21:44:38 1548680387
>>1548679
Для порядка, по привычке.
Аноним 16/12/19 Пнд 22:08:05 1548709388
>>1548669
Можешь объяснить хотяб чуть-чуть на счет того, как работает Where в твоем коде? Я погуглил, +- что-то понял, но всё как-то запутанно
Аноним 16/12/19 Пнд 22:22:33 1548736389
.png (8Кб, 526x213)
526x213
>>1548709
Проходит по всей коллекции и сравнивает значение коллекции с условием, которое я передал в лямбдой, возвращает элементы которые соответствуют этому условию. Можно было бы не лямбду использовать, а передать метод, как на скриншоте, просто лямбдами в данном случае проще.
Аноним 16/12/19 Пнд 22:26:55 1548746390
image.png (17Кб, 496x383)
496x383
>>1548736
Понял, спасибо.
Можешь скинуть код, у меня почему-то файл не создается. Отдельный класс не делал, так как пока что похуй на него
Аноним 16/12/19 Пнд 22:29:11 1548748391
Вот бы написать конвертер .Net-байткода в Java-байткод…

А то люблю шарп, но джава на большем кол-ве платформ есть…
Аноним 16/12/19 Пнд 22:29:18 1548749392
Аноним 16/12/19 Пнд 22:32:23 1548753393
>>1548748
Это будет хуйня костыльная, которая будет работать в два раза медленнее. Лучше уж сразу компилятор в java байткод делать.
Аноним 16/12/19 Пнд 22:51:41 1548775394
>>1548749
Хз, у меня всё равно как бы я не дрочил твой код - не создаётся файл. Я пытался делать через File.AppendAllText, но там 2 аргумент это то, что записывать с типом string, в то время как методы возвращают string[]
Пытался сделать файл в ручную - всё равно нихуя не записывается
Аноним 16/12/19 Пнд 23:07:03 1548784395
>>1548775
всё, проблема решилась сама
Аноним 16/12/19 Пнд 23:26:31 1548824396
Как передать в метод сеанс юзера? В апликухе, которая работает с БД есть сущности, которые юзер может гонять через CRUD. Вопрос: Как поместить в круд методы именного того юзера, который это делает?
Аноним 16/12/19 Пнд 23:27:15 1548827397
Аноним 16/12/19 Пнд 23:27:27 1548829398
.jpg (2Кб, 125x125)
125x125
Как оттачивать свои навыки кодинга, если у меня нет фантазии на не очень полезные тренировочные проекты, и при этом нет скиллов на полезные реальные проекты? Писать лабы 2 студентам?
Аноним 16/12/19 Пнд 23:30:55 1548834399
>>1548824
>Методы юзера
>Поместить в бд
Што
Аноним 16/12/19 Пнд 23:35:52 1548842400
>>1548829
Все тренировочные уже за тебя придумали.
Fundamentals-of-Computer-Programming-with-CSharp-Nakov-eBook-v2013
Вот в этой книге годные примеры.
Аноним 17/12/19 Втр 00:30:52 1548933401
>>1548829
Шутишь, наверное !
Вполне можно рассматривать в качестве "проекта" даже написание одной единственной, но крайне полезной функции. А таких функций, которые ещё нужно написать, но они пока не написаны - буквально вагон !
Потом из этих готовых функций уже проще собирать программы.

К примеру, написать функцию, но это, пожалуй, даже и на библиотеку тянет. Хорошо, библиотеку, имеющую такую экспортируемую функцию, что в неё хендл растра изображения передаёшь в первом параметре, а во втором хендл окна в котором искать. А эта функция возвращает координаты найденного изображения в указанном окне, либо -1, если изображения этого в указанном окне нет. Вот мне как раз такая нужна.

Или, скажем, такая функция : в неё передаёшь в первом параметре строку в которой искать, а во втором массив структур. Сама структура описывается двумя полями : первое поле - искомая подстройка, а второе поле - число. Число или 1 или 0 в зависимости от направления поиска в искомой строке(вперёд или реверс).
Функция возвращает позицию последней в массиве экземпляров стркутур подстройки в искомой строке или -1, если подстройка эта не найдена.

То есть, некий аналог функции поиска подстройки, только, во первых, реверсивный, а во вторых, ищет не одну подстройку, а сперва одну, затем от неё следующую в указанном направлении, от неё следующую в новом направлении и так далее.
Иметь такую я бы тоже не отказался - полезная штука для разбора текстов.

Или вот, недавно написал уже правда, в функцию передаёшь строку, она возвращает массив, представляющий собой бинарник файла изображения формата PNG, в растр которого "вшита" строка, переданная в параметре.
И обратная функция - ей передаёшь в строке путь к файлу PNG, а она возвращает строку, "вшитую" в растр этого файла, если найдёт в файле маркер IMG-архива.

Но мне надо усовершенствовать, чтобы в обратную функцию передавать не путь к файлу, а массив с бинарником файла.
Аноним 17/12/19 Втр 06:37:18 1549045402
Хосспаде, как же хочется кунчика -сисярп программиста. Приходить с работы, а он там в одном фартучке и анальной пробке ждёт тебя. Потом берёшь его за ушко, вытаскиваешь пробку из его попки и начинаешь сочно трахать, пока он тебе про свои коммиты на гитхабе рассказываешь.
Аноним 17/12/19 Втр 10:26:04 1549110403
Сижу, изучаю шарпы, вникаю в ООП, и охуеваю с количества инфы. ЭТО КАПЕЦ, А ВЕДЬ Я ЕЩЕ ДАЖЕ НЕ ИЗУЧАЛ НИКАКИХ ФРЕЙМВОРКОВ, ПРОСТО ОГРОМНАЯ ГОРА ИНФЫ. Я думал будет проще получать 300кк/сек
Аноним 17/12/19 Втр 11:25:57 1549158404
>>1549110
Шарпы это сложный бэкенд язык со статической типизацией, для легких 300к надо ноду, но на нее нет джунов
Аноним 17/12/19 Втр 11:49:18 1549172405
>>1549110
Фреймворки же наоборот упрощают жизнь, разве нет?
Аноним 17/12/19 Втр 12:51:05 1549243406
>>1548827
у меня ONION архитектура, вся бизнес логика спрятанна внутри, а в ней работа с БД. Через входящие параметры запуливать эти куки? Как это вообще работает?
>>1548834
действия юзера, описочка
Мне нужно на каждого клиента вести историю изменения объектов, которые реализованны через методы
Аноним 17/12/19 Втр 12:58:53 1549260407
Зачем нужен WebApi на проекте? На глобальных, типо соц сетей и прочей дрысни, я это вижу как привлечение аудитории, которые могут/хотят запилить доп. фичи в проект (те же боты в телеге или инсте). Для чего в каких ни будь сайтиках он нужен?
И еще, думаю косвенно заденет первый вопрос. Как JS макаки пилят код под backend? Через WebApi? Я не думаю, что проекты на ASP.NET высирают через View-Razor (разве что full-stack), думаю что как раз таки через webApi.
Поправьте, если что не так, т.к. всегда писал серверную часть и с UI мало имел дела (за исключением пары высранных проектов в MVC5)
Аноним 17/12/19 Втр 13:06:23 1549271408
Аноним 17/12/19 Втр 13:19:32 1549287409
>>1549243
>у меня архитектура
>Вопрос про основы веба из учебника 8 класса информатики
>Как это вообще работает?
Главная проблема сярпомакак: дрочите платформу и какие-то паттерны, абсолютно без понимания происходящего
Аноним 17/12/19 Втр 13:25:21 1549301410
>>1549243
>у меня ONION архитектура
Сука, как же я заорал на всю хату. Что ж у тебя не хексагональная-то, архитектура твоя?
Аноним 17/12/19 Втр 13:34:44 1549321411
Аноним 17/12/19 Втр 13:40:01 1549331412
Нашёл сайт по шарпу, мне показался довольно годным
https://ulearn.me/
Советую вкатывальщикам
Аноним 17/12/19 Втр 13:41:18 1549332413
image.png (149Кб, 817x578)
817x578
>>1549331
Это если чё не пиар, автор походу умер в 2015
Аноним 17/12/19 Втр 14:10:09 1549370414
>>1549331
>>1549332
Этот ресурс создали и поддерживают СКБ Контур. Видео староватые, то тексты и задания обновляются. Кстати недавно новый дизайн сайта запилили. Так что ты не прав.
Аноним 17/12/19 Втр 14:10:19 1549371415
>>1549332
Если заниматься по этим материалам, есть шанс умереть?
Аноним 17/12/19 Втр 14:24:27 1549380416
>>1549371
Ю а олреди дед инсайд
Аноним 17/12/19 Втр 16:01:06 1549434417
>>1549332
Автор в гермаху съебал
Аноним 17/12/19 Втр 16:36:26 1549455418
>>1549434
Уральские ебеня или Гермашка... Хм, что бы выбрать...
По дискретке курс годный
Аноним 17/12/19 Втр 16:37:13 1549456419
>>1549243
>>1549260
двачую вопросы. Кроме пердежа в воздух ничего толком не увидел
Аноним 17/12/19 Втр 16:44:36 1549459420
>>1549243
Реализуешь логин на свой говносайт, создаешь базу пользователей, каждому присваиваешь идентификатор, используя его в своих методах для определения отдельного пользователя. Что, блять, сложного в этом?
Аноним 17/12/19 Втр 16:46:44 1549462421
>>1549331
Всё нужное есть у Троелсена, далее ты закрепляешь всё Альбаири, после чего можешь пройтись по классике вида Рихтера. Никакие видеоговнокурсы не нужны, только время потратишь, хуже будет только чтение метанита.
Аноним 17/12/19 Втр 16:59:26 1549468422
Блять, да как нахуй писать код ебучий. Я вообще не понимаю, мне нужны основные правила, что можно делать, что нельзя. Все обзываются, мне неприятно, как исправлять - непонятно. Я не могу сам догадаться, что так нельзя сука делать, потому что это некрасиво ( допустим огромный мейн)
Аноним 17/12/19 Втр 17:32:51 1549491423
IMG201911271959[...].jpg (138Кб, 710x947)
710x947
>>1549462
Двачую про Троелсена, купил его, отлично все расписано, читать все подярд не обязательно, некоторые вещи можно пропустить вначале, например манипуляции с родительскими классами типа System.Object,да и самые первые главы про работу компилятора тоже, если ты совсем ньюфаг. Есть кучу примеров, единственное я еще хотел бы упражнения для самостоятельной работы, но их нет, благо я придумал себе пет проджект, на нем и испытываю все новое, что изучаю
Аноним 17/12/19 Втр 17:33:26 1549492424
>>1549459
мне пишут тут через куки это делать. К тому же получается в каждый метод, где нужна регистрация пользователя, нужно передавать POCO пользователя, я правильно понял?
Аноним 17/12/19 Втр 17:34:13 1549495425
>>1549331
сейчас бы мертвый язык учить в 2к19, земля тебе пухом
Аноним 17/12/19 Втр 18:38:20 1549536426
>>1549491
>купил
Как понять, что у человека низкий IQ
Аноним 17/12/19 Втр 18:41:52 1549539427
>>1549491
Читать лучше в оригинале.
>например манипуляции с родительскими классами типа System.Object

Этого как раз пропускать нельзя, это основы которые должен знать каждый, как только ты их поймешь, так сразу легче будет понимать всё остальное.
Аноним 17/12/19 Втр 18:42:10 1549540428
>>1548842
Ты по ней вкатываешься? Как тебе эта книга?
Аноним 17/12/19 Втр 18:55:58 1549553429
>>1549540
Нет, для вката она не совсем подойдёт, так как 2013 года и код в ней может быть местами устаревший. Начинать лучше с Троелсена, а её использовать для закрепления материала, потому что примеров там много и они все годные и интересные.
Аноним 17/12/19 Втр 19:57:49 1549612430
>>1549539
Понятное дело лучше, но когда у тебя уровень А1 как у меня, смысла нет вообще, я буду через слово искать в словаре. Инглиш стараюсь в местах попроще подтянуть.
Аноним 17/12/19 Втр 23:46:16 1549812431
>>1549434
>Автор в гермаху съебал
Кого ты называешь автором? Их там много.
Аноним 17/12/19 Втр 23:46:50 1549814432
>>1549495
>мертвый язык
Очередной школошизик
Аноним 18/12/19 Срд 01:55:09 1549919433
>>1549260
Так Web-макака - как раз ты, раз не понимаешь, зачем web api нужен.

Очень просто:
1. для команд, где фронт и бэк разделены, например, где фронт пилят на Angular.
2. Для интеграции с дургими системами, например, ваша CRM-система находится в облаке (bitrix-24), к тебе с сайта падает заявка в базу, как ты ее отправишь в CRM? через Web Api, который разработчики CRM-системы предусмотрительно для тебя сделали.
Аноним 18/12/19 Срд 10:50:30 1550105434
>>1549919
>Web-макака - как раз ты, раз не понимаешь, зачем web api нужен.
Я же не веб макака, чтобы мне такое знать
Энивей, спасибо за ответ
Аноним 18/12/19 Срд 13:22:48 1550192435
>>1548479
Обфускаторы никто не отменял
18/12/19 Срд 15:36:35 1550301436
>>1549243
в этом могут помочь события
твои методы могут публиковать события когда пользователь меняет сущности
модуль записи изменений слушает события и сохраняет их
разумеется, вместе с изменениями событие должно будет содержать объект или айдишку пользователя

https://martinfowler.com/eaaDev/EventSourcing.html
не совсем твоё но прочесть стоит
18/12/19 Срд 15:40:27 1550304437
>>1542135
лол, лаба3?
Merge(first, second) => m => second(first(m))
18/12/19 Срд 16:10:00 1550314438
Аноним 18/12/19 Срд 16:22:05 1550316439
>>1550304
Спасибо, кэп, но нет:
>Любое эквивалентное ему не подходит

>Лол, лаба3?
Хуже используемая в проде либа генерит разметку, разбирая экспрешн три
18/12/19 Срд 17:06:27 1550332440
>>1550316
тогда тебе придётся с рефлексией поебстись
почему именно так? покажи больше кода
Аноним 18/12/19 Срд 17:26:42 1550345441
>>1550301
я суть понимаю, как это реализовать, но как правильно - нет. Поэтому и обратился к анону. По сути можно и входящим параметром передать POCO usera, где по полям записывать данные, но мне нужна была та практика, которая считается эталонной (правильной).
Энивей, спасибо за совет
Аноним 18/12/19 Срд 18:35:23 1550373442
Может кто-то сталкивался. Есть WPF окно, в нём есть ComboBox, ItemsSource которого привязан к List<T>. При изменении этого листа, информация DropDown меню обновляется ровно до тех пор, пока его не открыть. При этом проблема только в визуальном обновлении, если закрыть окно и открыть его заново, то вся добавленная информация отображается как надо.
Аноним 18/12/19 Срд 19:00:05 1550382443
>>1550373
В общем, решил сам. Надо было в классе делать не List<T> а BindingList<T>, но так как класс уже сохранён и если сделать данное изменение, то он не загрузится, то пришлось делать костыль вида:
foreach (var win in App.Current.Windows)
{
if (win is WindowWithComboBox cbw)
{
cbw.CmboBox.Items.Refresh();
}
}
Аноним 18/12/19 Срд 19:34:40 1550406444
Короче, поясните, 3к добавлений записей в минуту в EF core это нормально? Просто я думаю что это как-то ну слишком медленно, а если это не нормально и я обосрался, то как искать из-за чего так медленно?
18/12/19 Срд 19:41:47 1550410445
Аноним 18/12/19 Срд 20:13:56 1550423446
Ребятушки, смотрите, я делал примерно так:
while(client.Online)
{
await ReadAsync(buffer);
var response = await handler.ParseAndMakeResponse(buffer);
await WriteAsinc(response.ToBytes());
}
Предупрежу что это псевдокод, а не настоящий код из моей хуйни.
И, в общем, то, оно работает нормально, только вот срань в чем: Если клиентов много и все они онлайн, мой сервер, судя по отладчику, большую часть времени занимается тем, что переключается между тредами, на втором месте стоит как раз этот метод общения. Мне это чет не нравится. Как делают умные люди, если сервер не просто должен запрос-ответ делать, а сохранять открытым подключение с клиентами, которых может быть довольно много?
Аноним 18/12/19 Срд 20:17:02 1550426447
>>1550423
Умные люди используют готовые решения, а не велосипеды пилят.
18/12/19 Срд 20:23:19 1550433448
image.png (86Кб, 679x841)
679x841
>>1550423
в ненси например вроде рекомендуется что-то подобное, но хуй знает, чот говняво
я бы не велосипедил как сверху уже сказали
18/12/19 Срд 20:24:37 1550435449
Аноним 18/12/19 Срд 20:33:42 1550445450
.jpg (667Кб, 868x1228)
868x1228
>>1550426
А я бы и рад, только вот как я могу нормально готовым решением пользоваться, не понимая всего этого? Вот возьму я готовый TCP сервер, сделаю просто обработчик своего супер-протокола, а потом окажется что там какая-то фигня случается, а я не знаю почему и как починить.
>>1550433
Тут коммуникация заканчивается после приема сообщения. А у меня клиенты - тупой конечный автомат, эмулирующий работу одной железяки, которым нужно чтобы канал все время сессии был открыт.
Аноним 18/12/19 Срд 20:42:11 1550456451
>>1550445
>не понимая всего этого?

Для этого книги есть, с примерами. Уверен, что в примерах рассматривается такой вариант. Но нахуй нам книги читать, если можно долбится в стену как баран, используя то, о чём ты не имеешь представления, при этом надеяться, что это представление у тебя появится чудесным образом.
Аноним 18/12/19 Срд 20:49:39 1550474452
>>1550456
Я читал книги, лол. Там в плане голого TCP/IP со своим протоколом как раз все время примеры примерно как у меня, а дальше идет про HTTP и фреймворки для работы с ним, а мне не нужен HTTP, с HTTP любой дурак может, я хочу свой супер-протокол, с блекджеком и шлюхами, без кучи ненужной инфы, при этом чтобы нужная инфа была в форме которую я хочу получить, а не здоровенного пакета с гипертекстом, жейсоном и прочим говном. А все книги по голому TCP/IP для ебучего Си написаны и я нихуя в них не понимаю.
Аноним 18/12/19 Срд 21:32:29 1550527453
>>1550474
Ну вот ты и пришел к правильному логическому выводу - ты выбрал не тот инструмент. Учи Си и изобретай свои велосипеды, у шарпа совсем другое предназначение.
Аноним 18/12/19 Срд 21:54:16 1550540454
>>1550527
Я таки базово знаю си. И с ним проблема в том, что если что-то наебнется, я через месяц об этом через 500 лет узнаю. А писать сразу так чтобы не наебнулось я не умею. Весь мой кодинг состоит из собирания всех возможных граблей и ломания того что работало в процессе починки того что не работало.
Аноним 19/12/19 Чтв 02:15:39 1550638455
>>1550540
Суть в том, что весь твой кодинг имеет смысл только в плане обучения, для решения задач уже есть готовые библиотеки и фреймворки.
Аноним 19/12/19 Чтв 11:45:17 1550773456
>>1550445
>а потом окажется что там какая-то фигня случается, а я не знаю почему и как починить.
System.Net.Sockets - в ней фигня случится? Ты ебу дал? Тем более все баги фиксятся или на их проблему есть решение ты знаешь, где искать
>я хочу свой супер-протокол
тредом ошибся, додик
>>1550540
еще один шизоид. "Если сломается..." А если тебя завтра машина собьет, то что?
Аноним 19/12/19 Чтв 12:20:04 1550801457
image.png (26Кб, 972x455)
972x455
Аноним 19/12/19 Чтв 12:28:13 1550807458
MSDN.jpg (24Кб, 808x319)
808x319
Аноним 19/12/19 Чтв 12:28:50 1550809459
>>1550807
А, изначально неправильно написали, я не дочитал, сори
Аноним 19/12/19 Чтв 13:36:58 1550868460
>>1550474
Чего блять? Если у тебя есть реализация своего протокола, то бери TcpClient и гоняй байты через него.
Аноним 19/12/19 Чтв 13:59:01 1550887461
>>1550868
очередной ссаный студент изобретает колесо
сагай и делу конец
Аноним 19/12/19 Чтв 16:34:41 1551025462
1.jpg (55Кб, 962x346)
962x346
>>1550801
Потому что надо на языке источника читать.
Аноним 19/12/19 Чтв 19:24:54 1551181463
.jpg (361Кб, 1000x1000)
1000x1000
>>1550868
Я хочу чтобы было оопшно, чтобы не просто байтики гонять для одного протокола, а можно было, в теории, любой с минимумом телодвижений, чтобы расширяемо и масштабируемо и это вот всё.
Аноним 19/12/19 Чтв 20:38:57 1551258464
Есть метотод, который принимает стоку, и если в ней есть перенос строки, то возвращает часть до переноса, если нет, то возвращает исходную строку. Как можно назвать такой метод? TakeSingleLine, TrimToLineBreaker?
Аноним 19/12/19 Чтв 20:45:11 1551270465
>>1551258
.Split(new string[] { "\n" }, StringSplitOptions.None)[0]
Аноним 19/12/19 Чтв 20:45:16 1551271466
19/12/19 Чтв 21:29:14 1551335467
Аноним 19/12/19 Чтв 21:51:22 1551355468
Аноним 19/12/19 Чтв 23:37:00 1551429469
20/12/19 Птн 00:08:47 1551464470
>>1551429
поменяй чтоб поддерживал несколько конкуррентных сессий
поменяй чтоб я мог инжектить собственные хендлеры без привязки к твоему Handler
и в продакшен (нет)
Аноним 20/12/19 Птн 07:23:11 1551546471
>>1551429
https://github.com/BakaVaka/SuperTcpServer/blob/master/SuperTcpServer/src/SuperTcpServer/Request.cs

запрос сам себя читает и возвращает запрос?
у стрима есть метод CopyToAsync(), которым можно скопировать весь стрим сразу в MemoryStream. все эти манипуляции с буферами непонятно.
Bytes не будет работать, если не вызван ReadAsync(). это называется temporal coupling и от этого нужно избавляться.
вообще не понятен смысл этого класса. это бесполезная обертка, которая не делает ничего.

https://github.com/BakaVaka/SuperTcpServer/blob/master/SuperTcpServer/src/SuperTcpServer/Host.cs
зачем то добавляешь сессии в словарь и они там остаются навсегда

вообще много классов, которые не делают ничего. просто пустые обертки, которые просто отправляют все клиенту обратно. это можно заменить одной строчкой.
var client = await _listener.AcceptTcpClientAsync();
var stream = client.GetStream();
await stream.CopyToAsync(stream);
Аноним 20/12/19 Птн 07:36:17 1551549472
>>1551429
>реквестирую кодревью
>переписать свой супер сервер
>Посидел часика 2
Ну и получился у тебя тцпшный хеллоуворлд, чего хотел-то?
Аноним 20/12/19 Птн 08:23:59 1551556473
>>1551546
>await stream.CopyToAsync(stream);
Сам-то пробовал такое с нетворкстримом проворачивать?
Аноним 20/12/19 Птн 08:49:56 1551561474
>>1551429
while((DateTime.Now-startTime).Minutes<10)
{;}
Здравствуйте! Я представитель гугла, как можно с вами связаться? Я бы хотел вам предложить работу старшего ведущего главного программиста за 300МММ/нсек.
Аноним 20/12/19 Птн 09:36:25 1551580475
>>1551556
Нет. Но внутри этой просто цикл чтения/записи.
Аноним 20/12/19 Птн 09:51:06 1551584476
>>1551580
КопиТу у нетворка не закончится до тех пор, пока стрим не будет закрыт каким либо способом (клоуз/диспоз/ексепшн из-за отвала клиента).
Аноним 20/12/19 Птн 10:16:05 1551597477
>>1528262 (OP)
У шарпа тоже как и у джавы дженерики во время рантайма трутся?
Аноним 20/12/19 Птн 11:52:38 1551632478
>>1551597
Нет, нормальный же язык а не жава
Аноним 20/12/19 Птн 12:32:34 1551653479
>>1551584
Так в том коде аналогичное поведение вроде бы.
Аноним 20/12/19 Птн 12:41:31 1551665480
Аноним 20/12/19 Птн 13:16:29 1551688481
>>1551653
Да тот код будет валится от любого чиха. Автора уже не раз тыкали носом и объясняли, что и почему. Но он продолжает писать херню и бредить про свой проктакол.
Аноним 20/12/19 Птн 15:12:47 1551756482
Кто-нибудь юзал asp.net core и rails или django? Стоит ли использовать asp.net core?
Аноним 20/12/19 Птн 23:16:13 1552179483
Аноним 20/12/19 Птн 23:43:31 1552198484
.jpg (163Кб, 489x649)
489x649
>>1551688
Ну блин, няша, я понимаю про что ты говоришь, но только вот дело в том, что если писать как вы говорите не получится универсально. В этом проблема, одни протоколы передают заголовком длину, у других конец отмечается разделителем, третьи вообще не предполагают что есть какой-то конец пакета, и коммуникация завершается при разрыве соединения. Я хочу чтобы все это было можно впихнуть в мой супер сервер просто описав протокол(его уровни, какие там данные, каким алгоритмом шифровать и это вот всё) и просто дописывать новые протоколы, не меняя ничего в логики приема реквестов и формировании респонсов, если они нужны. Т.е., условно, чтобы если мне нужно было новый протокол реализовать, я бы мог просто его описать, создать хэндлер и впихнуть его в сессию, и больше ничего не трогать.
Неужели ты думаешь, что я не понимаю о чем вы говорите? Блин, все я понимаю, только вот ваши советы подходят для конкретных реализаций, а моя цель - сделать мою хреновину универсальной.
Я, конечно, пока не придумал, как это все сделать чтобы мне понравилось. Например, в текущей реализации конкретного протокола(моего супер протокола), я вообще циклов для чтения не делал, у меня там стейтмашина, в которую записываю что при очередной итерации комменикации пришло, у стейтмашины - евент детекции пакета, который слушает хендлер, хендлер при срабатывании - формирует ответ и добавляет в очередь отправки. Таким образом само общение выглядит примерно так:
int readed = 0;
byte[] buffer = 0;
while(!session.Stoped){
readed = await stream.ReadAsync(buffer, 0, buffer.Lengnh);
sessionStateMachine.addAndParse(buffer,0,readed);
while(sendingQueue.Length >0)
await stream.WriteAsync(sendingQueue.Dequeue().ToBytes());}
}

В этой, более новой реализации, я от конкретики пытаюсь отойти. Плюс, меня смущает что сейчас у меня получается стейтмашина еще и сессией управляет(может закрыть ее, если пакет невалидный(слишком длинный, например), когда детектит пакет - отдает его хендлеру, который вообще на хую вертит сессию как свою шлюху, еще и в базу пишет, вообще стейтмашина и хендлер теми еще Ерохиными вышли и в них слишком много логики было и когда я попытался от них наследоваться чтобы другой протокол реализовать, слишком много нового кода пришлось присать, при том что отличие протоколов в наличии шифрования и отсутствии пары уровней).
Аноним 20/12/19 Птн 23:57:55 1552202485
Посмотрел исходники .net core и заметил что там почему-то using'и внутри неймспейсов вставляют. В чем профит? И почему, если в этом есть профит, студия их все равно засовывают в самый верх исходника?
Аноним 20/12/19 Птн 23:59:20 1552205486
Какие основные недостатки разработки шарпа под андроид или иос?
Аноним 21/12/19 Суб 00:09:00 1552215487
>>1552205
2-3 года назад замарин требовал от тебя слишком много знаний специфики обоих платформ, при этом чтобы что-то красивенькое сделать, нужно было слишком много самому писать или ебашить с помощью браузера, лол, в то время как у нативной разработки куча всего было из коробки либо на расстоянии вытянутой руки, и выходило что написать два приложения по времени и затратам было проще чем ебаться с кросплатформенностью замарина. Ко всему, 2 года назад была куча багов внутри самого замарина, которые никто не спешил фиксить. Потом я съебался из той конторы и не знаю как сейчас с замарином дела, но т.к. от тех кто остался я слышал, что в фирме решили таки нанять таки IOS и андроид разрабов, вместо того чтобы ебать замарин, думаю не особо лучше.
Аноним 21/12/19 Суб 00:52:42 1552236488
image.png (21Кб, 180x169)
180x169
>>1552215
Благодарю анон, за инфу.
Аноним 21/12/19 Суб 11:36:40 1552452489
>>1552198
Такие универсальные штуки уже сделаны - TCP/UDP. А дальше поверх их реализуешь свою логику описав протокол(его уровни, какие там данные, каким алгоритмом шифровать и это вот всё) и просто дописывать новые протоколы, не меняя ничего в логики приема реквестов и формировании респонсов, если они нужны. Т.е., условно, чтобы если мне нужно было новый протокол реализовать, я бы мог просто его описать, создать хэндлер и впихнуть его в сессию, и больше ничего не трогать.
Аноним 21/12/19 Суб 12:25:03 1552503490
>>1552452
Каждый раз заебисто писать как собирать байтики в объект чтобы работать с ними уже в твоем приложении, няша. Хочется чтобы просто описал то как данные должны выглядеть, какие типы пакетов есть и все это, и у тебя при получении таких вот данных рождались объекты нужного вида, с которыми ты уже можешь роботать и логику работы самого приложения строить.
Аноним 21/12/19 Суб 12:37:06 1552512491
>>1552503
это сериализация. и никакие серверы для этого не нужны.
вот например декларативная сериализация для любых протоколов https://github.com/jefffhaynes/BinarySerializer

хотя я считаю что этого не стоит. гораздо проще наскриптовать решение под конкретную задачу, чем писать какую-то универсальную программируемую систему.
новички особенно страданием созданием абстракций систем.
Аноним 21/12/19 Суб 13:02:09 1552543492
>>1552512
Хм, и почему не стоит-то? Выглядит удобно вроде как.
Аноним 21/12/19 Суб 14:47:25 1552769493
Поясните ньюфаг, а нахуя нужны все эти манипуляции с переопределением и использованием методов System.Object? Какой от этого профит разработчику?
Аноним 21/12/19 Суб 14:58:22 1552776494
>>1552769
ToString - потому что многие стандартные методы используют его для отображения пользователю. Например, вывод в консоль или вывод в контрол WPF/WinForms.
Equals для того чтобы стандартные методы и методы библиотек могли правильно сравнивать объекты твоих классов.
GetHashCode для того чтобы объекты твоих классов можно было безопасно помещать в хэш таблицы и использовать в качестве ключей словаря.
Аноним 21/12/19 Суб 19:05:05 1553108495
>>1544228
Проще, чем был для меня фронт потому что после ТСа большая часть вещей очевидны сходу. В делегатах и событиях за часок разобрался, хотя итт вон люди по нескольку раз спрашивают эту хуету.
Сижу вечерами в качестве развлечения за изучением шарпа пока что.
Аноним 22/12/19 Вск 02:37:33 1553512496
Перекатывайте уже, мне вопрос задать надо
Аноним 22/12/19 Вск 10:50:04 1553570497
image.png (20Кб, 840x460)
840x460
Встал вопрос накатить бэкенд на что-то типа джавы, потыкал даже в скалу и котлин (и немного вляпался в го), но потом вспомнил что сделали кроссплатформенный ASP.NET Core и чет прям проникся я шарпом.

В общем, я решил активно продолжать вкатываться в сей шедевр, но хотелось бы перед всем этим услышать все возможные подводные камни ASP.NET Core на линуксе (если таковые имеются). я программист пуганый, поэтому критику нормально воспринимаю.
Аноним 22/12/19 Вск 10:55:44 1553571498
.NET Framework 4.0 рулит! Вся хуйня, которая на фреймворках выше - она обратно-несовместима, неполноценна, и непортабельна.
Аноним 22/12/19 Вск 11:17:49 1553581499
>>1553570
>подводные камни ASP.NET Core на линуксе
Сейчас самому впердолить практически нереально даже моно, приходиться ставить бинарники
Аноним 22/12/19 Вск 11:24:13 1553582500
>>1553581
Ты имеешь ввиду собрать из исходников? А чем (в этом контексте) плохи бинарники?
Аноним 22/12/19 Вск 11:26:20 1553583501
>>1553582
Куй пойми что вообще ставится и происходит
Аноним 22/12/19 Вск 11:43:56 1553588502
>>1553583
Не пойму тебя, нормально объясни. Не поймешь какие бинари куда кладутся или что?
Аноним 22/12/19 Вск 11:49:02 1553589503
image.png (220Кб, 501x373)
501x373
Как же так? Кроссплатформенность же завезли!
Аноним 22/12/19 Вск 12:10:35 1553596504
>>1553588
Ну все вытекающие проблемы из бинарников, бля

Заблоаченые блобы со всем, что можно
Танцы с бубном, если %либанейм% отсутсвует или тем более что-нибудь динамическое типа glibc неподходящей версии
Возможные конфликты зависимостей поставленных одновременно рантайма и сдк
Ожидание, пока кто-то наконец родит пакет последней версии, победив весь депенденси хелл

Это просто пиздец, учитывая, что все давно опенсорснулось
Аноним 22/12/19 Вск 12:52:50 1553623505
>>1553596
Звучит как-то странно для официальной поддержки, тем более что для МС это официальная кормушка для azure.
Можешь реальный пример, а то выглядишь как зеленый.
Аноним 22/12/19 Вск 13:00:46 1553626506
>>1553623
>Можешь реальный пример
Попробуй собрать сам, лол
Аноним 22/12/19 Вск 13:20:51 1553636507
>>1553626
Да ну нафиг мне ее собирать, когда есть пакеты уже.
Аноним 22/12/19 Вск 13:31:28 1553643508
image.png (152Кб, 1837x979)
1837x979
Аноним 22/12/19 Вск 14:26:28 1553693509
>>1553643
Выглядит как очередная попытка майков поднять обосранные штаны. WPF мёртв, WinForms мёртв, все приложения переделывают в SPAшки, переписывая на ангуляр. В качестве фреймворка для разработки предлагают ебанный Electron, которым пользуются JS макаки (производительность соответствующая). Сделали код опенсорсным когда он уже нахуй никому не нужен, сейчас выкатят какую-нибудь забагованную хуету, ебатся с которой никто не захочет, все будут использовать уже проверенные решения. Даже не знаю на что майки надеятся.
Аноним 22/12/19 Вск 14:50:47 1553706510
>>1553693
Как бы тебе сказать то помягче, десктоп давно уже практически мертв. Что ты там ожидаешь нового? Это уже узкая ниша. В любом случае, залёт хотя-бы части шарп разработчиков на линух, сделает его хотя бы частично юзабельнее.

>забагованную хуету, ебатся с которой никто не захочет
Это слияние всех проектов, дотнет становится полностью опенсорс и един.
Надеюсь они захватят долю wasm, когда тот станет вменяемым и вопрос о выборе языка перестанет быть актуальным.

Аноним 22/12/19 Вск 14:58:51 1553714511
>>1553706
Не мёртв, если речь идёт о программах, которые работают на маке, линуксе и винде одинаково. А не для десктопа у шарпа есть только бэкенд, в котором он далеко не лидер.
> захватят долю wasm

wasm это сорт оф мёртворожденная технология. Она очень
узкоспециализированная. Почитай блог яндекса на хабре, они пытались переделать свои яндекс.карты на васм, в итоге оказалось, что этого того не стоит.

.
Аноним 22/12/19 Вск 15:13:32 1553730512
>>1553714
Да, да, мы все поняли, Шарп не нужен, Майкрософт обосрались, дотнет мертв. Съеби уже из треда, которую неделю срешь, клоун
Аноним 22/12/19 Вск 15:19:04 1553736513
>>1553714
А как же TypeScript? Он сейчас в трендах.
Тот же IoT и POS на Винде намного более вменяемый, чем лютый пердолинг с иксами на Линуксе.
Аноним 22/12/19 Вск 15:34:01 1553748514
>wasm
Это технология, которая позволит писать полноценный апплиухи без реактов и прочей тормозящей херотени. Если кучка программистов пытается сделать что-то с DOM, когда все взаимодействие происходит через js и тормозит как js. То конечно, это вызывает много вопросов.
Мне почему-то кажется, что все не до конца понимают зачем это все делают.
Кстати уже играются - Blazor.

>в котором он далеко не лидер.
Да не нужно быть в лидерах, когда ты рвешь всякие говно-спринги в плане производительности. Понимаешь, как получается, jvm - классная технология с устаревшим языком, которая местами обросла низкокачественными решениями.

Дотнет достойная технология, с качественными решениями, в которую реально инвестируют немалые ресурсы. осталось только пара балбесов линуксоидов из нулевых, которые не выросли мозгами и вечно воют с маздаем.

Аноним 22/12/19 Вск 16:32:33 1553808515
>>1553748
blazor это хуита, которая интерпретирует .net код и подгружает весь ебаный рантайм для своей работы. У этого нет будущего.

Надо ждать когда в wasm завезут сборку мусора, может тогда получится хоть как-то транслировать net код.
Аноним 22/12/19 Вск 16:43:44 1553817516
image.png (12Кб, 470x205)
470x205
image.png (40Кб, 818x414)
818x414
Может кто не объяснить, что вообще событие делает? Допустим в данном случае. Нихуя ведь не вызывается, просто this и какой-то пустой EventArgs. Такое ощущение, что просто так написали эти строчки кода. Больше нигде событие и не используется
Аноним 22/12/19 Вск 16:51:31 1553829517
>>1553817
>Может кто не объяснить, что вообще событие делает?
вызывает по очереди все методы, ссылки на которые были добавлены к этому делегату.
Аноним 22/12/19 Вск 16:52:46 1553833518
image.png (62Кб, 1238x591)
1238x591
>>1553829
Но тут же у делегата только объявление ивентов
Аноним 22/12/19 Вск 17:25:57 1553858519
>>1553833
Ты туда можешь добавить свой метод, который вызовется
Аноним 22/12/19 Вск 17:44:34 1553890520
>>1553858
>можешь добавить
В данном случае, событие ничего не делает?
Аноним 22/12/19 Вск 18:23:57 1553916521
>>1553890
Зачем делать событие, которое что-то делает?
Аноним 22/12/19 Вск 18:31:02 1553919522
>>1553916
Двачую. Событие УЖЕ произошло. Как оно может что-то сделать, лол? Какие же тупые двачеры пошли.
Аноним 22/12/19 Вск 18:42:31 1553924523
>>1553919
Нихуя не понял. Здесь какая-то хуита. Просто сделали какую-то хуйню чтобы просто так её вызвать
Аноним 22/12/19 Вск 19:20:09 1553951524
>>1553924
Блять. Событие ничего не делает. Это обработчик событий может что-то сделать.
Аноним 22/12/19 Вск 19:51:23 1553966525
>>1553817
Передает объект в метод, который подписан на событие. Ты же не можешь обработчик для каждого отдельного случая предугадать, поэтому у тебя есть event, который передает параметры и принимает методы, которые будут обрабатывать эти параметры в определенный момент времени - в данном случае во время начала/конца/прогресса копирования. Как они это будут делать - их дело, сколько их будет тоже неважно.
Удобно это и тем, что обработчиков вообще может не быть, что их можно добавлять, а потом убирать. Вот была бы у тебя программа с прогресс баром, ты бы вставил в метод, где сейчас event, обычный обработчик, который отображает прогресс загрузки файла. В итоге для кастомизации (например, если ты не хочешь чтобы этот прогресс отображался), тебя нужно было делать отдельную переменную, которая проверялась бы каждый раз. Если бы ты хотел отображать загрузку каких-то определенных файлов, то и для этого нужно было делать отдельные переменные-флаги. С событием всё это делать не нужно. Ты просто добавляешь обработчик, когда он нужен и удаляешь его, когда не нужен. Для отдельных файлов тоже самое, при этом для перезаписи логики обработки тебе не нужно лезть в код основного метода в котором это событие вызывается.
Аноним 22/12/19 Вск 20:03:06 1553971526
>>1553966
Вроде понял. Спасибо
Аноним 23/12/19 Пнд 02:53:30 1554293527
>>1553808
>когда в wasm завезут сборку мусора
Ну вот, ты уже и сам понимаешь что wasm не в конечной стадии сейчас.
Аноним 23/12/19 Пнд 04:07:08 1554311528
>>1554293
...и местами он будет даже не про html другой вопрос как на это согласился гугл и эпл, так как это будет прямой конкурент мобильным приложениям
Аноним 23/12/19 Пнд 10:59:46 1554425529
>>1554311
wasm это не замена, а дополнение. Смысла заменять им мобильные приложения нет, потому что по скорости будет проигрывать. wasm выигрывает только в тех местах, где нужны глубокие и долгие вычисления.
Аноним 23/12/19 Пнд 13:59:19 1554547530
>>1554425
Про замену ты сам сейчас написал.
Полноценные сайты-приложения, убьют потребность в половине существующих мобильных круд-приложений.
В общем, риа-сайты очень невыгодны мобильным вендорам, не зря же флеш и прочие плагины так убивали.
Аноним 24/12/19 Втр 11:36:04 1555375531
Немного не в тему, но Version controll thread is dead, so
Объясните на пальцах, как работать с Git-ом командой. Везде пишут, что задача проект дробится на задачи и над проектом в одно время работают N человек, которые создают N веток. У меня вопрос: Как мерджить в master, чтобы код добавлялся, но не выпиливал куски другого кода. Объясню еще проще: Если проект разбить условно по версиям:
Path1 version = 1.0
Path2 version = 1.0
Path3 version = 1.0
Над проектом работает 3 человека, каждый работает над своим куском. Когда начинаем мерджить в master, то что получается:
Мерджит 1 человек свой Path1:
Path1 version = 1.1 (условно)
Path2 version = 1.0
Path3 version = 1.0
Мерджит 2 человек свой Path2:
Path1 version = 1.0 (тут должен быть 1.1, но когда человек начинал разрабатывать проект, то версия его ветки была 1.0 и соответственно ее и замещает в master)
Path2 version = 1.1
Path3 version = 1.0
Спасибо за ответ
Аноним 24/12/19 Втр 14:08:46 1555467532
>>1555375
уже подсказали в Version Control треде
Аноним 24/12/19 Втр 19:49:02 1555700533
Всем похуй на перекат?
C !ndViRcEtb2 24/12/19 Втр 19:55:56 1555704534
Аноним 14/01/20 Втр 09:20:21 1572367535
Привет, ребят, как можно в асп в конфигах (xml которые) сослаться через configSource на файл, который лежит в директории, которая на уровень выше, чем та, где я храню свой конфиг?
Аноним 18/01/20 Суб 01:50:03 1576141536
через ../ попробуй
Аноним 23/01/20 Чтв 11:28:18 1581354537
>>1576141
никогда, configSource требует расположения файла в той же директории или директорией ниже
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов