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


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

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
1176 120 229

C#/Сишарп/.NET Тред #19 /csharp/ /csharp/ Аноним 23/04/20 Чтв 16:05:13 16655401
csharp[1].png (331Кб, 1044x1122)
1044x1122
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем 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, делать намного сложнее. Оба будут поддерживаться в .NET Core, поэтому не стоит беспокоиться о будущем, если шлёпаете формочки.

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. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, смотри сюда - https://docs.microsoft.com/ru-ru/visualstudio/cross-platform/cross-platform-mobile-development-in-visual-studio?view=vs-2019.
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials

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

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

Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 8.0: https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8

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

Прошлый тред тонет здесь: https://2ch.hk/pr/res/1618705.html


Аноним 23/04/20 Чтв 16:05:46 16655422
1200px-.NETCore[...].png (66Кб, 1200x1200)
1200x1200
9. Что почитать?
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет.
- C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- Pro C# 7: With .NET and .NET Core (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.

10. Более хардкорный материал
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.


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
Аноним 23/04/20 Чтв 16:11:32 16655493
Судя по вопросам в тредах, C# медленно переползает в состояние Delphi. Видимо так и кончит. Нормальный язык в шарагах преподавать не будут. Энивей, посмотрим на .NET5, если совсем в пизду скатиться - С подобный синтаксис знаю, перекачусь в джаву на джуна или чего помоднее.
Кто думает, что это нытье - поспрашивайте в комьюнити сколько галер выкинули на мороз мин.NETчиков. Джуны с плеча в первые же дни полетели после обвала фондового рынка.
Аноним 23/04/20 Чтв 16:27:29 16655634
15840341053751[[...].jpg (134Кб, 1051x797)
1051x797
>>1665534 →
>>1665263 →
>>1665470 →
>Ряяяя пачиму питухон можит а шарп ниможит!!
>НЕ ВРИИ ПИТУХОН МОЩНЫЙ ОН ВСЁ МОЖИТ!!

Не перестаю с петухонщика-неосилятора. Я думал они хоть немного умнее жопаскриптеров, но ошибался.
Аноним 23/04/20 Чтв 16:32:05 16655675
>>1665549
>3 178 вакансий «C# developer»
>2 388 вакансий «.net developer»
>6 070 вакансий «Java developer»
>5 566 vs 60 070

Даже с учетом того, насколько много легаси дерьма в жабе, C# и .net уже наступает ей на пятки. Поэтому, хорошая попытка , жабоеб, но нет.
Аноним 23/04/20 Чтв 17:07:09 16656236
>>1665563
Не понимаю, зачем ты гадишь под себя, и зачем мне врать.
Аноним 23/04/20 Чтв 17:19:13 16656517
>>1665623
Ты не врёшь, ты просто умственно отсталый дегенерат-петухонщик. Работа с файлами происходит при помощи обращения к API системы на которой запущена программа. И у этого API нет условий вида "if (PLName === "Python") file.GrantAccess()".
Аноним 23/04/20 Чтв 17:24:20 16656548
всё бы заебись, но учить дохуя в этом шарподотнете, а зарплатки невысокие
Аноним 23/04/20 Чтв 17:50:44 16656729
Аноним 23/04/20 Чтв 18:00:05 166568110
>>1665672
В долларах США за год, всё стандартно. В штатах же не практикуется указание месячной ЗП.
Аноним 23/04/20 Чтв 18:03:09 166568311
>>1665681
Мне интересно было, что тот чувак имел ввиду. Он вроде сказал что он из мордора, так что мог по привычке в месяц назвать.
Аноним 23/04/20 Чтв 18:08:55 166569212
>>1665567
извини, за неприятный пост
>наступает ей на пятки
с этого в голос проиграл. Каждый раз угораю, когда сравнивают Java с высером мелкософтов. И что у тебя за биржа, которая C# делит с .NET? Или .NET вакансии это типо Visual basic чи шо? Энивей, удачи с этими 5.5к вакансий нет
Аноним 23/04/20 Чтв 18:16:44 166569613
>>1665692
А то мало вакансий, когда фигачат джаву в объявлении, а потом оказывается что им нужен го, скала, кложа.
Аноним 23/04/20 Чтв 18:34:09 166570814
>>1665549
>Кто думает, что это нытье - поспрашивайте в комьюнити сколько галер выкинули на мороз мин.NETчиков
Без хуйни - ни одного дотнетчика с галеры не выгнали. Со скриптохуйни вроде пайтона, жс - выкинули.
С жабы и дотнета - нет
Аноним 23/04/20 Чтв 18:40:57 166571515
>>1665708
разумеется, на скриптохуйне стартапы и прочие динамично развивающиеся продукты, которые любой кризис легко сдувает, а на говне мамонта вроде кобола жабы и делфи сишарпа - масштабные легаси-конюшни крупных проектов, которые более устойчивы
Аноним 23/04/20 Чтв 18:46:48 166572016
>>1665651
Мой бугурт был в том, что питон получает доступ к файлу без ебли одной строкой, а в сисяре я до сих пор не понял, с каким еще бубном надо сплясать, чтобы все заработало. Кроме как копировать файл, читать его и удалять, но это пиздец, качественный велосипед.
Аноним 23/04/20 Чтв 18:48:39 166572317
>>1665567
>3 178 вакансий «C# developer»
>2 388 вакансий «.net developer»
Это у тебя непересекающиеся множества?
Аноним 23/04/20 Чтв 19:18:35 166574018
Как сейчас обстоят дела с вышкой? Доучиваюсь в этом году на инженера-строителя, шарпом занимаюсь примерно год но еще вакансии не смотрел. Будут ли требовать профильную вышку или и с этой пойдет?
Аноним 23/04/20 Чтв 19:19:10 166574319
>>1665692
Для .NET можно писать на любом языке, который находится в списке поддерживаемых для этой платформы, разница минимальна.
Аноним 23/04/20 Чтв 19:21:49 166574920
>>1665720
Но ведь ты сам себе в ногу выстрели в своём коде на шарпе, а виноват почему-то шарп.
И в шарпе вообще такие элементарные операции за одну строку делаются:
File.WriteAllText или File.AppendAllText
Аноним 23/04/20 Чтв 19:22:22 166575021
>>1665723
Не у меня, а у хедхантера.
Аноним 23/04/20 Чтв 19:24:29 166575522
>>1665740
Также как и всегда - она не нужна если ты обладаешь необходимыми навыками.
Сразу скажу, что для работы недостаточно "занимаюсь примерно год". Для работы ты помимо языка должен уметь работать с базами данных, знать и уметь применять базовые алгоритмы, знать и уметь применять различные структуры данных, а также разбираться в принципах и паттернах проектирования.
Аноним 23/04/20 Чтв 19:27:08 166576023
>>1665749
Мне нужно прочитать файл, а не писать в него. И он не читается, потому что якобы занят процессом.
Аноним 23/04/20 Чтв 19:29:29 166576324
>>1665760
>нужно прочитать файл
File.ReadAllText
>потому что якобы занят процессом.
Да-да, этот бред я уже слышал. Для шарпа он занят, а для петухона он не занят. Магия да и только.
Аноним 23/04/20 Чтв 19:42:23 166577625
>>1665755
Если только в жс не вкатываться. Там можно жопой код писать, лишь бы контент на странице отображался.
Аноним 23/04/20 Чтв 21:00:29 166585826
image.png (37Кб, 1144x320)
1144x320
Сап. Работаю с виндоус формс в вижуал студио, нужно чтобы при указании порядкового номера студента по журналу, в таблицах(Или в таблице, не важно как, лишь бы показало) выводились данные из связанных с ним таблиц, т.е. расширенная инфа о студенте. Не подскажете как это сделать? Я просто ньюфаг, знаю только как в датагридвью выводить таблицу целиком, но мне нужна именно инфа о конкретном человеке.
Аноним 23/04/20 Чтв 21:08:58 166586427
>>1665858
Ок, я понял, разобрался. Спасибо, если кто-то хотел помочь, но теперь вопрос закрыт.
Аноним 24/04/20 Птн 08:44:17 166610128
>>1665763
>ReadAllText
Не, не хочет. Занят.
Аноним 24/04/20 Птн 09:10:50 166611129
>>1666101
Пиши на петухоне. В шарпе всё настолько плохо, что ему даже доступ к файлам перекрывают...
Аноним 24/04/20 Птн 09:21:21 166611630
>>1666111
>Пиши на петухоне
Хотелось бы, но заставляют на решетке.
Только что починил, добавив третий костыль. Просто невероятно. Господи, спасибо тому чуваку с форума, что написал решение, прежде чем закрыть топик.


using (FileStream stream = new FileStream(logFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
  using (StreamReader reader = new StreamReader(stream))
  {
    while (!reader.EndOfStream)
    {
      string line = reader.ReadLine();
      //Тут уже можно делать с линией все, что угодно
    }
  }
}


А ты, конечно, токсичный чувак, но спасибо все равно, что пытался.
Аноним 24/04/20 Птн 10:35:20 166617631
>>1666116
Так это же такой же код, как и тут >>1665470 → . Но там ты писал что не работает, а тут работает. Подозрительно.
Аноним 24/04/20 Птн 10:58:54 166619432
>>1666176
Там не было
>while (!reader.EndOfStream)
Без него не работает, с ним работает. Отака хуйня.
Аноним 24/04/20 Птн 11:11:30 166620233
>>1666194
Хм

ОТКРЫТЬ ПОТОК
@
ПРОЧИТАЛ ВСЁ
@
ЖДЕШЬ И ЖДЕШЬ
@
А КОНЦА ВСЕ НЕТ И НЕТ
Аноним 24/04/20 Птн 11:12:45 166620334
>>1666111
Это ты еще на сирашпе не подключал одну базу, вторую, менял их местами.
В отношении БД - C# та еще параша. Ну я не говорю про модные фреймворки на них
Аноним 24/04/20 Птн 11:13:30 166620435
15849625600730.png (223Кб, 512x387)
512x387
>>1665743
>который находится в списке поддерживаемых для этой платформы, разница минимальна.
>разница минимальна.
>минимальна.
>>1665696
в твоем селе на заборе вакансии?
>>1665708
Lucky one. У нас конвеер трейни переходящих в джунов на галере. 6 тел с плеча на мороз с досрочным разрывом контракта. (4 трейни, 2 джуна). Они там ко-ко-кали что то, что дених нет и все такое - под сраку сапогом
Аноним 24/04/20 Птн 11:14:52 166620636
>>1666204
> (4 трейни, 2 джуна).

Бохато живёте.
Вот другие питушинные языки это да.
Пришел на них трейни, так и сидишь до миддла и довольно урчишь, получая больше и больше компенсацию
Аноним 24/04/20 Птн 11:18:26 166620837
>>1666206
Ты бы знал путь от трейни до джуна у нас в галере, ты бы охуел. Лычки мидла выдают только пердунам, вроде меня, которые по 5+ лет сидят. Обычно съебывают в другую галеру. Я просто проигрываю с этим мамкиных программистов, которые думают, что .NET это платформа богов. Ожидание-реальность...
Аноним 24/04/20 Птн 11:21:27 166621138
>>1666208
Как хорошо, что меня не взяли джуном на C# .net Галеру
В итоге без опыта на миддла взяли node.js ковырять. Адекватное руководстве превыше всяких лычек
Аноним 24/04/20 Птн 11:22:39 166621239
>>1666208
Но почему ты не уйдешь на 300к с 5+ лет опыта?
Аноним 24/04/20 Птн 11:24:05 166621340
>>1666116
Что -то ты не договариваешь. СтримРидер просто вернет налл, если достигнут конец потока. Сделай видео, где без проверки EOS выбрасывает ошибку доступа к файлу, а с проверкой читает нормально. Потому что того, о чем ты пишешь просто не может быть. Скорее всего ты еще что-то поменял, что разлочило файл.
Аноним 24/04/20 Птн 11:27:29 166621541
>>1666212
Так блять, не задавай неудобных вопросов. Он же Дартаньян и превозмогает, а остальным проще, они пишут не на дотнете и получают деньги за нихуя.
Аноним 24/04/20 Птн 11:32:00 166621942
>>1666215
Действительно, что там сложного там. If,else,0,1
Аноним 24/04/20 Птн 11:34:12 166622043
>>1666211
Двачую. У нас на джуна вопросы сеньерские задают, а заставляют говно палкой ковырять, так что все ок
>>1666212
>>1666215
думаете типо 5 лет и сразу $5к/m? Я скажу по секрету, количество лет в разработке не значат ровным счетом нихуя, если вас оценят, как дебила. Собеседовали питонщика, которому в голову моча стукнула перекатитсья в .NET (редкий дебил). Вот у него около 7 лет было питонистом, но в решетках он не знал нихуя, кроме базовых вещей, которые аналогичны в питоне.
Короче, вкатитесь - ощутите жижу прелести ОЙТИ СНГ. Я пару тредов назад писал, что не нужно сравнивать работу дэва в СНГ и европке/америке - абсолютно разные вещи.
Аноним 24/04/20 Птн 11:39:22 166622344
>>1666220
При чем тут это. Зачем ты 5 лет жрешь говно, если нет такая параша?
Аноним 24/04/20 Птн 11:46:22 166622645
>>1666116
Не перестаю охуевать с долбоеба. File.ReadAllText у него не работало, а добавление !reader.EndOfStream магическим образом открыло доступ к файлу.
Надеюсь, что это даун пытается троллить, а не реальный человек.
Аноним 24/04/20 Птн 11:47:47 166622846
>>1666226
Все так. Зачем мне пиздеть?
Аноним 24/04/20 Птн 11:48:09 166622947
>>1666220
>собеседовали питонщика, которому в голову моча стукнула перекатитсья в .NET (редкий дебил). Вот у него около 7 лет было питонистом, но в решетках он не знал нихуя, кроме базовых вещей, которые аналогичны в питоне.

Питонщик выше очередное подтверждение долбоебизма питонщиков и других динамикопетухов.
Аноним 24/04/20 Птн 11:48:54 166623048
>>1666228
Так покажи код, который без !reader.EndOfStream будет выбрасывать эксепшен из-за отсутствия доступа к файлу. Тебе же пиздеть незачем.
Аноним 24/04/20 Птн 11:54:29 166623449
>>1666230
Он наверняка сразу поток открывал, а потом пытался с открытым потоком через ReadAllText() читать.

мимо
Аноним 24/04/20 Птн 11:54:35 166623550
>>1666223
>При чем тут это
вкатыши и прочая грязь думает, что 5 лет на жопе отсидел, значит Senior. А вот и хуй
>Зачем ты 5 лет жрешь говно, если нет такая параша?
меня устраивает. 2-3 проекта, знакомый мне стэк, хорошая зарплатка, зона комфорта. Перекатываться куда то - это терять время, деньги, энергию
>>1666229
может он и хороший дев, но точно не .NET-а. Ему дали офер на джуна с ЗП в 4 раза меньше его, он его принял. Отпинал хуи 2 месяца и сказал, что это все хуйня и я уебываю
Аноним 24/04/20 Птн 11:55:20 166623751
>>1666229
Я слабо представляю себе такого питониста.
Мир открытых систем, бесплатное IDE, OS, миллион тыщ либ под питухон. Хочешь - ML BIG DATA, хочешь - скрипты, парсеры пиши, или веб во всех направлениях.
Нет блять, поиграл 7 лет с питоном и пересел на иглу Microsoft с анальзыми зондами
Аноним 24/04/20 Птн 11:59:54 166624152
>>1666237
ты просто не знаешь мотивов таких людей. На собесе - глаза горят, как все заебись писать под шиндовс нет, а по факту - 2 месяца проебаного времени и увольнение. Может он зашел в тред на дваче и почитал, как все охуенно снова нет, что ЗП овердохуя, что проекты интересные.
Аноним 24/04/20 Птн 12:10:21 166625053
>>1666241
Ну не знаю, есть легендарные посты про
- Хочу переехать в ДС\ДС2 где-нибудь на 60-100к
- Ты сишарпер чтоли?
Аноним 24/04/20 Птн 12:13:28 166625754
>>1666250
60-100к (не знаю, сколько это в долларах, 1к+ походу где то) - это медиана мидла, премидла. Вполне реальная ЗП
>- Ты сишарпер чтоли?
да, уже писал выше
Аноним 24/04/20 Птн 12:23:26 166626655
>>1666230
Я ж кидал.


List<char> list = new List<string>();
using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
  using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
  {
    string line = reader.ReadLine();
    list.Add(line[0]);
  }
}
return list;
Аноним 24/04/20 Птн 12:26:47 166627156
>>1666257
А знаешь сколько получает мидл питухона? То-то и оно. даже в регионах 120к можно
Аноним 24/04/20 Птн 12:43:57 166628957
>>1666266
Так у тебя функции main нет, такое не скомпилируется.
Аноним 24/04/20 Птн 12:48:28 166629558
>>1666289
Анон то и не знает, как код показывать людям
Аноним 24/04/20 Птн 12:48:45 166629759
Аноним 24/04/20 Птн 12:51:33 166630060
>>1666295
Просто петухоно-опущенец привык, что перед господами нужно иметь вид лихой и придурковатый.
Аноним 24/04/20 Птн 12:51:54 166630161
>>1666297
Не за что. Обращайся если еще вопросы будут.
Аноним 24/04/20 Птн 13:13:58 166631062
Вопрос наверно тысячу раз задавался, но таки просьба сориентировать.
Начинать с Шилдта или с Троелсена?
Залетный тестировщик
Аноним 24/04/20 Птн 13:17:42 166631463
>>1666266
А ничего, что тут у тебя читается одна строка, а в варианте с ЕОС все строки? Это, конечно не влияет на доступ к файлу, но замена кода неравнозначная.
Аноним 24/04/20 Птн 13:33:55 166632564
>>1666310
С чего угодно. важно то, на какой книге ты кончишь свой путь
Аноним 24/04/20 Птн 13:47:44 166634565
>>1666310
Начинаешь с Троелсена.
Потом закрепляешь Альбаири с его C# in a Nutshell
Потом читаешь книгу по паттернам (Agile Principles, Patterns, and Practices in C#, очень годная)
После чего переходишь на изучение современного .NET Core (C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development Fourth Edition)

Далее следует почитать что-нибудь по работе с базами данных. После чего можешь закрепить знания путём более тщательного изучения алгоритмов и структур данных.
Аноним 24/04/20 Птн 13:48:50 166634866
>>1666314
Зачем с долбоебом разговаривать, который понял, что обосрался просто виляет сракой и наверно думает, что он охуенно всех затроллил.
Аноним 24/04/20 Птн 13:56:25 166635867
15295149790830.png (223Кб, 413x395)
413x395
>>1666266
>List<char> list = new List<string>();
Да, проблема наверняка в языке.
Аноним 24/04/20 Птн 14:03:10 166636368
Аноним 24/04/20 Птн 14:15:54 166637869
>>1666358
Да, ошибка в компиляторе
Аноним 24/04/20 Птн 15:01:19 166641370
>>1666271
мне насрать сколько на пайтоне зарабатывают, я скажу больше - мне насрать сколько на # зарабатывают. Если выпилюсь из этого проекта (галеры), то скорее всего в СНГ больше работать не буду, а съебу за бугор джуном любого стэка, который мне дадут (желательно Rust/Kotlin/Golang). Просто Ойти СНГ - это такая параша блять, что от нее воняет. В прямом смысле слова, просто несет говном. И тут даже не дело в том, на каком стэке ты сидишь и чем занимаешься, все сводиться к одному - бадишопы. Для заказчика ты всегда будешь ебаным индусом из страны 3 мира. Особенно проигрываю с додиков, которые получаю лычку на комуникацию с кастомером без ПМ-а, где разговор сводится не то, что к индусу, а к умственно отсталому дебилу, который даже не может в английский Давайте пизданите мне, вкатывальщики хуевы, что ХУЯНДЕКС, МЕИЛ.СРУ, ВАРГЕЙНИК, да это ты такой ущербный, кококо- это 1%, уебки.
>>1666310
иди моки учись делать и интеграционные тесты писать, обезьяна ебаная, а не решетки учи. В них и без тебя дебилов хватает
Аноним 24/04/20 Птн 15:10:08 166642171
>>1666413
>В прямом смысле слова, просто несет говном.
>LITERALLY
>всё равно использует переносное значение
Идиот.
Аноним 24/04/20 Птн 15:44:44 166645772
>>1666413
дурачок, за рубежом будут с тобой веслать те же индусы
и говна там хапнешь не меньше
Аноним 24/04/20 Птн 16:03:19 166647773
>>1666421
>В прямом смысле слова, просто несет говном.
Сына, прийдешь ты на проект, кинут тебе абсолютно рандомный таск, например запилить аутентификацию на web API под реакт, а версия .NET-а - 3.5 допустим, где скафолдингов нет и на SOF весь код уже под 4.5+, даст долбоеб ПМ эстимейт в 2 часа на таск. Когда после 8 часов дрочки с этим говном над тобой будут стоять ПМ, фронт, ментор и все остальные, ты будешь не только сраться под себя, но и ссаться.
>>1666457
дурачек, который интерпрайза в глаза не видел что то пердит из под шконки. Я хоть сейчас готов рядом с индусом сидеть и закрывать таски, главное чтобы это был один проект не бадишопа

Мне влень на самом деле доказывать то, чего вы никогда не видели возможно никогда и не увидите, но разминайте свои анусы на то, что когда вас возьмут на проект если возьмут, то найдется такой ментор, которому от слова совсем похуй на вас, то тогда понюхаете, чем пахнет СНГшное Ойти. Все хотят килобаксы рубят, а рубят соленые хуйцы за щеку.
Уже писал в нытье треде, что даже если вас и возьмут на стажировку/исп. срок - велика вероятность, что вы там не отработает после оговоренного срока, а вас просто выставят на улицу. Сам работаю в такой галере, где джунов, трейни в хуй не ставят.
Это не нытье, это жизненный опыт. Поэтому я и пишу, после закрытия проекта - бугор и только.
Аноним 24/04/20 Птн 16:09:44 166648174
>>1666477
>ты будешь не только сраться под себя, но и ссаться.
>продолжает говорить фигурально, даже не осознавая этого
LITERALLY
Аноним 24/04/20 Птн 19:14:49 166664675
>>1666413
Типичная токсичная мелкобуква. Обдристал тебе твое и без того грязное хлебало.
Аноним 24/04/20 Птн 19:42:49 166666576
vs.png (14Кб, 577x424)
577x424
>>1665540 (OP)
>Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
А почему она все равно требует лицензии?
Поставил студию некоторое время назад и вот у нее закончился ознакомительный период. Я не хочу плотить, ибо я просто для себя программирую, решаю задачки. Пиратку тож не хочу. Получается, бесплатность коммьюнити-версии - это пиздеж?
Аноним 24/04/20 Птн 19:46:05 166666977
>>1666665
Так зарегай учётку, в чём проблема?
Аноним 24/04/20 Птн 19:58:59 166667878
>>1666481
>>1666646
извините за неприятные для вкатышей посты
Аноним 24/04/20 Птн 20:07:26 166669379
>>1666669
Войти не получается, когда пытаюсь то получаю сообщение об ошибке Не удалось обновить данные для учетной записи. Ссылка на объект не указывает на экземпляр объекта
Аноним 24/04/20 Птн 20:14:13 166669880
Сеньёры, помогите. Нужно ли в интерфейс записывать метод, который только реализует сложный сеттер для свойства или можно опустить и только в имплементации реализовать?
Аноним 24/04/20 Птн 20:14:48 166669981
Аноним 24/04/20 Птн 20:36:24 166671282
>>1666698
Если сеттер является частью интерфейса, то вноси, если нет, то нет. Сори, но на твой вопрос сложно дать другой ответ.
Аноним 24/04/20 Птн 20:56:35 166671783
>>1666712
Да я вообще запутался со всем этим. Налицо какое-то излишнее дублирование и фрагментация. Поля, свойства, геттеры/сеттеры, методы. Я ебал. Ну типа рекомендуют поля делать приватными, а во вне выпускать свойства. Окей. Есть ещё авто-свойства, когда можно не пилить поля(они там сами пилятся вроде как). Сколько логики писать в этих геттера/сеттерах, когда писать отдельные методы, куда пихать резальтат этих методов, просто присваивать свойству или в геттерах сеттерах реализовывать. Короче в голове каша ебаная. А тут ещё интерфейсы, абстрактные классы, классы и это всё друг на друге. Пиздос. И это только азы, что же будет дальше(дальше будет дроп).
Аноним 24/04/20 Птн 21:06:21 166672084
>>1666698
Если метод общий для всех наследников, то реализуешь, если нет, то нет. Вообще, в интерфейсах реализовать нужно как можно меньше, интерфейс это шаблон, который не знает ничего кроме сигнатур. Если хочешь реализовывать, то значит тебе нужен абстрактный класс.
Аноним 24/04/20 Птн 21:07:51 166672185
>>1666717
Так нахуй ты во всё это полез, если не изучил принципы и паттерны проектирования с применением ООП? Очевидно, что ты хуйню делаешь, которая тебе никакой пользы не принесёт.
Аноним 24/04/20 Птн 21:12:02 166672486
>>1666720
Не, про интерфейсы я понял, реализую я как раз всё в классе.

>>1666721
Чел, мне понадобилось пару программ мелких, я решил под шумок подучить шарп, какие нахуй паттерны? Скажи спасибо, что я не бездумно хуярю лишь бы работало, а пытаюсь разобраться. Лучше бы подсказал, куда копать, а не выёбывался.
Аноним 24/04/20 Птн 21:19:21 166673387
>>1666724
Так я тебе и сказал куда копать, долбоеб. Либо читаешь литературу по паттернам проектирования и принципам SOLID, либо хуячишь свой говнокод. Третьего не дано.
Аноним 24/04/20 Птн 21:23:27 166673588
>>1666733
Всё, что ты высрал, это претензии, почему я такой тупой и не делаю, как сеньёры.
Аноним 24/04/20 Птн 21:31:46 166674789
>>1666724
Зачем тебе выносить изменение свойства в отдельный интерфейс? Если ты вынесешь этот сеттер в интерфейс, получается, что ты будешь позволять другим обьектам вызывать сеттер и изменять тем самым внутреннее состояние этого обьекта. Не знаю, что ты хочешь сделать, но выглядит уже криво.
Если хочешь менять стратегию изменения свойства на лету, то можно вынести это в отдельный интерфейс, и потом его инжектить.
Но это тоже странно.
Короче приведи пример, что ты хочешь сделать и зачем, я тебе подскажу.
Аноним 24/04/20 Птн 22:19:41 166677890
>>1666735
Вполне закономерно, учитывая твоё желание "хочу делать как сеньор, но учить ничего не хочу, научите меня не видя моего кода, прочитав мои мысли".
Аноним 24/04/20 Птн 23:22:48 166682691
>>1666717
public class Zalupa
{
public int Number {get; set;}
}

Для начала делай так и не выебывайся.
Вообще не понимаю этого дрочерства - пока у тебя не возникнет потребности в интерфейсах, абстракных классах, делегатах, дженериках, dependency inejctor'ax - не лезь туда вообще нахуй. Без опыта со слезами и с кровью - всё это выветрится быстро.

Но я на продакшене учился by hard way, переписывая и улучшая, так что не знаю, может на собеседованиях джунов мудаки этому дрочат. Вообще не надо там по углам курить, дрочить, занимайся разработкой, возьми пет проект / устройся на работу и просто пиши чтобы не разваливалось высирая сопли на ходу, потом как говно попрет - если не тупой - то начнешь расти и переписывать и никакие учебники и объяснения тебе не нужны будут.

/thread
Аноним 24/04/20 Птн 23:32:41 166684392
>>1666826
Мань, это актуально было лет 10 назад, сейчас если ты внятно не ответишь на вопрос "Что вы знаете об акрониме SOLID?", приведя примеры и расписав каждый принцип. Тебя сразу нахуй пошлют, даже алгоритмические задачи не попросят решить.
Аноним 25/04/20 Суб 00:05:12 166688893
>>1666843
Кекус, работаю миддлом - вообще кроме акронима ничего о SOLID не слышал.
Аноним 25/04/20 Суб 00:45:20 166690894
>>1666888
галерный мидл в тренде, я спокоен
Аноним 25/04/20 Суб 01:17:21 166692195
15849625600730.png (223Кб, 512x387)
512x387
>>1666843
>алгоритмические задачи
Аноним 25/04/20 Суб 07:46:19 166698096
>>1666888
Ну такой же долбоеб, как и тот выше. Ошибка выжившего во все поля. Попробуй пройти собес, тебя даже на позицию джуна не возьмут.
Аноним 25/04/20 Суб 13:17:22 166712897
>>1666980
Риночек порешал, бывшие мидлы теперь на трейни-джунов не годятся
Аноним 25/04/20 Суб 15:31:44 166721898
Поясните тупому. Можно ли как-то сделать так. чтобы дженерик тип принимал только числовые значения? Скажем, вот я делаю класс Calculator<T>, хочу чтобы в нем были метод T Add(params T[] items) и не хочу чтобы кто-то впихнул какой-нибудь string в качестве типа.
Аноним 25/04/20 Суб 15:44:43 166722299
>>1667218
Calculator<T> where T: byte, short, int, long {}
Аноним 25/04/20 Суб 16:07:58 1667233100
>>1667218
where T : unmanaged, IComparable, IEquatable<T>
Аноним 25/04/20 Суб 16:10:11 1667236101
>>1667233
Короче примерно так, но я бы проверил типы внутри функции все же, через typeof.
Аноним 25/04/20 Суб 16:56:35 1667251102
>>1666980
>>1667128
Два месяца назад перекатывался на 1.5х по зп, так что вы мимо. Ах да, я как правило резюме никуда не посылаю, и половина фаундеров энтерпрайзных продуктовок в моем мухосранске знает меня в лицо и увольняюсь с периодом оповещения в 5 месяцев. Таки рыночек порешал. Мани, жду вас на собесе, подготовил задачки по методичке.
Аноним 25/04/20 Суб 16:58:08 1667253103
>>1667251
Вы как бы вообще не поняли рыночек: C# это про бизнес, бизнес, формы, бизнес-энтерпрайз,. За алгоритмами идите Идрис дрочите советую.
Аноним 25/04/20 Суб 17:28:59 1667276104
>>1667251
>>1667251

>и половина фаундеров энтерпрайзных продуктовок в моем мухосранске знает меня в лицо и увольняюсь с периодом оповещения в 5 месяцев

Так почему мимо то? Очевидный опездол-кабанчик, который вкатился в IT на его восходе, когда достаточно было знать базовый синтаксис одного языка. Теперь тебя берут только по знакомству, а самое смешное, что даже на должность сеньора не дают встать. Ты сам только что себя обоссал, миддл. Теперь тебе и остается только фантазировать о том, что "да это не я тупой, просто языку этого не нужно", смеша остальных.
Аноним 25/04/20 Суб 18:08:28 1667314105
>>1667276
Да ладно тебе. Он тут самый успешный сеньор-помидор. Программист #1 своего мухосранска
Аноним 25/04/20 Суб 18:26:36 1667325106
>>1667276
>на должность сеньора
Это которые 25-летние или с тремя годами опыта? Если нет хотя бы 10-15 лет - не нызывай себя сеньйором.
Аноним 25/04/20 Суб 18:29:24 1667328107
>>1667325
Можешь и в 15 быть сеньором, вся информация уже давно в открытом доступе, времена "набить шишек чтобы понять" уже давно прошли.
asp net core webapi Аноним 25/04/20 Суб 19:48:42 1667430108
Хочу сделать policy чтобы добавлять её к контроллерам которая будет непущать если IP в банлисте. Пишут что надо делать добавлять новую policy и там делать policy.Requirements.Add и добавлять свой requirement и AuthorizationHandler. Но дело в том что в классе AuthorizationHandler фреймворк даёт объект ClaimsPrincipal чтобы я типа по клеймам делал авторизацию. А чтобы клейм добавить нужно как-то логинить пользователя, jwt ему там присваивать или куки, а я не хочу этого делать, не хочу логинить пользователя, хочу чтобы анонимно запросы работали, только айпишник проверялся. Надо кастомный AuthenticationHandler пилить где добавлять еще клейм для ip я полагаю? Или какие еще решения видите?
Аноним 25/04/20 Суб 20:00:44 1667451109
>>1667430
У тебя есть аттрибут AllowAnonymous для метода в контроллере, есть HttpContext с IP адресом. Остальное как бы от твоей фантазии зависит.
Но я бы в Middleware фильтр бы сделал кастомный и все. Просто банлист для определенного метода это странно.
Аноним 25/04/20 Суб 20:16:29 1667466110
>>1667328
Всё, я понял, в 15 лет сразу поставим сеньйора софт для боинга, энтерпрайз для больничек, ну или на крайний случай финансовый хайлод пилить, всё ж в открытом доступе давно, бро.
Аноним 25/04/20 Суб 20:33:00 1667485111
>>1667466
Нет, ты не понял. У тебя ведь логика уровня "не служил в армии - не мужик".
Аноним 25/04/20 Суб 21:15:09 1667547112
Аноним 25/04/20 Суб 21:22:04 1667556113
>>1667466
Для больничек и финансовый хайлоад (сбер, лол) очень часто имбецилы и пишут, особенно когда больнице на хайтек карман жмёт или туда начинает влезать гос-во. Приходилось проходить.
Для боингов планка конечно крутая, но и туда прорываются. Если разработка не для летающих сараев, то тебя будут драть по устройству cpu, ram и прочему байтойобству.
Аноним 25/04/20 Суб 21:25:10 1667562114
>>1667451
>>1667547
Я сделал просто милдвар после аутентификации который если пользователь не аутентифицирован все таки кое где есть логин, но для других целей даёт ему клейм с айпишником, а дальше уже в авторизации как обычно по этому клейму проверка
Аноним 25/04/20 Суб 22:07:46 1667607115
>>1667556
Ну так я и говорю, что после 30 лет опыта доверить простые датчики не каждому можно, а тут 15 летнего сеньйора, прошедшего книжки по алгоритмам и сделавшего пару десяток простых приложений от веб-сайтов до движка для видеоигр и своего компиляторя В ЛУЧШЕМ СЛУЧАЕ будут садить делать софт с тяжелейшим domain и requirements, а в худшем речь идет про школьника, которые веб-сайты по туториалам научился клепать/скрипты на юнити/приложения для андроида.

>>1667485
Именно так, но не про армию, а про то, что уровень сеньйора - это уже не уровень просто программирования, это уже специализированные знания computer science/научной области или бизнеса в которой работает программист. Конечно, если вы дженерик-конюшна-abstract приложения клепаете, то да, "сеньйором" стать в 15 лет можно. Поэтому нехуй себя сеньйорами называть после 5 лет клепания mvc приложений для разных галер.
Аноним 26/04/20 Вск 10:49:34 1667853116
сап, учусь погремировать на винформс и тут созрела такая хуйня: как мне выделить сразу все button, label, textbox на форме?Вся эта хуйня уже создана на форме. Пытался гуглить но нихуя. нашел какой-то способ через List<Button> но это не то
Аноним 26/04/20 Вск 11:16:05 1667867117
>>1667853
Что ты подразумеваешь под выделением?
Аноним 26/04/20 Вск 11:23:34 1667871118
>>1667867
мне перебрать нужно чтобы изменить цвет
Аноним 26/04/20 Вск 11:28:36 1667873119
>>1667871
Ну добавляй в коллекцию и меняй. Хотя для этого есть стили.
Аноним 26/04/20 Вск 11:51:45 1667889120
>>1667871
var controls = Controls.OfType<Button>.ToArray();
foreach (c in controls) {
c.BackgroundColor = Color.GayishBlue;
}
Аноним 26/04/20 Вск 11:52:21 1667891121
>>1667873
>Хотя для этого есть стили
Ща, в винформс-то стили
Аноним 26/04/20 Вск 11:52:49 1667892122
>>1667889
>как мне выделить сразу все button, label, textbox
>Controls.OfType<Button>.ToArray();

Ясно.
Аноним 26/04/20 Вск 11:57:59 1667896123
>>1667892
Может тебе ещё отсосать?
private void laba1() {
IEnumerable<Control> GetControlHierarchy(Control root) {
var queue = new Queue<Control>();
queue.Enqueue(root);
do {
var control = queue.Dequeue();
yield return control;
foreach (var child in control.Controls.OfType<Control>())
queue.Enqueue(child);
} while (queue.Count > 0);
}
GetControlHierarchy(this)
.Where(x => x is Button || x is Label || x is TextBox)
.ToList()
.ForEach(x => x.BackColor = Color.Blue);
}
Аноним 26/04/20 Вск 14:44:01 1667995124
Посоветуйте норм стек под C#
Уже много лет пишу на Windows Forms за $1000, заебало
Аноним 26/04/20 Вск 15:01:45 1668021125
>>1667995
Дурак, сиди пока дают.
Аноним 26/04/20 Вск 15:06:15 1668032126
>>1665549
>Нормальный язык в шарагах преподавать не будут
Охуенная у тебя логика, в моей преподавали java с sql несколько лет подряд например. Они тоже через три года вымрут?
Аноним 26/04/20 Вск 15:17:07 1668048127
image.png (531Кб, 500x467)
500x467
>>1668021
У меня зарплата в рублях и повышать её явно никто не собирается. In fact, она падает даже в рублях.
Аноним 27/04/20 Пнд 04:17:20 1668632128
>>1667995
>норм стек под C#
>много лет пишу на Windows Forms за $1000

Здесь что-то не сходится.
Как можно себя не уважать и много лет писать за миску джуна?
Аноним 27/04/20 Пнд 04:35:30 1668635129
>>1668632
Рынок сярпа за пределами северной америки практически не существует, на 3к$ позицию в москве по 200 апплаев выпердышей из всевозможных говновузов
1000$ за настолько рудементарный шлак как винформы еще поискать надо
Аноним 27/04/20 Пнд 05:29:52 1668646130
>>1668635
Как хорошо, что я выбрал веб.
Веб это то, ради чего С# создавался много лет назад, но люди еще не осознали (и осознают не скоро)
Аноним 27/04/20 Пнд 09:24:40 1668729131
image.png (1525Кб, 810x1080)
810x1080
Пролистал вчера книжку про ASP из шапки, теперь что, жаваскрипт, вёрстка и можно пердолить пет-проект?
winforms-кун
Аноним 27/04/20 Пнд 10:33:44 1668778132
Аноним 27/04/20 Пнд 11:55:11 1668851133
image.png (281Кб, 341x366)
341x366
Аноним 27/04/20 Пнд 12:03:19 1668870134
>>1668851
Нильзя! Я так скозал! Не смей!
Аноним 27/04/20 Пнд 14:47:03 1669089135
Аноним 27/04/20 Пнд 14:47:04 1669090136
Аноны, вкатываюсь в си шарп, прочитал руководство Герберта Шилдта, теперь нужно задачки где-то нагуглить. Есть какие-нибудь реально удобные ресурсы?
Аноним 27/04/20 Пнд 16:01:27 1669219137
>>1669090
Одной книги будет мало, читай теперь Альбаири, потом открывай книгу по паттернам и принципам комментирования (Agile Principles, Patterns, and Practices in C#), далее тебе понадобится книга по .NET Core, после этого ты либо учишь ASP.NET фреймворк, либо WPF, а также закрепляешь всё книгой по базам данных. И только тогда можешь переходить к практике.

Задачки на структуры данных и алгоритмы можешь найти на:
https://leetcode.com/problemset/all/
Аноним 27/04/20 Пнд 16:55:32 1669268138
>>1669219
Спасибо, анон. Еще такой вопрос, в списках рекомендуют вместо Альбахари Рихтера пройти, в чем разница?
Аноним 27/04/20 Пнд 17:02:12 1669276139
Я правильно понимаю, что вызов асинхронного метода без await кидает этот метод на выполнение в планировщик (и он уже где-то выполняется, предположительно в другом потоке из пула), а код продолжает работать, то есть это примерно как ключевое слово go в одноименном языке?
Выглядит как неплохой способ одновременно выполнять множество HTTP-запросов.
Почему тогда руководство советует всегда делать await https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/error-messages/bc42358 какой тогда смысл в асинхронности, если всегда ждать выполнения?
Аноним 27/04/20 Пнд 17:07:48 1669281140
>>1669276
Это для клоунов которые не понимают что вообще происходит и обсираются на асинхронщине. Если ты понимаешь что такое асинхронность, как с ней работать и зачем она тебе нужна то спокойно забиваешь на await.
Аноним 27/04/20 Пнд 17:20:33 1669295141
example.jpg (33Кб, 366x550)
366x550
Есть документы, содержащие отдельные куски данных для единой сущности, типа как на пике.
Сейчас я сериализую/десериализую их лютым говнокодом с использованием jobject["name"] из newtonsoft.json.
По идее надо бы их обрабатывать методом ToObject<struct>/FromObject, но я хз как это прикрутить.
В общем накидайте советов мудрых, с меня как всегда.
Аноним 27/04/20 Пнд 17:22:03 1669296142
>>1669295
На пике имеется в виду масса хранящегося ресурса, а не самого part, если что.

быстрофикс
Аноним 27/04/20 Пнд 17:40:05 1669313143
>>1669268
Рихтера нужно проходить в самом конце, уже после практики. Рихтер это взгляд в глубину. Альбахири это тоже своего рода взгляд в глубину, но не такой детальный как у Рихтера.
Аноним 27/04/20 Пнд 17:52:16 1669325144
>>1669276
>какой тогда смысл в асинхронности, если всегда ждать выполнения?
Смысл в том, что передаётся управление в контекст вызвавший асинхронную функцию, т. е. у тебя программа не застывает, а продолжает функционировать.
Если тебе множество запросов нужно сделать, то для этого используется массив, и никаких await не нужно. В этом и заключается бест практис - ты составляешь свой код так, чтобы у тебя не было необходимости пропускать await, потому что это понижает читаемость кода. Сейчас ты помнишь, что это асинхронный метод, а через неделю ты забыл. Не говоря уже о посторонних разработчиках.
Аноним 27/04/20 Пнд 17:59:15 1669334145
Аноним 27/04/20 Пнд 18:02:17 1669338146
Аноним 27/04/20 Пнд 18:26:24 1669352147
Часик в радость, почаны. Насколько хорошо надо знать си шарп, чтобы вкатиться в инити дева? Работаю куа макакой мобильной, все на юнити, хочу вкатиться.
Аноним 27/04/20 Пнд 18:28:07 1669354148
>>1669352
Больше понадобятся знания алгоритмов и структур данных, знаний именно шарпа в юнити не много.
Аноним 27/04/20 Пнд 18:30:42 1669356149
>>1669354
т.е. начинать вкат стоит непосредственно курсов по юнити, а не по си шарпу?
Аноним 27/04/20 Пнд 18:38:11 1669360150
>>1669356
Очевидно, что если шарп не знаешь, то начинать с него нужно, но не углубляясь в детали. Базового синтаксиса будет достаточно. После чего сразу можешь переходить к алгоритмам и структурам данных, может тебе это вообще не зайдёт. Далее углубляешься в тему асинхронности, параллелизма и многопоточности. Закрепляешь всё принципами и паттернами проектирования. И вот тогда уже можешь начинать вкатываться в юнити. И не с ёбанных курсов, курсы это дно. А с книг.
Аноним 27/04/20 Пнд 18:50:18 1669371151
>>1669360
>асинхронности, параллелизма и многопоточности
У юнити особый путь насчет этого дела, либо имитация многопоточности в корутинах, либо ecs, которое ближе к функциональному программированию наверное.
Аноним 27/04/20 Пнд 18:56:43 1669383152
>>1669334
Что-то похожее я и называл говнокодом.

>>1669338
А вот за это спасибо, выглядит лучше.
Аноним 27/04/20 Пнд 19:13:49 1669407153
image.png (308Кб, 400x308)
400x308
Нашёл у жс-питухов в треде курсы по вёрстке, сижу, давлюсь, это полный пиздец какой-то.
С самим жс никаких проблем, кажется, нет, прочитал онлайн-учебник из их треда, он наоборот хороший единственный новый концепт там это прототипное наследование, вся функциональщина на месте, что такое рекурсия и промисы мне изучать заново не надо.
Думаю, надо имиджборду написать по доброй традиции, только я с фронтом ещё совсем не разобрался. Все советуют какой-то Vue и React, в отличие от самого JS с ними нихуя не понятно.
winforms-кун
Аноним 27/04/20 Пнд 19:15:25 1669410154
>>1669219
принципы комментирования?? oh lol!
Аноним 27/04/20 Пнд 19:21:51 1669431155
Аноним 27/04/20 Пнд 19:34:23 1669459156
>>1669276
Сложно понять по откмментировавшим тебя кунам, понимают они чего пишут или нет, но на всякий случай еще один ответ добавлю.

Без await твой код, который выполняет какую-то IO операцию и помечен как async будет выполняться синхронно. Т.е. поток, который выполняет твою функцию будет тупо сидеть и ждать, когда внешняя операция завершится (БД, веб АПИ, любой другой сервис, который не CPU bound, т.е. выполняется на другом процессоре, а не том же самом где крутится твой прога).

У ОС ограниченное кол-во потоков. Если твой код принимает 1к+ запросов в минуту и каждый из них будет просто висеть и ждать 1сек+, пока сторонний сервис не вернёт ответ, то у тебя образуется огромная очередь из запросов, которые в итоге начнут вываливаться с timeout и nonexistent network ошибками. А те запросы, что в итоге обработаются, будут выдаваться с 10-100-200 сек задержкой.

При async/await у тебя внутри создаётся state machine, которая помечает точку, откуда управление передаётся в другой поток и возвращает выполняемый поток в общий Thread Pool. Когда внешний сервис вернул ответ, то state machine выделяет новый поток и продолжает выполнение твоего кода. Так ты увеличиваешь throughput своего приложение тысячекратно.

Task.Run(() => action) - этот чувак создаёт background thread и запускает твой action там, а сам продолжает выполнение основного метода. Называется fire-and-forget mode.
Этот путь не спасёт тебя от описанной выше проблемы, т.к. код будет палалелльным, но нифига не асинхронным, твой поток так же будет сидеть и ждать завершения внешней операции.
Аноним 27/04/20 Пнд 19:40:49 1669464157
>>1669459
Косяк в начале. Без await, как и сказали до этого, твой метод будет продолжать выполняться. Это норм, если тебе не надо ждать выполнения твоего async метода.
Аноним 27/04/20 Пнд 20:05:46 1669481158
>>1669407
Забей на жс фреймворки в начале. Попытайся сваять что-то вручную без всяких сторонних библиотек (ну может только jQuery, но и он нынче не нужен, потому что стандартный браузеровский АПИ много из этого уже умеет).

Там главная проблема - это мысленно суметь провести грань между backend и front-end (хз почему один пишут с дефисом, а другой нет).
Твой бэк на дотнете принимает запрос (request) от браузера, ты его обрабатываешь и отдаёшь ответ (response). Всё.
Тебе надо суметь вызвать метод на бэке (копай routes) через, например, Controller -> Action и вернуть какую-то модель обратно. В твоём html ты эту модель принимаешь и рендеришь чего надо. Хоть через Razor, хоть через asp теги, хоть вручную делая из жс ajax запрос.

А потом научишься уже эти модельки и через Vue и React и Angular обрабатывать.
Аноним 27/04/20 Пнд 20:14:20 1669484159
>>1669459
Тебе следует перечитать темы асинхронность, многопоточность и параллелизм и перестать нести хуйню.
Аноним 27/04/20 Пнд 20:36:46 1669500160
>>1669481
>Там главная проблема - это мысленно суметь провести грань между backend и front-end
Ну отдавать html я научился, это совсем не проблема. Клиент-серверные вафельницы успел пописать и на формах. Синтаксис Razor тоже для даунов-аутистов. Пока самая большая загадка именно фронтенд. Там какие-то селекторы, псевдоэлементы, малофья, и всё не похоже на то, что я видел давным-давно в универе когда не было html5.
Спасибо, что читаешь мои высеры, мне тут немного одиноко.
winforms-кун
Аноним 27/04/20 Пнд 20:38:02 1669505161
>>1669484
Такой первый ответ и ожидал.
Если есть реальный опыт в хайлоаде, когда у тебя и CPU и RAM на 100% используются на всех серверах разом, то рад буду что-то новое/полезное услышать.
Аноним 27/04/20 Пнд 21:18:19 1669550162
image001.jpg (15Кб, 342x349)
342x349
Здравие, хлопцы.
Уже давно возникла идея решения задач через программу. Но есть микро загвоздка - я в душе не ебу как её реализовать и можно ли это реализовать вообще:
На пикчербокс ты сам перетаскиваешь нужное тебе изображение и оно автоматически привязывается к валу(ременная передача на 1-м валу. на втором валу та же ременная + подшипники + зубчатая передача), который при этом сам рисуется на том же пикчербоксе(как на картинке). Это реализуемо или я попросту зря трачу своё время?? В интернете хуй найдешь подобное, уже пробовал. Благодарю каждого за ответ
Ебашу в vs на windows forms
Аноним 27/04/20 Пнд 21:38:52 1669587163
>>1669550
И да, и нет. Сложно понять, тут либо очень сложно, либо очень просто. Ну ты понял. Сами изображения форм не выглядят сложно, возможно если есть статистическая основа то можно закодить туда "крепления" для других геометрических форм. У нас на работе так квадраты можно перетаскивать и приклеплять к другим через линии, ну и типо flow constructor в итоге, но я туда ни разу не смотрел, на формах всё.
Аноним 27/04/20 Пнд 21:42:50 1669592164
>>1669550
Кароче снизь сложность задачи до самой легкой, которую даже собака решит, забудь вообще про окружности и про там эти приборы какие-то там, работай с квадратами, и максимум два твоих этих валов линии кароче, и попробуй сделать на формах самое примитивное. Если получится и адекватный объем работы, то оттуда иди дальше.

>>1669587
Аноним 27/04/20 Пнд 21:57:39 1669601165
>>1669592
Спасибо, добрый человек. Сегодня-завтра попробую и отпишу
Аноним 27/04/20 Пнд 22:16:31 1669615166
>>1669505
>При async/await у тебя внутри создаётся state machine, которая помечает точку, откуда управление передаётся в другой поток и возвращает выполняемый поток в общий Thread Pool.

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

await как раз и создавался для того чтобы не создавать новых потоков для асинхронных I/O операций, которые эти потоки никак ускорить не могут, потому что эти операции от них не зависят, это не вычислительные операции, это операции которые используют сторонние ресурсы - сначала системное API, потом системные дескрипторы, после чего всё передаётся во внутреннюю систему устройства (жесткий диск/сетевой адаптер). И всё это время поток ничего не делает, он просто ждёт. Поэтому и нет смысла создавать отдельный, когда у тебя уже есть один.
Thread Pool в таких ситуациях задействуется только во время получения ответа от стороннего ресурса и для уведомления потока, который вызвал асинхронную операцию, о том, что он получил ответ и пора вернуться и продолжить код идущи после оператора await.
И создание отдельного потока в таких ситуациях действительно может произойти, но только в том случае, если инициализировавший асинхронную операцию поток оказывается занят (именно поэтому не рекомендуется в асинхронном коде использовать Thread.Sleep()) и создание нового потока является нежелательным, так как это тратит много ресурсов и заставляет заниматься синхронизацией контекстов вызвавшего и нового потока.
Аноним 27/04/20 Пнд 22:18:32 1669618167
>>1669550
Лучше на wpf такое делать, у неё больший функционал для работы с графикой.
Аноним 27/04/20 Пнд 23:56:05 1669701168
>>1669615
Спасибо за детальный ответ.
https://docs.microsoft.com/en-us/dotnet/standard/async-in-depth

Под
>управление передаётся в другой поток
имелось ввиду что дальше выполнение будет где-то на другом ЦПУ, пусть и виртуальном (если речь о настоящем IO), ведь выполнение чего-либо без потока в принципе не возможно. И этот ЦПУ может быть на другой машине, на другой ОС и т.д. А настоящий поток, в котором исполняется операция, далее не используется, и либо
- возвращается системе для переиспользования;
- прогоняется синхронно, ожидая выполнения. Тут зависит от длительности операции и стратегии оптимизации, которую конкретный runtime выбрал.

Я и не говорил, что новый поток создаётся. Используется уже готовый и ожидающий в системе. Можно было конечно яснее излагаться.

>await как раз и создавался для того чтобы не создавать новых потоков для асинхронных I/O операций
Я по-моему то же самое написал. Тут или мой скил писанины страдает, или ваш - чтения.

https://docs.microsoft.com/en-us/dotnet/standard/threading/the-managed-thread-pool
>Use of the thread pool is significantly easier in Framework 4 and later, since you can create Task and Task<TResult> objects that perform asynchronous tasks on thread pool threads.

Пул потоков имеет какое-то ограниченное кол-во готовых к использованию потоков. Для IO операции поток сначала возвращается в пул и после возврата ответа от стороннего процесса выдаётся другой поток (редко тот же самый) для продолжения операции. Это легко проверить через тесты или в дебагере. ID у изначального потока и у того, который будет продолжать оперцию, будут разные. Из-за этого можно потерять изначально имеющиеся данные, если о них за ранее не позаботиться (всякие Sync Context, ConfugreAwait, и прочие плюшки).

Такое ощущения что я заного первое сообщение переписываю.
Аноним 28/04/20 Втр 01:38:06 1669746169
c545b379ace1185[...].png (152Кб, 2200x1627)
2200x1627
Аноним 28/04/20 Втр 14:03:50 1670177170
Какие преспективы для шарписта в плане работы? Стоит ли вкатываться?
Аноним 28/04/20 Втр 14:20:25 1670217171
Аноним 28/04/20 Втр 14:30:09 1670224172
>>1669615
>await как раз и создавался для того чтобы не создавать новых потоков для асинхронных I/O операций, которые эти потоки никак ускорить не могут, потому что эти операции от них не зависят, это не вычислительные операции, это операции которые используют сторонние ресурсы - сначала системное API, потом системные дескрипторы, после чего всё передаётся во внутреннюю систему устройства (жесткий диск/сетевой адаптер). И всё это время поток ничего не делает, он просто ждёт. Поэтому и нет смысла создавать отдельный, когда у тебя уже есть один.
Я вот одного не могу понять толком: что делает await?
Я правильно понимаю, что он блокирует выполнение кода до окончания выполнения вызванного асинхронного метода. То есть останавливаемся и ждем, пока метод выполнится.
Или нет?
И что будет, если асинхронный метод (объявленный с ключевым словом async) вызвать без всякого await, то есть написать method (arg1, arg2...)? Он где-то выполнится асинхронно (возможно, в другом потоке), а выполнение метода, вызвавшего его просто продолжится? Или для такого поведения делать Task.run()?
Аноним 28/04/20 Втр 14:32:43 1670229173
>>1670224
>await
аналог бинда асинхронной монады, так понятнее?
Аноним 28/04/20 Втр 14:35:02 1670232174
>>1670229
Это и так понятно. Просто смущает данная фраза

>The await operator suspends evaluation of the enclosing async method until the asynchronous operation represented by its operand completes. When the asynchronous operation completes, the await operator returns the result of the operation, if any. When the await operator is applied to the operand that represents an already completed operation, it returns the result of the operation immediately without suspension of the enclosing method. The await operator doesn't block the thread that evaluates the async method. When the await operator suspends the enclosing async method, the control returns to the caller of the method.
Вроде в первом предложении написано, что вызывающий метод приостанавливается и "ждет" возврата из вызванного с await метода, но тут же написано, что поток не блокируется. Это как?
Аноним 28/04/20 Втр 14:40:52 1670241175
Аа, кажется разобрался. Можно вызвать асинхронный метод и код в вызвавшем методе пойдет выполняться дальше, а await можно вызвать уже позже, когда реально понадобится результат вычислений.
Аноним 28/04/20 Втр 14:43:39 1670245176
>>1670224
Он оборачивает вызываемый метод в Task/Task<T> и добавляет к нему вызов ContinueWith после которого у тебя выполняется остальная часть кода, которая идёт после await.

например:

int sum = await Sum(2,2);

Оборачивается в

Task<int>.Run(()=>//здесь будет выполняться развернутый код асинхронного метода Sum).ContinueWith(r=>sum = r // и тут остальной код после await);

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

> что будет, если асинхронный метод (объявленный с ключевым словом async) вызвать без всякого await

Будет обычный Task.Run, после которого выполнение кода продолжиться, например:


int sum = Sum(2,2);
int sum2 = Sum(3,3);

Превратится в

Task<int> sum = Task<int>Run(()=>код Sum);
Task<int> sum2 = Task<int>Run(()=>код Sum);

И код продолжит выполняться.
Аноним 28/04/20 Втр 14:46:37 1670247177
>>1670232
Это так, что поток освобождается и не ждёт выполнения операции. Т. е. он попадает в пулл потоков и тот уже распределяет его на другие задачи, которые нужно выполнять. Т. е. это избавляет от оверхеда при создании нового потока.
Аноним 28/04/20 Втр 19:47:13 1670673178
>>1669481
>Тебе надо суметь вызвать метод на бэке (копай routes) через, например, Controller -> Action и вернуть какую-то модель обратно. В твоём html ты эту модель принимаешь и рендеришь чего надо. Хоть через Razor, хоть через asp теги, хоть вручную делая из жс ajax запрос.
Немного неочевидно написал, с твоего ответа может показаться, что мы на фронте можем что-то рендерить с помощью Razor и asp тегов, но всё это происходит на бэке, на фронт уже чистый html приходит.
Аноним 28/04/20 Втр 20:03:19 1670702179
>>1670177
будешь CEO кофе носить и приказы исполнять. Такие кадры нужны, вкатывайся
Аноним 28/04/20 Втр 20:36:09 1670764180
>>1669746
Фронт-енд не нужон, я так считаю. Джейсон жив.
Аноним 28/04/20 Втр 23:41:01 1671014181
>>1670245
>например:
>
>int sum = await Sum(2,2);
>
>Оборачивается в
>
>Task<int>.Run(()=>//здесь будет выполняться развернутый код асинхронного метода Sum).ContinueWith(r=>sum = r // и тут остальной код после await);
>
Это жирный троллинг или ты просто долбаеб?
Аноним 29/04/20 Срд 00:01:18 1671037182
>>1671014
Понятно, что там всё делается через стейт машину, внутри которой сощдается таск, но принцип одинаковый, как и результат.
await это обычный сахарок, который позволяет не засирать код созданием тасков и связанных с ними конструкций, именно таких которые я описал.
Аноним 29/04/20 Срд 06:07:34 1671119183
Есть массив Action мясистых, там их около тысячи штук. Как сделать, чтобы они выполнялись параллельно тредами из пула, но не все сразу, а только 16 одновременно? Т.е. чтобы пока не освободится тред, новый такс не стартовал?
Аноним 29/04/20 Срд 06:32:55 1671127184
>>1671119
Ну сделай пул со счётчиком и запускай в новом потоке, увеличивая счётчик, при выполнении таска уменьшай. Крути всё это в цикле и всё. Но ты учти, если и тебя таски короткие, то будет только хуже с многопоточностью.
Аноним 29/04/20 Срд 06:34:22 1671128185
>>1669746
Когда уже блазор-васм релизнут?
Аноним 29/04/20 Срд 06:38:18 1671130186
>>1671119
Семафор, специально для этого
Аноним 29/04/20 Срд 08:20:35 1671155187
>>1671127
>>1671130
А че, однострочником никак? Мне щедулер писать обязательно самому?
Аноним 29/04/20 Срд 08:34:47 1671161188
>>1671119
T P L
P
L

Parallet.For/Foreach могут принимать ParallelOptions, где можно установить MaxDegreeOfParallelism.
Аноним 29/04/20 Срд 11:50:18 1671262189
>>1671161
Спасибо, бро, мне тут стыдно что самому в голову не пришло
Аноним 29/04/20 Срд 12:28:19 1671286190
>>1671037
>но принцип одинаковый
Task run выполняет делегат в ОТДЕЛЬНОМ потоке из пула.
async await вообще не про это, так что нет, не одинаковый, никакого Task run там нет

Аноним 29/04/20 Срд 13:30:17 1671341191
20200305031119.jpg (92Кб, 705x437)
705x437
12123.jpg (113Кб, 937x643)
937x643
>>1671286
>Task run выполняет делегат в ОТДЕЛЬНОМ потоке из пула.

Он ничего не выполняет, он отправляет задачу в очередь тред пула. Также, как и await. Вот только разница в том, что продолжать выполнение кода после await будет тот же поток, который принял на себя выполнение задачи перед await

Вот тебе две ситуации на скриншотах.

1. Выполнение всегда начинает поток под номером 1, далее он отдает задачу в пулл потоков при помощи Task.Run и та выполняется свободным потоком, в это время поток #1 продолжает работу и доходит до оператора await, после чего он освобождается, передав задачу пулу потоков, и далее мы видим, что код после await всегда выполняется потоком, который взял на себя задачу после оператора await

2. Получаем тоже самое с использованием Task.Run().ContinueWith(t=>{}, TaskContinuationOptions.ExecuteSynchronously), только за счёт большего количества кода. Т. е. происходит именно то, о чём я писал.

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

>не про это, так что нет, не одинаковый

Не про это, потому что ты не понимаешь что происходит и тебе так кажется?
Аноним 29/04/20 Срд 13:59:22 1671375192
>>1671341
>после await будет тот же поток, который принял на себя выполнение задачи перед await
Вот не надо тут. Зависит от контекста синхронизации
Аноним 29/04/20 Срд 15:36:37 1671448193
>>1671375
Это уже детали. Если .ConfigureAwait(false) добавить после await то поведение будет таким же как в консольном приложении.
Аноним 29/04/20 Срд 15:40:57 1671453194
На # еще что ни будь пишут? Или клиент уже мертв, как и Delphi? Судя по тому, что посты движутся - это аутопсия студентов, но все же, хоть какая-то работа есть?
Аноним 29/04/20 Срд 15:45:01 1671455195
>>1671453
>Судя по тому, что посты движутся - это аутопсия студентов

Первый раз в этом разделе и тыкнул на первый попавшийся (этот) тред? Или это очередной "наитончайший" троллинг от завидующего жаба-петуха?
Аноним 29/04/20 Срд 15:53:01 1671470196
>>1671448
Да не то чтоб дтали. Довольно важная для понимания вещь, а у тебя относительно нее в самом начале поста неверное утверждение.
>>1671453
Пишут. Просто тут серьезным людям делать нечего, есть места поинтереснее. Поэтому только ванаби и сочувствующие.
Аноним 29/04/20 Срд 15:58:40 1671481197
>>1671470
>Да не то чтоб дтали. Довольно важная для понимания вещь, а у тебя относительно нее в самом начале поста неверное утверждение.

И в чём неверность? await всегда стремиться работать в том потоке, в котором он запущен.
Аноним 29/04/20 Срд 15:59:48 1671482198
>>1671470
Посоветуй места поинтереснее.
Аноним 29/04/20 Срд 16:01:29 1671484199
>>1671481
Сходи хоть доки почитай...
Аноним 29/04/20 Срд 16:02:14 1671486200
Анон, есть строка. Как её можно разделить на одинаковое количество символов?
Например, "какдела_" -> "какд ела_"

Аноним 29/04/20 Срд 16:03:31 1671487201
>>1671484
От того что я доки почитаю у тебя знаний прибавится или как это работает?
Аноним 29/04/20 Срд 16:08:22 1671495202
>>1671481
>await всегда стремиться работать в том потоке, в котором он запущен.
Вот в этом и ошибка. Не старается он ничего делавть, как я и писал, все зависит он контекста.
Аноним 29/04/20 Срд 16:08:42 1671497203
Аноним 29/04/20 Срд 16:09:03 1671498204
12123.jpg (34Кб, 420x360)
420x360
Аноним 29/04/20 Срд 16:11:15 1671501205
15840341053751[[...].jpg (98Кб, 830x360)
830x360
>>1671495
Почему все дурачки такие самоуверенные и даже не пытаются что-то почитать по теме, перед тем как начать срать себе в штаны?
Аноним 29/04/20 Срд 16:11:49 1671502206
>>1671341
>Он ничего не выполняет, он отправляет задачу в очередь тред пула. Также, как и await.
Хорошо, не выполяет а отправляет задачу в очередь для выполнения на потоке из пула.
НО, это не отменяет того факта что:
async await НЕ разворачивается в кострукции вида

>>1670245
>int sum = await Sum(2,2);
>
>Оборачивается в
>
>Task<int>.Run(()=>//здесь будет выполняться развернутый код асинхронного метода Sum).ContinueWith(r=>sum = r // и тут остальной код после await);
>

Никакого Task.Run там нет.
>>1671341
>Также, как и await
Нет и еще раз нет.
Берем условный asp net.
Код вида

async doSmthAsync() {
var x = await DoSmthElseAsync()
}

По-твоей логике выше, есть один поток, встречается await с делегатом, который кладется в Task.Run, вызывающий поток освобождается.
Какой по-твоему в этом блять смысл? Освободить один поток чтобы занять другой из пула?

Код с async\await выполняется СИНХРОННО на том же потоке, до создания таска (не обязательно через Task Run, зависит от деталей реализации, возможно через taskcompletionsource, еще одного потока может не быть),
Если таска не завершена, то встречается await и поток освобождается.
Таска завершается (сигналит IOCP в случае с IO операцией), код после await продолжается возможно на другом потоке, тут уже зависит от контекста синхронизации

>>1671341
>Не про это, потому что ты не понимаешь что происходит и тебе так кажется
Учитывая весь контекст высеров выше, я могу сделать заключение что это жирный троллинг.
Или же
>>1671014
>ты просто долбаеб
Аноним 29/04/20 Срд 16:12:09 1671505207
>>1671482
cyberforum, so, social.msdn и т.д даже на гитхабе есть интересные обсуждения. Это если вопросики порешать и обсудить фишки и фичи. А если похуесосить, то, конечно двач хорош, только не надо удивлятся, что вместо интересных тем тут обсуждения говно vs мочa.
Аноним 29/04/20 Срд 16:16:27 1671511208
>>1671501
Напишу в третий и последний раз - этим занимается SyncronizationContext. Ты писал
>разница в том, что продолжать выполнение кода после await будет тот же поток
это неверно.
Аноним 29/04/20 Срд 16:20:19 1671515209
>>1671511
Всё что от тебя слышно это "НЕВЕРНО ЭТА НИТАК!!!", давай пример, который опровергает эти слова.
Показывай код, который после await выполняется не в том же потоке, в котором выполнялась асинхронная функция перед этим оператором.
Аноним 29/04/20 Срд 16:23:30 1671518210
Аноним 29/04/20 Срд 16:26:30 1671520211
>>1671515
Ты сам называл такие случаи: ConfigureAwait(false) - и таска не будет использовать захваченный контекст или если захваченный контекст многопоточный.
Аноним 29/04/20 Срд 16:29:48 1671528212
aa.png (6Кб, 392x324)
392x324
>>1671515
Да в общем-то это поведение по-умолчанию, если не используется однопоточный контекст.
Аноним 29/04/20 Срд 16:34:19 1671541213
>>1671502
>async await НЕ разворачивается в кострукции вида

Ты действительно настолько тупой или прикидываешься?
Перечитай хотя бы цепочку постов, человеку рассказали про стейт машину, он не понял, поэтому я и провел ему аналогию которую понять легче, использовав в ней Task.Run.
Тебе когда сложение в школе объясняли, приводя в пример какие-нибудь яблоки, ты тоже начинал кричать, что цифры это не яблоки?

>Какой по-твоему в этом блять смысл? Освободить один поток чтобы занять другой из пула?

Уебище тупорылое, в этом и смысл асинхронности - она не блокирует потоки, она сразу освобождает их.

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

Аноним 29/04/20 Срд 16:41:31 1671562214
>>1671541
>поэтому я и провел ему аналогию которую понять легче, использовав в ней Task.Run.
Я пытался объяснить что 2+2 = 4, но не смог, поэтому сказал что 2+2 = 5
Понимаю
>>1671541
>Уебище тупорылое
Я освободил один поток и занял другой.
>>1671541
>в этом и смысл асинхронности
Понимаю
Аноним 29/04/20 Срд 16:48:44 1671581215
>>1671562
>Я освободил один поток и занял другой.
Нет, ты лучше займешь UI поток CPU-bounded операциейи зафризишь весь интерфейс. Нет, ты будешь ожидать IO-bouded операцию похерев ресурсы. Ведь для тебя освободить текущий, а потом занять другой(или снова этот) поток это так тупо.
Аноним 29/04/20 Срд 16:52:05 1671587216
>>1671520
>ConfigureAwait(false) - и таска не будет использовать захваченный контекст

И? Что это меняет, долбоеб? Ты хоть понимаешь, что поведение будет зависеть от реализации этого самого синхронизационного контекста? Ты наверно сейчас удивишься, но любой может создать класс реализующий синхронизационный контекст, который будет работать в зависимости от реализации. В зависимости от этой реализации я могу делегировать выполнение задачи в нужный поток, как это и делается в приложениях с UI, а могу просто отправить в очередь на выполнение в тред-пул, как это и делается в базовом SynchronizationContext.

Понял, дебилоид? Слово "базовый" тебе о чём то говорит? Почему тогда ты какие-то отдельные реализации приписываешь этому базовому, скажи нам, дебилоид.
Аноним 29/04/20 Срд 16:54:21 1671595217
>>1671562
>Я освободил один поток и занял другой.
Или не другой, а этот же освобожденный, либо ты его не освободил, а дал ему возможность продолжать свою работу, как это происходит с потоками отвечающими за интерфейс. В чём проблема, сычуш? Слишком сложно для твоих куринных мозгов?
Аноним 29/04/20 Срд 17:10:41 1671619218
>>1671581
>Нет, ты будешь ожидать IO-bouded операцию похерев ресурсы
Я не предлагал ее ждать, но никакого потока там нет.
Я выше уже писал.
Делаешь запрос к базе, сделав вызов из UI потока, GetSmthAsync(), весь код, выполняется синхронно, в этом же, UI потоке. Делается запрос к базе, возвращается Task, НЕ ЗАВЕРШЕННЫЙ, встречается await, UI поток НЕ БЛОКИРУЕТСЯ, ОСВОБОЖДАЕТСЯ.
ВСЁ. Завершается IO операция, на каком-то потоке продолжается код после await. На каком именно зависит от контекста синхронизации.
Никаких Task run в момент вызова GetSmthAsync НЕТ

>>1671595
>Или не другой, а этот же освобожденный, либо ты его не освободил
Да какая разница, дебил, с твоей логикой асинхронность в условном вебе нахуй не нужна.
Ты предлагаешь ОСВОБОЖДАТЬ ОДИН ПОТОК, чтобы вернуть в пул, но при этом из пула забираешь другой. Вопрос, НАХУЯ?
>>1671595
>В чём проблема, сычуш
Ни в чем, ты пытаешься жирно троллить, но у тебя не выходит, съеби с борды
Аноним 29/04/20 Срд 17:33:40 1671646219
>>1671619
>GetSmthAsync()
>весь код, выполняется синхронно
>Async
>выполняется синхронно

Не перестаю проигрывать с животного.

>Ты предлагаешь ОСВОБОЖДАТЬ ОДИН ПОТОК, чтобы вернуть в пул, но при этом из пула забираешь другой. Вопрос, НАХУЯ?

Как было:
Потоку нужно сделать веб-запрос, он использует API системы в которой запущен процесс, т. е. использует неуправляемый код и начинает ждать ответ от этого неуправляемого кода, потому что система должна была ответить именно этому потоку, он создал I/O пакет и именно он получит ответ от системы.

Как стало:

Потоку нужно сделать веб-запрос он использует API системы в которой запущен процесс, т. е. использует неуправляемый код и ...

Вот тут напряги остатки своего мозга

он делегирует задачу ожидания ответа от неуправляемого кода тред-пулу, а сам освобождается, либо продолжает выполнять другую работу. Получив ответ от неуправляемого кода, тред-пул либо продолжает код после await без синхронизации контекста, т. е. в новом потоке, как мы это видели выше на скриншотах, потому что это стандартное поведение, либо он синхронизирует контекст с вызвавшим потоком и продолжит работу на нём, как это обычно происходит в приложениях с UI.

Что в этом сложного, урод? Почему ты до сих пор не можешь этого понять?
Аноним 29/04/20 Срд 18:08:24 1671678220
>>1671646
>>Async
>>выполняется синхронно
До await код выполняется синхронно
>>1671646
>он делегирует задачу ожидания ответа от неуправляемого кода тред-пулу
Ты в очередной раз обосрался
Обтекай

>>1671646
>Что в этом сложного, урод? Почему ты до сих пор не можешь этого понять?
Что именно понять, долбаеб залетный, съеби уже со своим жирным троллингом
async await у него в Task run блять разворачивается, освободил один поток и занял другой, клоун блять

Аноним 29/04/20 Срд 18:16:14 1671683221
12123.jpg (71Кб, 743x441)
743x441
15840341053751[[...].jpg (75Кб, 667x483)
667x483
>>1671678
>Ты в очередной раз обосрался

Ясно.

Просто запощу эти скриншоты для других. Понятно, что ты начнёшь отрицать, что всё не так изображено и что Рихтер в очередной раз обосрался, но здравомыслящим будет полезно посмотреть.
Аноним 29/04/20 Срд 18:18:37 1671684222
>>1671128
Он и так на васм, шизик.
Аноним 29/04/20 Срд 18:34:55 1671691223
>>1671587
>Ты хоть понимаешь, что поведение будет зависеть от реализации этого самого синхронизационного контекста?
Смотри что я тебе писал
>Зависит от контекста синхронизации
>все зависит он контекста.
>Напишу в третий и последний раз - этим занимается SyncronizationContext
И ты теперь переобулся и пишешь, что я не понимаю, что оно зависит от контекста? Тебе там опухоль на мозг давит?
>>1671587
> этому базовому
А с чего ты взял, что формовский/впфшный более базовый, чем консольный/аспшный? попробуй в налл установить и увидишь, хотя ты это уже знаешь, что ты обосрался и авэйт не сохраняет поток.
>>1671619
>но никакого потока там нет
Wow. Теперь в дотнете можно исполнять код вне потока! А мужики-то не знают.
>>1671619
>Никаких Task run в момент вызова GetSmthAsync НЕТ
Я хз, что ты высрал. Я про таск раны ничего не писал.>>1671619
>Да какая разница, дебил, с твоей логикой асинхронность в условном вебе нахуй не нужна.
>Ты предлагаешь ОСВОБОЖДАТЬ ОДИН ПОТОК, чтобы вернуть в пул, но при этом из пула забираешь другой. Вопрос, НАХУЯ?
В вэбе-то она как раз очень нужна, ибо дофига времени тратится на транспортном уровне, работой с базами и т.д. И поток освобождается и кладется в пул, что б другие задачи могли им пользоваться пока идут IO операции. Это же основы асинхронщины.
Еще раз для тебя дегенерата напишу: код после авэйта не всегда выполняется в том же потоке, что и до. Я хз зачем ты пытаешься с этим спорить.
Аноним 29/04/20 Срд 18:50:49 1671700224
>>1671683
Как этот высер противоречит тому что я писал выше, что никакого ЕЩЕ ОДНОГО ПОТОКА, видимо тебе долбаебу нужно капсом, нет?>>1671691
>Wow. Теперь в дотнете можно исполнять код вне потока! А мужики-то не знают.
Маня фантазии о том, о чем я не писал. Да, долбаеб, физическому устройству потоки нахуй не нужы, вот это откровение.
>>1671691
>Это же основы асинхронщины
да, я понял ТВОИ маня основы асинхронщины: пришел запрос, его подхватил поток. в коде IO операция, вместо использование текущего потока, СОЗДАЕТСЯ еще один поток, который что-то там делает, а прошлый освобождается.
ОХУЕТЬ, вот это асинхронщина.
>>1671691
>код после авэйта не всегда выполняется в том же потоке, что и до.
>>1671619
>Завершается IO операция, на каком-то потоке продолжается код после await. На каком именно зависит от контекста синхронизации
Ты тупой, да?
Аноним 29/04/20 Срд 18:53:31 1671701225
>>1671700
>СОЗДАЕТСЯ еще один поток
берется из пула, имел ввиду, в случае с твоим высером с task run.
Аноним 29/04/20 Срд 18:54:08 1671702226
Анон, если бы ты был жаба-джуном и получил офер на шарп-джуна, ты бы пошел? не галеры
Аноним 29/04/20 Срд 19:06:48 1671706227
>>1671691
>А с чего ты взял, что формовский/впфшный более базовый, чем консольный/аспшный?

Долбоеб, в формовском и впфном он как раз не базовый, так как это фреймворки. Базовый как раз в консольном приложении и выполнение будет одинаково независимо от ConfigureAwait.

>авэйт не сохраняет поток.

Уебище дегенеративное, где я хоть что-то про сохранение потока писал? Потоки синхронизируются, а не сохраняются.


Аноним 29/04/20 Срд 19:12:59 1671712228
>>1671702
>Тырпрайз джуны
>В постсовке
>Оффер жаба-джуну

ТВЁРДО И ЧЁТКО: .NET НЕ УМИРАЕТ
Аноним 29/04/20 Срд 19:14:34 1671714229
>>1671712
Ты сам-то чьих будешь?
Аноним 29/04/20 Срд 19:14:50 1671715230
Ебать у вас тут токсично.
Аноним 29/04/20 Срд 19:16:21 1671719231
>>1671706
>где я хоть что-то про сохранение потока писал?
>>1671341
>продолжать выполнение кода после await будет тот же поток, который принял на себя выполнение задачи перед await

>>1671700
>его подхватил поток. в коде IO операция, вместо использование текущего потока, СОЗДАЕТСЯ еще один поток, который что-то там делает, а прошлый освобождается.
Нет, дебич. Пришел запрос, его подхватил поток из пула, сделал запрос в БД, пока БД проперживается поток ушел обратно в пул и обрабатывает другие запросы. Когда БД раздуплилась как твое очко, поток из пула (любой) продолжил выполнение кода первого запроса.
Аноним 29/04/20 Срд 19:20:48 1671721232
>>1671700
>Как этот высер противоречит тому что я писал выше, что никакого ЕЩЕ ОДНОГО ПОТОКА, видимо тебе долбаебу нужно капсом, нет?

Где вот в этом высере:
>он делегирует задачу ожидания ответа от неуправляемого кода тред-пулу
>Ты в очередной раз обосрался

Есть хоть что-то про еще один поток, долбоеб?

>берется из пула, имел ввиду, в случае с твоим высером с task run.

Так судя по всему для тебя разницы нет.
На скриншоте даже написано для таких умственно отсталых как ты, что именно тред-пул получает ответ от I/O устройства. Теперь вспоминай за что отвечает тред-пул и чем он управляет? Как он по твоему должен продолжить выполнение кода после await, обработав этот ответ? При помощи чего? При помощи магии дружбы? Или всё таки при помощи потоков которыми он управляет?
Ты пойми, долбоебик, когда ответ получен, он уже находится в одном из потоков и именно в нём происходит решение, производить синхронизацию исходя из захваченного синхронизационного контекста, передавая полученную информацию вызвавшему потоку, либо продолжить код после await самостоятельно, без синхронизации.
Именно для этого и нужен ConfigureAwait(false), чтобы не было траты ресурсов на синхронизацию, если тебе не нужно чтобы код после await продолжился именно в том потоке, в котором исполнялся код перед этим await.
Аноним 29/04/20 Срд 19:25:37 1671722233
>>1671719
Ну и? Сохранение то где, уебище тупорылое? Он его не сохраняет, он синхронизируется с ним и продолжает выполнение кода после await в нём. В приложениях с UI есть поток который постоянно занимается интерфейсом и всё что с ним связано, поэтому если ты используешь после await объекты которые принадлежат этому потоку, тебе нужно синхронизироваться с ним, передавая ему полученные данные из await, либо просто сигнализируя о том, что таск после await выполнен и он может продолжать свою работу. Если этого не сделать, поставив ConfigureAwait(false), то программа вывалится в эксепшн, потому что поток из тред пула попытается получить доступ к объектам интерфейса.
Аноним 29/04/20 Срд 19:28:09 1671724234
Слишком толсто. опробуйте тоньше.
Аноним 29/04/20 Срд 19:28:46 1671725235
>>1671724
>это не я долбоеб, это меня троллят!!
Аноним 29/04/20 Срд 19:39:05 1671731236
>>1671725
Ты слишком часто меняешь позицию и игнорируешь ответы, а лишь выдаешь рандомные высеры. Как тролль ты неумеха, а как собеседник слишком туп.
Аноним 29/04/20 Срд 20:01:14 1671751237
>>1671721
А ты знал, что в Core вообще нет такого понятия, как контекст синхронизации? Серьезно, я не троллю. Следовательно и ConfigureAwait() бессмысленно вызывать. Так что нужно освежить знания немного. И это очень важно, так как меняет очень многое.
Аноним 29/04/20 Срд 20:33:58 1671784238
>>1671731
Конечно, ведь это у меня то кто-то обосрался, то кто-то троллит, ведь это я не предоставил никакого кода в доказательство своих слов, не приводил выдержки из статей и из книг.
Аноним 29/04/20 Срд 20:37:19 1671787239
Есть такая ситуация
Есть длл 1 которая зависит от длл 2
Длл 1 не знает о конкретной реализации некоторых классов длл 2, то есть обращается к ним через интерфейсы получая объекты типа интерфейса.
Как мне рассклеить длл 2 так чтобы там были только интефейсы, а в какой-то новой длл 3 вся реализация?
Тут получается что 1 зависит от 2, 3 тоже зависит от 2.
Однако 2 нужно знать как создавать объекты из длл 3 чтобы вернуть их 1 длл.

Может я хуйню написал и никто так не делает, поправьте если что.
Аноним 29/04/20 Срд 20:39:00 1671790240
>>1671751
В каком Core, блять, дебил? ASP.NET Core это фреймворк, если от тебя его в нём скрыли, это не значит, что его нет, это значит, что тебе не дают управлять данным поведением и всех подстраивают под своё решение.
Аноним 29/04/20 Срд 20:42:57 1671794241
>>1671787
Берёшь и расклеиваешь, очевидно. Делается это при помощи паттернов проектирования, какой из них нужен именно тебе зависит от кода, решить это по "вот длл от этой а вот та от этой в этой интерфейс а та объекты из того создает" невозможно.

Вот это - Agile Principles, Patterns, and Practices in C#, от роба мартина, почитай. Там как раз такие ситуации описываются и разбираются.
Аноним 29/04/20 Срд 22:37:14 1671900242
>>1665540 (OP)
Сап,
Один из референсев не установился или не находится и выходит ошибка Assembly not found for framework .Net Framework 4
Подскажите что не так и как можно пофиксить?
Аноним 29/04/20 Срд 22:38:53 1671901243
>>1671900
Может то что ты пытаешься установить не совместимо с 4 фреймворком на котором ты создавал текущий проект в который пытаешься добавить зависимость.
Аноним 29/04/20 Срд 22:42:20 1671905244
>>1671901
Вполне возможно. 4 как я понимаю самая новая версия и из неё могли выпилить старый референс. Тогда как узнать в какой версии он был чтобы откатиться к ней?
Аноним 29/04/20 Срд 23:36:45 1671954245
>>1671905
>4 как я понимаю самая новая версия

Сильное заявление. Все уже давно на NET Core 3.1 перешли, а у тебя 4 фреймворк - самая новая версия. Нет, она не самая новая, самая новая из .NET Framework это восьмая. Самая стабильная и обратно совместимая со всеми другими - .NET Framework 4.5
Аноним 30/04/20 Чтв 00:14:52 1671982246
>>1671715
Это два чувака отношения выясняют, причём используют периодически аргументы оппонента как их собственные. Но вообще - да.
Аноним 30/04/20 Чтв 00:27:39 1671996247
Аноним 30/04/20 Чтв 00:41:04 1672011248
>>1671954
Хорошо, значит 4 стабильная. Перепроверил настройки VS, там 3.1 версии стоят.
Как исправить проблему с Assembly not found?
Аноним 30/04/20 Чтв 01:45:09 1672048249
>>1672011
Бля, анон, 3.1 это core, 4.х это framework
Это разные вещи, параллельные, так сказать
Ты скажи, что ты подключаешь и откуда
Аноним 30/04/20 Чтв 06:26:50 1672103250
>>1671996
Там как раз и написано, то о чём я сказал - создатели фреймворка сдеоали везде поведение как при configureawait(false), но это никак не влияет на используемые сторонние библиотеки, если у них внутри есть нестандартный синхронизационный контекст, то он будет использоваться.
Аноним 30/04/20 Чтв 06:28:59 1672105251
>>1671982
Не два, а три. И они делятся на - не понимает асинхронизацию, понимае наполовину, понимает.
Аноним 30/04/20 Чтв 08:26:27 1672126252
>>1671794
Двачую этого токсика, у дяди Боба все написано.
Аноним 30/04/20 Чтв 16:02:54 1672433253
>>1671455
>жаба-петуха
судя по indeed.com - джависты себя получше чувствуют. Не тролинг, сам когда то писал на этой хуйне
>>1671470
случайно на тред наткнулся и зря ленту скролил - одни помои. Поэтому и пришел к мысле, что дела у .NET-а не очень хороши, раз такое пишут
Аноним 30/04/20 Чтв 16:03:41 1672434254
>>1672433
дополню: Разве десктоп жив? Зачем студентом проекты на WPF/WinForms? Тупо время молодняка убить?
Аноним 30/04/20 Чтв 16:38:13 1672467255
>>1672434
По хорошему WinForms должен быть - всё.
Но МС продолжают выпускать обновления и поддерживать его до неопределенного периода времени. Вполне вероятно у них огромный багаж легаси на этом фреймворке и они хотят чтобы программисты, поддерживающие этот легаси, не отставали от современных разработок и когда придёт время, смогли перепрыгнуть без прям очень сильного головняка.

В целом рынок десктопных приложух жив и пока будет жить, поэтому UWP/WPF вполне можно учить. Оосбенно учитывая то, что XAML используется Xamarin'ом для мобилок и WPF опыт легко на него переносится.
Аноним 30/04/20 Чтв 19:52:31 1672768256
>>1672467
> По хорошему WinForms должен быть - всё.
Вот хуйня какая-то. У WinForms есть вполне определённое применение - простые оконные приложения, утилитки и т.п. Данные какие-нибудь вводить-обрабатывать, с БД работать, всю эту хуйню на WPF писать, нахуя?
Аноним 30/04/20 Чтв 22:45:08 1672976257
Поясните нюфагу сакральный смысл аксессеров, пожалуйста.
Почему их юзают, почему бы просто не создать публичное поле?
Аноним 30/04/20 Чтв 23:30:22 1673018258
>>1672976
Основная причина багов - возможность изменения состояния переменных. Чем больше кода будет в read-only mode, и чем меньше кода будет публично доступно всем остальным для использования - тем меньше у твоего проекта будет проблем.

По умолчанию всё должно быть private readonly. А дальше думать что конкретно открыть для публики, чтобы выполнить текущую задачу.
Аноним 01/05/20 Птн 15:25:36 1673599259
VirtualBoxwin73[...].png (125Кб, 1280x800)
1280x800
Двачик, подскажи пожалуйста с windows forms.

Проблема: не могу реализовать синхронное отображение в лейбле результатов выбора из списка (listBox).

Как выглядит решение проблемы: жмакаю мышкой на элемент из listBox --> в lable'e мгновенно отображается описание выбранного элемента.

Единственное, что нагуглил - это отображение в messageBox значения (не описания) элемента из comboBox.

https://metanit.com/sharp/windowsforms/4.6.php

Исходников нет т.к. вся форма захардкожена.
Аноним 01/05/20 Птн 15:54:09 1673626260
Аноним 01/05/20 Птн 17:05:49 1673753261
Screenshot 2020[...].png (63Кб, 845x591)
845x591
>>1673626
Читал, почти не разобрался (примеры уровня "вот смотрите карой как этот метод использует свойство "свойствонейм" из библиотеки "хуй-пизда" сложны для восприятия)": оказалось примерно сутки пользовался текст боксом вместо лейбла.


После всех потугой получилось сделать такую штуку:

занесли элементы в listbox с помощью конструктора --> приправили магией событие

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = listBox1.SelectedItem.ToString();
}

--> результат: при смене элемента из listbox'a значения копируются в label.
Осталось только понять как организовать такой вывод через массив
(по формулировке : "ключ" : "значение" , где "ключ" отображается только в listbox'e, a "значение" отображается только в label'e)

Аноним 01/05/20 Птн 17:14:43 1673766262
>>1673753
Я такую фигню для лабы еще в 2006 делал. Нынче это вообще на раз два делается. Пройдёт пару лет и ты от своего собственного поста будешь фейспалмить. У меня щас такое от моих собственных постов в нулевые.

В доках всё есть. Судя по всему у тебя еще знаний не хватает чтобы в доки вникать нормально. Поэтому тут тебе только пример с кодом поможет. Надейся на анона.

первое что нагуглил - https://stackoverflow.com/questions/10239392/c-sharp-combobox-options-dependent-on-another-combobox
Аноним 01/05/20 Птн 18:58:57 1673840263
>>1673766
спасибо анон <з

попробую сдать как есть.
Аноним 02/05/20 Суб 01:52:12 1674099264
Пацаны, как там обстоят дела с неткором, раньше писал худобедно чтобы на луниксе через Gtk# работал гуй, сейчас можно просто использовать виндовый гуй чтобы он везде работал?
Аноним 02/05/20 Суб 06:27:07 1674131265
>>1674099
Нельзя, потому что виндовый использует инфраструктуру винды, её api, которых нет на других ОС. Для кроссплатформы есть отдельные фреймворки, официальный- Xamarin.
Аноним 02/05/20 Суб 15:33:10 1674441266
Почему не разделяет строку на каждый символ? Размер листа 1, то есть он не разделился.

//List<string> bin = Convert.ToString(n, 2).Split('\0').ToList();
Аноним 02/05/20 Суб 16:45:37 1674502267
>>1665540 (OP)
Аноны, как получить ссылку на структуру? Есть классы с массивом таких же классов, сами классы мелкие и их много, поэтому хотел сэкономить на указателях на класс и слепить всё на структурах, но GC не даёт ничего сделать и трёт их нахуй. Мне теперь надо все взаимодействия с массивами внутри структуры только из самой структуры производить? Как вложенные структуры изменять, если я не могу в функцию передать эту структуру? С классами всё просто - взял его и таскаешь указатель куда хочешь. А теперь, как я понимаю, всегда создаётся копия структуры и я создаю/меняю копию массива, которая потом удаляется. Массив же это указатель на первый элемент. Так какого хуя ничего не работает и как будто я меняю копии, а оригинал даже не создавался?
Аноним 02/05/20 Суб 17:29:12 1674535268
>>1674441
У тебя нет \0 в полученной строке. Чтобы разделить строку на символы достаточно вызвать .ToList(), Split не нужен. На выходе получишь List<char>. Если нужен List<string>, то .Select(q => q.ToString()).ToList().
Аноним 02/05/20 Суб 19:07:53 1674634269
>>1674535
>нет \0
Как нет, если раньше я обычные слова разделял и он там был оО. Разве \0 является 'пустым' разделителем? Или это все таки костыль?

Спасибо за подробный ответ, все получилось.

Почему при каждой новой операции приходится создавать новые переменные. это же нехорошо с точки зрения и чтения и памяти?

Для каждого select, join, toarray и тп приходится создавать переменную почему он не может в процессе просто менять тип переменной? И еще не очень понятно почему некоторые цепочки работают, а некоторые-нет, приходится сначала делать Join в новой переменной, и уже потом return ConvertTo(новая переменная).
Аноним 02/05/20 Суб 22:12:16 1674838270
ае
Столкнулся с проблемой. Нужно произвести поиск одинаковых элементов в списке и вывод количества одинаковых элементов(прим.: оконная рама - 1 шт, дверная рама - 3 шт, дверь - шт). Не знаю с чего начать, может кто шарит за эту тему?
Аноним 02/05/20 Суб 22:13:06 1674840271
>>1674838
>Не знаю с чего начать
С введения в алгоритмы.
Аноним 02/05/20 Суб 23:20:30 1674930272
>>1674634
Уже прошло больше месяца, а ты все пытаешься писать на шарпе, как будто это жс. Неужели тыкать наугад пока не получиться проще, чем прочитать основы и делать нормально, понимая что к чему...
Аноним 03/05/20 Вск 00:54:31 1675067273
Сап двач. Возник такой вопрос. До C# прогал на Java, Rust, C и Петухе. Прочитал про основы C#, дальше хочу изучать по мере программирования, но возникла одна небольшая проблема. Я не знаю, что программировать. Вообще. Не могли бы вы дать рекомендации по данному вопросу?
Аноним 03/05/20 Вск 01:00:06 1675075274
>>1672467
шо то хуйня, шо это хуйня. Имо лучше бы мелкософты сделали для десктопа что нибудь с html синтаксисом, чтобы не нужно было ебаться с конструктором или XAML. Хотя каждому свое, сейчас 99% это веб, на десктоп многие просто забивают хуй
Аноним 03/05/20 Вск 07:23:39 1675165275
>>1675075
С XAML и не нужно ебаться, всё просто и интуитивно понятно. Нсли у тебя воли только на хтмл хватает, то это далеко не повод лепить его всюду.
Аноним 03/05/20 Вск 07:45:35 1675167276
>>1675067
Переписывай свои старые проекты на C# или найди работу
Аноним 03/05/20 Вск 08:38:53 1675185277
>>1675165
> С XAML и не нужно ебаться
> всё просто
> интуитивно понятно
АХАХАХАХАХХААХХА
Я работаю в бекенде, но есть у меня латентный интерес к интерфейсам. Так вот, месяца четыре я делал всякие поделки на wpf/xamarin forms. Получалось какое-то утилитарное говно. Пришлось вникать в dependency property, разбираться с унылым бойлерплейтом, наблюдать протекающую абстракцию в виде куска mvvm. Красивым код назвать было нельзя. XAML – говно, ИМХО. Как вспомню, так тошнить начинает. Inb4 РРЯЯЯ НЕАСИЛИЛ инструмент не должен пихать палки в колеса. Иначе могу предложить тебе спуститься на winapi

Потом попробовал Vue. Анон, это прекрасно. У меня почти не возникало вопросов, как сделать что-то. Удобное разделение компонентов, читаемый синтаксис, куча компонентов. Абстракции не текут, бек и фронт общаются через WEBAPI
Но самый идеал, мне кажется, это Blazor. Пока ещё не ковырял, но мануалы глянул
Аноним 03/05/20 Вск 08:53:26 1675187278
>>1674838
var input = new[] {"Дилдо", "Массажёр простаты", "Дилдо", "Резиновая кукла", "Дилдо"};
var output = string.Join(", ", input.GroupBy(x => x).Select(x => $"{x.Key} {x.Count()} шт"));
Console.WriteLine(output); // Дилдо 3 шт, Массажёр простаты 1 шт, Резиновая кукла 1 шт

Оче советую почитать книжку Скиены "Алгоритмы. Построение и анализ." Красная такая. Хотя может быть даже тяжеловато будет
Аноним 03/05/20 Вск 09:20:32 1675192279
>>1674634
>раньше я обычные слова разделял и он там был
Показывай что ты там разделял и где (версию фреймворк/коре).

>Разве \0 является 'пустым' разделителем?
Это обычный символ, как 'a', 'b' или 'c' - строки у нас length-prefixed. А ещё и нуль-терминированные, но только лишь в целях безопасности и совместимости - к этому нуль-терминатору нельзя получить доступ. Потому то строка может включать любое количество \0 и в любом месте. Другое дело что \0 обрабатывается в недрах кода по разному и в зависимости от культуры. Он может как игнорироваться при сравнении, так и учитываться.
Пустым разделителем будет передача null как аргумента Split(null), тогда в качестве разделителя будут использованы пробельные символы. Скорее всего ты именно так и делил.

>и он там был
Значит такая строка у тебя была, с \0 вместо пробелов ("aaaaa\0bbbbbb\0ccccc")
Аноним 03/05/20 Вск 11:41:26 1675243280
Посоны, изучаю ASP.NET Razor pages, на моем уберсайте юзер может загрузить файл на сервер. Вопрос, если я его буду сохранять в wwwroot это нормально? Если нет, то как правильно настроить папку для контнента, при условии, что сайт может крутиться и на венде и на линупсе?
Аноним 03/05/20 Вск 13:46:50 1675345281
Читаю сейчас The C# Player's Guide 3rd Edition (RB Whitaker), Господи, охуенная книга. Прошел темы Basics и ООП. Хотелось бы где-то применить знания, а то пока я дочитаю до конца то забуду что читал раньше. Но вот в консоли же хер что напишешь, а посему вопрос: читать паралельно литературу по WPF и пробовать писать простенькие программки или всё же осилить Player's Guide до конца?
Алсо так и не понял, зачем нужны интерфейсы?
Аноним 03/05/20 Вск 14:00:18 1675362282
>>1675345
>а то пока я дочитаю до конца то забуду что читал раньше.
Запоминать нужно только базовую информацию, а именно то, что ты можешь сделать и в каком примерно гуглить информацию в документации.

> Но вот в консоли же хер что напишешь
Консольное приложение писать легче, чем десктопное. Неудобство только в управлении им во время рантайма, но это не важно в твоём случае, так как ты пишешь для себя и для практики, поэтому всё нужное можно захардкодить.

>Алсо так и не понял, зачем нужны интерфейсы?
Для реализации полиморфизма. Проще говоря, для того чтобы код было легче читать и поддерживать, меньше лезть в уже написанный код, а только расширять его создавая новые классы, которые наследуют существующий интерфейс. Интерфейсы и абстрактные классы служат инструментами обобщения, т. е. ты видишь одинаковый код в различных классах, значит тебе весь этот код нужно вынести в абстрактный класс, если ты видешь одинаковую сигнатуру методов, значит эти классы нужно объединить интерфейсом, который в свою очередь будет содержатиься в другом классе, работающим с классами, реализующими интерфейс.

Аноним 03/05/20 Вск 14:00:43 1675364283
>>1675362
>в каком примерно направлении
Аноним 03/05/20 Вск 14:26:22 1675384284
>>1675362
Имеет смысл. Спасибо.
Аноним 03/05/20 Вск 15:46:56 1675504285
>>1674930
У меня нет возможности читать, да и читать нечего. В 100 раз читать введение в язык когда тебе пишут тут луп, тут суп не продвигает тебя ни на йоту.
Да и жс и вообще принципы программирования я выучил только на практике, практика это все, тонны мукулатуры без должного менторства и гайдов правильных не дадут тебе ничего. Тыкая сам и задавая вопросы почему это работает так, а не этак заставялет тебя реально думать о концептах и самому экспериментировать, а не списывать под копирку. Вот когда база освоена, можно углубиться в книжонки. Базарю, такой подход работает даже на пнях, проверено.
Аноним 03/05/20 Вск 15:57:32 1675516286
>>1675504
В каждой книги, в предисловии, написано на каких читателей она направлена. Сначала выбираешь те, что направлены на новичков, потом переходишь на средний, после чего на продвинутый. Соответственно, проекты выбираешь соответствующей сложности, либо работаешь с одним, постоянно расширяя и улучшая его.
А ты сейчас просто лбом бьешься в закрытые ворота, да, они немного приоткроются, но стоит ли это потраченных сил и времени, когда ты мог просто использовать вышеописанный подход?
Аноним 03/05/20 Вск 16:10:28 1675523287
>>1675516
Ладно, потрачу еще денек на свои задачки, не сделаю норму, пойду читать.
Аноним 04/05/20 Пнд 05:48:08 1675931288
есть dataGridView.

у него подписаны заголовки. можно ли отсортировать столбцы dataGridView по этим заголовкам?

Аноним 04/05/20 Пнд 07:39:48 1675941289
Аноны это пиздец. Дали задачу в университете реализовать секущий, нашел на вики пример скопипастил.
Но тут возникла пиздец, в моей функции есть логарифм и в него иногда попадает отрицательные значения. Как быть?

Сама функция : 2 math.Log2(x+7)-5math.sin(x)

Да, можно сделать вот так, по свойствам лог: math.Log2(math.pow(x+7,2))
Но это не помогает

Если начинать брать больше -7. то начинаются большие расхождения

Сверялся с https://www.wolframalpha.com/input/?i=2++ln%28-8%2B7%29+-+5++sin%28-8%29

Аноны прошу, помоги, очень надо

Аноним 04/05/20 Пнд 08:00:16 1675943290
Есть какой-нибудь гайд как прогать в visual studio/rider с использованием только клавиатуры?
Сильно привык к работе за ПК с мышкой и сейчас на ноуте из-за тачпада это сильно тормозит меня так как я привык кучу вещей делать через мышь и вот думаю переучится на клаву.
Аноним 04/05/20 Пнд 09:46:54 1675956291
>>1675931
решил проблему другим способом.

просто перебрал двумерный массив по столбцам
Аноним 04/05/20 Пнд 11:18:12 1676004292
>>1675943
может мышь без или проводную легче купить?
Аноним 04/05/20 Пнд 11:43:34 1676022293
Ребята, я очень глупый и мне сложно быть полностью уверенным когда переменные и не только должны быть public, когда private, а когда вообще protected. Может дадите какую-нибудь статейку почитать?
Аноним 04/05/20 Пнд 13:42:52 1676107294
Переходите на кокоре, говорили они, за кокоре будущее, говорили они, хоть сейчас бери и в прод, кококо. Нахуя эти пидорги добавили TakeLast, если EFCore не умеет в него. Какого хуя? Они же поломали LSP, Enumerable могёт, а Queryable не могёт. Ууу сука они мне жопу подожгли, пол часа ебался со своим запросом, а оказывается TakeLast не завезли.
Аноним 04/05/20 Пнд 13:47:34 1676110295
Аноним 04/05/20 Пнд 13:59:59 1676119296
>>1676107
Ладно, меня чуть отпустило. Оказывается Last тоже не работает и не работал в EF6. Кривовысранное поделие этот EF.
Аноним 04/05/20 Пнд 14:01:43 1676121297
>>1676022
Agile Principles, Patterns, and Practices in C#
Аноним 04/05/20 Пнд 14:05:34 1676125298
>>1676119
>>1676107
Да мы поняли уже, что виноват не долбоеб-программист, а фреймворк/язык/среда выполнения
Аноним 04/05/20 Пнд 14:44:26 1676193299
>>1676125
А ты считаешь это нормально?
Аноним 04/05/20 Пнд 14:44:45 1676195300
Надо написать программу для выделения объектов на фотографии. Что почитать на эту тему?
Аноним 04/05/20 Пнд 14:47:20 1676197301
Аноним 04/05/20 Пнд 14:49:06 1676200302
>>1676193
Очевидно, что это сделано для того чтобы такие дурачки не выстреливали себе в ногу работая с запросами к базе данных.
Аноним 04/05/20 Пнд 14:51:36 1676209303
>>1676197
Библиотеки нельзя использовать
Аноним 04/05/20 Пнд 15:04:31 1676225304
>>1676209
У библиотеки исходный код открыт.
Аноним 04/05/20 Пнд 15:05:37 1676226305
>>1676200
Можно по-подробнее? Ну вот не дали мне foo.TakeLast(5) сделать, я написал foo.Skip(foo.Count() - 5). Почему второй вариант лучше чем готовая поддержка из коробки, тем более, что методы есть?
Аноним 04/05/20 Пнд 15:07:11 1676227306
>>1676209
Тогда придеться писать свою нейросеть. Но раз ты задаешь такие вопросы на дваче, то 99% что ты не напишешь её.
Аноним 04/05/20 Пнд 15:07:15 1676228307
>>1676226
Возможно потому, что всё это синтаксический сахар.
мимо
Аноним 04/05/20 Пнд 15:59:42 1676295308
Аноны есть массив из 4 элементов и нужно реализовать следующее:

с, b - элементы из массива

z - кол-во элементов в массивах (4 штк)

x(z - 1) = - с(z) b(z)
x(z - 2) = - с(z - 1)
b(z - 1) - с(z)b(z)
x(z - 3) = - с(z - 2)
b(z - 2) - с(z - 1)b(z-1) - с(z)b(z)
x(z - 4) = - с(z - 3) b(z - 3) - с(z - 2)b(z-2) - с(z - 1)b(z-1) - с(z)b(z)

Как сделать эту хуету в цикле? Битый час над этим думал, пизедц. Аноны пожалуйста помогите
Аноним 04/05/20 Пнд 16:03:15 1676300309
>>1676295
У препода спросишь.
Аноним 04/05/20 Пнд 16:07:47 1676303310
>>1676300
Если бы. Он на связь собака не выходит
Аноним 04/05/20 Пнд 16:18:47 1676316311
>>1676295
час это ничто, я за час успеваю только лишнюю запятую найти
не сможешь решить за 5-10 часов тогда и приходи, а то ты вообще расслабился я смотрю
Аноним 04/05/20 Пнд 16:27:21 1676337312
>>1676316
так я попутно другое делал, просто я понимаю что делается эта штука легко. Но не могу представить, не хочу прост на этом долго застревать и перейти уже к другому пункту
Аноним 04/05/20 Пнд 16:28:21 1676342313
>>1676337
Ну ничего, в следующий раз ты сделаешь правильный выбор между маняме и обучением, не отложив второе на потом.
Аноним 04/05/20 Пнд 16:30:43 1676353314
>>1676295
Через метапрограммирование? Ну, формировать этот в цикле в string builder'e, потом скомпилировать и подключить как сборку. Но, мне кажется, за такое решение тебя взъебут
Аноним 04/05/20 Пнд 16:31:21 1676355315
>>1676342
Да при чем тут аниме. Просто еще есть парочка более интересных задач, чем циклы в циклах и еще раз в циклах
Аноним 04/05/20 Пнд 16:33:32 1676361316
Introduction to Neural Networks with C# (Jeff Heaton)
В книге заметил следующий код:

Matrix weightMatrix = new Matrix(3,2);
double[] thresholds = new double[2];

Написал его (консольное приложение), а мне рычит, что мол нет такого класса. Может директиву какую нужно подключить? Или это не в консоли нужно делать?
Аноним 04/05/20 Пнд 16:36:09 1676364317
>>1676361
Нужно добавить ссылку на сборку, которая содержит в себе класс Matrix
Аноним 04/05/20 Пнд 16:36:25 1676366318
Или структуру
Аноним 04/05/20 Пнд 16:47:29 1676376319
15866136025300.jpg (5Кб, 230x219)
230x219
>>1676361
Нажми alt+enter где рычит. Или на значок лампочки
Если пропустил using, будет соответствующая подсказка

Почаны, как вы называете слой, где хранится логика? Вот есть контроллеры, есть вьюхи. Можно логику в контроллеры засунуть, но это потом боком вылезает переписываю такой проект с mvc на webapi

Services? Так у меня уже есть сервис, который как служба. Он, допустим, каждые пять минут базу проверяет на предмет новых записей. У меня уже нет идей
Аноним 04/05/20 Пнд 17:02:01 1676391320
Сап анон, у меня вопрос по OAuth. Что делать с redirect_uri?
Вот есть у меня допустим дискорд бот на С#. Когда приходит определенная команда, бот, если юзер не авторизирован (если нет в базе client_id и access токена), просит авторизироваться и кидает в лс ссылку на oauth авторизацию. После авторизации идет на редирект на some_uri.com/?code=auth_code. auth_code нужен чтобы получить accessToken.
И вот что мне делать дальше? Писать отдельное приложение, которое будет хэндлить запрос по этому руту, вытаскивать с него auth_code, делать запрос, получать accessToken и добавлять в базу? А если я хочу чтобы бот написал юзеру что авторизация прошла успешно? Что делать дальше, анон, помоги.
Аноним 04/05/20 Пнд 17:04:13 1676396321
Аноним 04/05/20 Пнд 17:05:17 1676399322
>>1676396
так мне за нее пизды дадут. Мы пока до этого не доходили и скажут что из инета взял пример, только циклы, только хардкор
Аноним 04/05/20 Пнд 18:00:43 1676439323
>>1676376
Зависит от паттерна проектирования.
Аноним 04/05/20 Пнд 18:21:05 1676457324
Аноним 04/05/20 Пнд 20:54:43 1676670325
Аноним 04/05/20 Пнд 21:27:47 1676694326
>>1676376
Раньше делали стандартный набор:

Repository/Persistence
Services
Domain
Web

Щас, после промывки мозгов дядей бобом (Uncle Bob) делаем так:

Core
Application
Domain
Infrastructure
Persistence
ExternalWebApi
Messaging
Любой внешний сервис
Presentation
Web
Api
iOS/Anroid/Desktop/Чего душа пожелает (ну или бизнес)
Tests
Аноним 04/05/20 Пнд 21:29:20 1676698327
>>1676694
Макаба пробелы съела, давай еще раз, только с дефисами.

Repository/Persistence
Services
Domain
Web



Core
--Application
--Domain
Infrastructure
--Persistence
--ExternalWebApi
--Messaging
--Любой внешний сервис
Presentation
--Web
--Api
--iOS/Anroid/Desktop/Чего душа пожелает (ну или бизнес)
Tests
Аноним 04/05/20 Пнд 23:54:08 1676845328
>>1671954
Хорошо, значит 4 стабильная. Перепроверил настройки VS, там 3.1 версии стоят.
Как исправить проблему с Assembly not found? >>1672048
>Ты скажи, что ты подключаешь и откуда
Короче я решил допилить одно приложение. Установил VS, mono, клонировал сам проект с гита. Напротив одного из референсов стоит красный крестик и ошибка Assembly not found.
Добавить его через Add references не получается, его там нет. На этом месте я хз что делать.
Аноним 05/05/20 Втр 00:02:05 1676855329
image.png (862Кб, 1200x857)
1200x857
аноны, быстровопрос, где нужно ловить ексепшин? одни говорят что ексепшин надо словить в том же методе где он выступает другие что надо ловить его выше, на какой стул сесть на какой мать посадить, какие подводные у этих двоих решений?
Аноним 05/05/20 Втр 00:37:06 1676884330
>>1676698
Спасибо, анон. В принципе, это то, что нужно
Аноним 05/05/20 Втр 00:38:55 1676886331
>>1676845
Может, тебе numerics нужен? Кажется, матрицы там есть
Я не помню, а сейчас гуглить неудобно
Аноним 05/05/20 Втр 01:49:19 1676961332
>>1676855
Смотря что именно тебе нужно. Допустим, у тебя есть метод, взаимодействующий с тысячами объектов в базе. Соответственно, если у тебя будет ошибка соединения с базой, у тебя прервется полностью выполнение метода. Чтобы такого не произошло, можно ставить локальный обработчик. https://dotnetfiddle.net/uIRRAC

По "выше": допустим, у тебя есть апи (Опустим пока возможность использования атрибутов для обработки исключений)
Имеет смысл делать каждый метод обращения в следующей форме: https://dotnetfiddle.net/GIYPmc
Чем кидать необработанное исключение, если оно где-то нашлось, лучше его обработать и сохранить куда надо
Аноним 05/05/20 Втр 01:59:22 1676967333
большое спасибо за примеры!
Аноним 05/05/20 Втр 01:59:39 1676969334
>>1676961
большое спасибо за примеры!
Аноним 05/05/20 Втр 03:03:00 1676979335
Может кто сталкивался тут с проблемой unload с json в core 3.1
Не получается делать unload когда использую хотя бы раз serialize или deserialize с типом из сборки которую затем надо выгрузить.
Нашел такую же проблему в issue https://github.com/dotnet/runtime/issues/13283
Но решения оттуда не помогают, если убирают работу с json все работает как надо, но с ним ничего выгружаться не хочет.
Испробовал Newtonsoft, utf8json, Jil и стандартный json, что делать уже ума не приложу.
Аноним 05/05/20 Втр 11:02:03 1677109336
>>1676979
Вызывай serialize или deserialize уже после того как выгрузишь сборку. JSON это же строка, сохранить её перед выгрузкой сборки труда не составит.
Аноним 05/05/20 Втр 11:04:21 1677112337
>>1665542
>>1665540 (OP)
Обновите инфу на актуальную.
Некоторые ссылки идут на 404.

Джозеф Албахари, Бен Албахари "C# 7.0. так понимаю, что 5.0, которое есть в шапке это старая версия? или пролог,первая часть? Справочник. Полное описание языка"
или таки
Эндрю Троелсен "Язык программирования C# 5.0 и платформа

Ангельский не знаю, но по причине того, что очень глубоко лезть не буду, думаю этого будет достаточно.

Вопросы будут нубские, эта ебанутость для ознакомления
Аноним 05/05/20 Втр 11:08:13 1677118338
>>1677112
Алсо: Визуал Студио скачал, нагрузки поставил. Есть какие нагрузки для нубов?
до этого чисто по ошибке, лол ставил Визуал Студио Коде. И охуел с того, как VS за тебя дописывает и исправляет строчку.

ЗЫ: в примере по самоучителю предлагают такой код
System Console.WriteLine. Я правильно понимаю, что на текущий момент System не пишется?
Аноним 05/05/20 Втр 11:15:10 1677120339
>>1677118
> нагрузки поставил
*ну основную, для С#
Аноним 05/05/20 Втр 11:16:31 1677121340
>>1677112
>Обновите инфу на актуальную.

Скажи спасибо, что перекатили.

>Джозеф или Эндрю

Троелсен, конечно, Джозеф это вообще не учебник, а своего рода справочник, который детально разбирает каждую часть языка не вдаваясь в информацию для новичков. От Рихтера её отличает только отсутствие разбора IL-кода.
Сначала читаешь Троелсена, потом уже можешь прочитать Джозефа. После чего переходишь к Рихтеру. Закрепляешь всё паттернами и принципами проектирования:
Agile Principles, Patterns, and Practices in C#
И всё, считай уже можешь пилить свои тудушки. Останется только отдельно почитать литературу по базам данных, EF Core, ASP NET Core и ты будешь готов к вкату.
Аноним 05/05/20 Втр 11:19:25 1677122341
>>1677121
Я не знаю, что такое "тудушки" и "вкату". Я просто знакомлюсь с языком, чтобы понять юнити, чтобы понять ink.
Спасибо за выбор автора
Аноним 05/05/20 Втр 11:27:41 1677132342
>>1677122
Для юнити тебе нужен хороший математический бэкграунд.
Аноним 05/05/20 Втр 11:42:45 1677161343
>>1677118
Если у тебя в файле указано "using System;", то System можно не писать. Если есть учебник по Троелсену 6.0 на русском - раздел "Доступ к пространству имен программным образом"
Аноним 05/05/20 Втр 11:59:12 1677192344
15860137901180.jpg (132Кб, 840x654)
840x654
15799801749910.png (1Кб, 224x217)
224x217
>>1665540 (OP)
Если заблокировали аккаунт на майкрософт и требуют принять смс для разблокировки (хотя я ничего не нарушал но телефон палить не хочу винда лицензионная) - можно ли создать другой аккаунт на фейкопочту и спокойно работать дальше?
После открытия проекта через 5-10 секунд появляется экран входа и убрать его нельзя.
Аноним 05/05/20 Втр 15:56:11 1677630345
>>1677109
Так очевидно я использую тип из сборки которую загружаю в качестве параметра для json. Из-за внутреннего устройства библиотеки она кэширует его где-то там в результате из-за этого ничего выгрузить нельзя. Если бы я хотя бы смог узнать где оно кэшируется то через рефлексию бы чистил, но там черт ногу сломит.
Пришлось написать свой парсер с возможностью очистки кэша по типу и в результате все выгружается.
Пока создатели библиотек не добавят такой функционал думаю придется своим велосипедом пользоваться для выгружаемых библиотек.
А ждать походу придется долго, так как проблема у многих еще в прошлом году появилась.
Аноним 05/05/20 Втр 16:31:26 1677678346
>>1676979
Отпишись в их issue, что все варианты перепробовал и оно всё равно валится. Приведи пример кода. И себе и коммьюнити поможешь.
Аноним 06/05/20 Срд 07:45:10 1678427347
1588740309142.jpg (47Кб, 636x536)
636x536
>>1676698
Снова тот анон. Пытаюсь разобраться с архитектурой. Открыл пару примеров на github с небольшими проектами. Кажется, что это какой-то шлак
Например:
https://github.com/ivanpaulovich/clean-architecture-manga

Больше всего я не понимаю, зачем вводить UnitOfSet со своим репозиторием, когда у нас есть охуенный EF? Он уже абстракция, и имеет кучу адаптеров к разным базам

В итоге мы получаем кучу лишних строк кода и, самое плохое, деградировавший функционал. Более того, это дерьмо не гарантирует транзакционности. Анон, может, ты скажешь, зачем так пишут?
Аноним 06/05/20 Срд 11:20:17 1678505348
Криптобояре на месте?
Чому если из мелкософтовского системного экзешника выдрать X509Certificate, на его основе создать X509Certificate2 и попробовать его верифицировать, то верифай возвращает false (например, тот же lsass.exe или svсhost.exe)? Пользовательские (например стим/хром/дискорд) верифаятя нормально. Объясните мне тупому плс кто в этом шарит.
Аноним 06/05/20 Срд 12:31:24 1678568349
Подскажите годную книгу по entity framework, в первых двух постах пусто
Аноним 06/05/20 Срд 12:52:07 1678599350
>>1678568
А не слишком ли целая книга по орм'ке? Тем более оно там все меняется. Бери доки да читай.
Аноним 06/05/20 Срд 12:53:20 1678601351
>>1678568
У троелсена читай, потом документацию.
Аноним 06/05/20 Срд 14:42:42 1678705352
Аноны, я здесь новенький. Знаю JS и Python. Вижу очень часто С# в качестве бэка (веб). Хочу вкатиться, шапку читал, был небольшой опыт с чистым С и даже Asm. Но постоянно сомневаюсь - а нужно ли оно мне? Вижу C# я в основном в серьезных структурах, в васянских пыха, нода. Так вот, мне нужно только ваше мнение
Аноним 06/05/20 Срд 14:55:49 1678715353
>>1678705
Так ты сам себе ответил. Да, если ты собрался делать проекты для малого бизнеса (васянов), то никто не обрадуется твоим поделиям на .NET, которые требуют больше времени, при этом предлагают лучшую производительность и расширяемость (которая малому бизнесу нахуй не нужна). Если ты собрался работать на более-менее уважающие себя компании, то такие компании не обрадуются, когда узнают, что ты им бэк собрался пилить на пыхе.
Аноним 06/05/20 Срд 15:12:35 1678737354
уэааа уэааа уЭА[...].webm (864Кб, 720x720, 00:00:04)
720x720
>>1665540 (OP)
Блять сука, вот почему линейные участки программы легче поддаются оптимизации, чем все другие части внутреннего представления программы и объектного кода?!?!?!?!? сука не понимаю объясните
Аноним 06/05/20 Срд 17:33:58 1678889355
>>1678705
В тренде сейчас Blazor, остальное сосет.
Аноним 06/05/20 Срд 18:12:41 1678927356
Аноним 06/05/20 Срд 19:30:42 1679018357
Аноним 06/05/20 Срд 19:42:33 1679025358
>>1679018
Прокуратура, таможня
Аноним 06/05/20 Срд 21:15:51 1679083359
Помогите кто-нибудь, я уже с ума схожу, я не могу понять почему этот блядский кусок кода работает черех жопу.
https://pastebin.com/P3pykf5U
Код просто поочерёдно берёт строку из файла и смотрит, из каких символов она состоит. Если только из нужных, то возвращает true. И всё работает замечательно, НО, когда я пытаюсь записать правильную строку в другой файл, то начинается какая-то магия. Конкретно вот тут
if (right == true)
{ sw.WriteLine(line); }
else { sw.WriteLine("NET"); }
Мне не нужен этот else. Если запустить с else, то он запишет и нужные строки и ненужные, на месте ненужных будет NET. А теперь внимание, если убрать этот else, то он ВООБЩЕ НИЧЕГО не запишет, хотя должен записать только нужные, что логично. Причём прога в if заходит, отрабатывает код, но не записывает ,сука ебаная, файл пустой.
Аноним 06/05/20 Срд 21:19:59 1679085360
>>1679083
Сейчас для интереса сделал вот так
>else { sw.WriteLine(""); }
и получил то, чего и хотел, но мне просто интересно уже.
Аноним 06/05/20 Срд 21:25:32 1679088361
>>1679085
А, не, нихуя, я думал, что если с writeline прокатило, то можно и просто write, чтобы кучи пустых строк не было, но нет, лол, если write, то он опять-таки нихуя не записывает.
Аноним 06/05/20 Срд 21:27:20 1679090362
>>1679025
Прикольно, не похоже на языки программирования.
Аноним 06/05/20 Срд 21:43:02 1679097363
>>1679083
>>1679085
>>1679088
Ты бы хоть тестовый файл скинул, а то там у тебя кодировка необычная, может в ней дело. И про Flush/AutoFlush не забыл?
Аноним 06/05/20 Срд 22:18:06 1679121364
Аноним 06/05/20 Срд 22:40:37 1679135365
>>1679121
var input = Environment.GetEnvironmentVariable("HOME")+ "/Downloads/source.txt";
var output = Environment.GetEnvironmentVariable("HOME") + "/Downloads/output.txt";
var allowed = "ともかく".ToCharArray();
var lines = File.ReadAllLines(input).Where(x => x.All(y => allowed.Contains(y))).ToArray();
File.WriteAllLines(output, lines);

Выводит
かも
とか

とも

もと

かく

とく
ともかく
Аноним 06/05/20 Срд 22:47:26 1679140366
>>1679121
>Это японская кодировка
Алсо, файл был в UTF-8, не знаю, где ты там откопал японскую кодировку
Аноним 06/05/20 Срд 23:05:55 1679148367
>>1679135
Спасибо, работает. Хотя всё же интересно, почему так странно у меня работала запись.
>>1679140
Файл в ней и не должен быть, она нужна была для работы со строками.
Аноним 07/05/20 Чтв 01:27:26 1679209368
Аноним 07/05/20 Чтв 01:27:33 1679210369
>>1676694
>Core
>Application
>Domain
Что лежит в каждом из них?
Аноним 07/05/20 Чтв 01:31:14 1679212370
>>1674502
>Аноны, как получить ссылку на структуру?
ref используй. Но ты явно делаешь что-то неправильно.
Аноним 07/05/20 Чтв 01:32:11 1679213371
>>1679210
Бля, не заметил пост ниже с дефисами, вопрос отпадает.
Аноним 07/05/20 Чтв 03:42:41 1679248372
>>1678889
Либо ты поддерживаешь gRPC с каждым пчелом, который зашёл на сайт твой сервер сосет, либо предлагаешь загрузить ему несколько мегабайт wasm'a твой клиент сосет
На мой взгляд, у блазора на текущий момент две ниши – сосать бибу числодробилки и внутрикорпоративные порталы
Аноним 07/05/20 Чтв 09:25:17 1679350373
>>1679148
>Хотя всё же интересно, почему так странно у меня работала запись
У меня на маке всё работает в твоей программе, надо только кодировки выкинуть. Попробуй вручную флашить.
Аноним 07/05/20 Чтв 10:41:00 1679379374
>>1679148
> Хотя всё же интересно, почему так странно у меня работала запись.
Можешь скинуть минимальный нерабочий проект и файл?
Аноним 07/05/20 Чтв 16:23:46 1679823375
изображение.png (53Кб, 1121x646)
1121x646
>>1677678
Я попытался сам исправить ситуацию без собственного парсера так как мой вариант все же был в 1.5-2 раза хуже по производительности, не говоря уже о примитивном функционале.
Мне удалось исправить Serialize чтобы все работало путем исследования памяти и добавления возможности очистки кэшей.
Но вот Deserialize стал непробиваемой проблемой.
При том проблемой магического плана.
Магия заключается в том что не в windbg не в dotmemory не показывается что в памяти хоть где-то есть ссылка на мой загружаемый через сборку тип.
Путем сравнения чистого приложения и после тонны загрузок/выгрузок мне удалось найти место где похоже что-то сохраняется, но вот как очистить это дерьмо я не представляю. Как туда добраться через рефлексию хер знает, класс не статичный, а что именно создает это дерьмо я боюсь даже представить. А значит и передать объект в качестве аргумента для получения этого поля я так же не могу.
На этом мои познания в устройстве .net походу иссякли и я не вижу выхода из этой ситуации кроме как продолжить использовать свой парсер или отказаться от идеи выгрузки сборок вообще. Тупо оставлять их в памяти пусть захламляют оперативку.
Аноним 07/05/20 Чтв 16:46:19 1679862376
>>1665540 (OP)
Если хочу начать изучать шарпы, то следует лучше обратно на винду перекатиться? Или на маке в MonoDevelop тоже норм работается?
Аноним 07/05/20 Чтв 17:01:08 1679878377
>>1679862
Зависит от того, что ты под "норм работается" подразумеваешь.
Аноним 07/05/20 Чтв 17:05:52 1679883378
Аноним 07/05/20 Чтв 17:12:57 1679891379
>>1679823
Я имел ввиду написать это в их github -> issue.
Здесь тебе врят ли кто-то поможет, потому что данных не хватает. Тут надо целиком код смотреть.
Аноним 07/05/20 Чтв 17:15:48 1679893380
>>1679823
что это за говнище на скрине?
Аноним 07/05/20 Чтв 17:16:05 1679894381
>>1679862
Я на маке в VS for Mac работаю. Полёт нормальный. Некоторых крутых фишек конечно не хватает и решарпер не поставишь. Но тебе от этих фишек ни холодно ни жарко. Тебе в ней комфортно еще несколько лет будет, а потом начнёшь замечать, что можно было бы и то и это заиметь. А там может на Rider пересядешь или МС студию под Мак допилит.
Аноним 07/05/20 Чтв 17:22:18 1679897382
>>1679891
Там полгода это висеть будет.
При том это проблема походу на стороне net core, иначе бы она решилась загрузкой сборкой в тот же контекст.

>>1679893
dotmemory со snapshot того места где растет память при deserialize в загружаемой/выгружаемой сборке.
Аноним 07/05/20 Чтв 17:31:21 1679907383
>>1679897
зачем тебе вообще десериализация JSON нужны была?
Аноним 07/05/20 Чтв 17:47:18 1679926384
>>1679823
А загружать парсер в appdomain в который ты загружаешь нужную сборку с нужным типом, пробовал?
Аноним 07/05/20 Чтв 18:34:36 1679983385
>>1679897
Ну хорошо, через пол года пофиксять. А если проблему не двигать, то пофиксят условно никогда. Пол года быстрее чем никогда.
Аноним 07/05/20 Чтв 19:17:06 1680044386
>>1679907
Чтобы заполнить нужные мне типы в сборке данными которые должны лежать отдельно и не быть хардкодными.
При том основное приложение об этих данных ничего не знает и знать не должно, максимум что оно знает это то что они реализуют некоторые интерфейсы и то не факт.
Тут проблема будет не только в JSON, многие вещи оказывается кэшируются в различных небольших кэшах и не дают выгрузить сборку. В частности Expression тоже кэширует свои типа при некоторых вызовах. В результате получаем полурабочую выгрузку, работает только для примитивного кода, что-то более сложное уже не выгрузишь.

>>1679926
В самом начале делал это.
Уже кучу парсеров так перепробовал.

>>1679926
У кора только один домен, теперь все грузится в контекст. Но это не помогает, так как большинство кэшей это статик, а он в основной контекст грузится независимо от того загружаю я сборку или нет. Наверное статик попадает в тот контекст в котором впервые использовалась сборка, а это в большинстве случаев основной контекст.

>>1679983
Вообщем мне удалось победить это дело через очень и очень грязные трюки с рефлексией.
Так по сути делать нельзя, но другого пути тупо нет.
Все дело вот в этом говне:
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs#L13
Вот тут хранятся какие-то данные о типах, при том в ключах вы не найдете не одного упоминания о своем типе, но я тупо не разбирая что там забил все с помощью null и все стало выгружаться. Мне уже тупо не хочется разбираться что именно не дает выгрузить и почему, а затем обнулять именно этот ключ.
Зато узнал что оказывается с core 3.0 нельзя через рефлексию менять readonly поля, получишь эксепшен.
Аноним 07/05/20 Чтв 19:17:47 1680046387
Как у вас с работой дела? Чтобы вкатиться новичку - обязательно реакт с css дрочить?
Аноним 07/05/20 Чтв 19:23:03 1680053388
>>1680044
>При том основное приложение об этих данных ничего не знает и знать не должно, максимум что оно знает это то что они реализуют некоторые интерфейсы и то не факт.
У тебя архитектура проекта - говно, раз тебя таким анонизмом нужно заниматься. Сочувствую вообщем
Аноним 07/05/20 Чтв 19:27:09 1680060389
>>1680053
То есть если у меня фактически изолированные сборки которые юзают главный модуль и которые могут выполнять свои функции и затем выгружаться это говно архитектура?

Аноним 07/05/20 Чтв 19:52:50 1680091390
>>1680060
>и затем выгружаться
с костылями, скрипом и пердежом - да
Аноним 07/05/20 Чтв 22:32:09 1680291391
Снимок.PNG (49Кб, 1811x734)
1811x734
Сап, делаю небольшой проект в вузе. Необходимо написать эмулятор нормальных алгоритмов маркова и машины тьюринга. С НАМ я как-то разобрался, но возник вопрос. Допустим юзер ввел в прогу такой алгоритм, в котором на каком-то правиле происходит зацикливание. Надо как-то определить это и послать пользователя нахуй, а не просто завесить всю программу. Код функции НАМ на скрине.
И ещё интересуют какие-то понятные объяснения, как реализовать машину тьюринга или примеры готового кода. Буду очень сильно благодарен.
Аноним 07/05/20 Чтв 22:49:54 1680308392
.mp4 (15043Кб, 1920x1080, 00:00:24)
1920x1080
Нуб на связи. Как правильно обмениваться данными между потоками?
Есть поток основной программы(интерфейса), в нем создается новый "рабочий" поток, который работает в бесконечном цикле. Как изменять его переменные/передавать команды? На ум приходит сделать глобальный флаг, который активируется, когда нужно что-то передать, а рабочий поток будет все время проверять его в цикле, и если флаг активирован - будет проверять и обрабатывать уже другие глобальные переменные/флаги. Это должно работать, но выглядит извращением. Есть какая-то правильная, элегантная реализация? Или все так и делают, через глобальные переменные?
Аноним 07/05/20 Чтв 22:59:47 1680320393
>>1677112
Вау. Я вообще удивлен, что эта шапка до сих почти не обновлялась. Я пилил ее года 4 назад наверное, когда еще студентотой был и когда активно тут сидел и всем помогал. Сейчас ее видеть в такой виде довольно странно, хоть и приятно.
BTW для сомневающихся (как я в свое время): C# и .NET платформа сейчас очень даже нужна и хороших специалистов реально очень мало.
Аноним 07/05/20 Чтв 23:21:23 1680341394
изображение.png (121Кб, 1179x1179)
1179x1179
>>1680091
Раньше были домены которые позволяли выгружать проще, но там ебля была с общением между загружаемой сборкой и основной. Приходилось делать маршалинг, плюс потери перформанса, при том серьезные.
Сейчас же они сделали выгрузку по возможности если ничего сборку не держит, но при этом не учли всех момент которые есть не только во внешних библиотеках, но так же в самом языке.
Вот методы (еще на скрин не все влезло, плюс неизвестно кто еще те методы вызывает) которые создадут скорее всего проблему при использовании их в загружаемой сборке, потому что они кэшируются в статичную переменную которую невозможно без рефлексии очистить.

>>1680308
Делаешь ConcurrentQueue, затем юзаешь AutoResetEvent или ManualResetEventSlim(если нужна прям производительность, у авто лаг 1-2 мс), пока в ConcurrentQueue есть команды берешь и выполняешь их, как только команд нет, event.WaitOne(); в рабочем потоке.
Когда поток нужно запустить event.Set(); в основном потоке.
В результате пока задачи есть поток трудится, иначе спит в ожидании пинка.
Аноним 07/05/20 Чтв 23:51:51 1680368395
>>1680308
Сурс видео?
Девчонки смотрят на неё более пристально, чем парни.
Аноним 08/05/20 Птн 00:25:05 1680399396
>>1680308
Никаких глобальных переменных! Никакого изменения состояния объектов более чем одним потоком! Это путь студентов и индусов.

Очередь тебе в руки (типа RabbitMQ, но вообще любую, почитай доки на эту тему).
Флаг можно менять через БД.
Управляемый объект можно создать в основном потоке и отдать его в бэкграунд поток, где он будет readonly и изменять состояние в основном потоке, если нужно.
Аноним 08/05/20 Птн 00:47:58 1680422397
>>1680308
>сделать глобальный флаг
Земля тебе пухом
>>1680320
я вообще удивлен, что кто то еще смотрит в этот тред
>>1680341
да на скрине 80% это линк, не могли под него интерфейс взаимодействия запилить? Походу какой то CRUD через multiqueue дрочит твой "модуль", а ты теперь с рефлексией трахаешься. Эх, кайф
>>1680368
дрочильня в другом разделе
Аноним 08/05/20 Птн 00:50:38 1680424398
>>1680422
>дрочильня в другом разделе
в который доступа нет
Аноним 08/05/20 Птн 01:08:47 1680438399
Подгоните идей на курсач по ООП на шарпе. Если можете - несколько, пожалуйста
Аноним 08/05/20 Птн 01:09:04 1680439400
.webm (6579Кб, 406x720, 00:01:14)
406x720
>>1680341
>>1680399
Спасибо, сейчас попытаюсь разобраться.

>>1680368
Это какой-то конкурс на открытие магазина(шоп ру, там на стене есть), инсту и вк тян находили в б, но я не сохранял.
Аноним 08/05/20 Птн 02:38:08 1680462401
Аноним 08/05/20 Птн 02:56:43 1680471402
>>1680308
"Глобальные переменные" это мютексы, но нет, так делать не надо. Внешние системы MQ тоже использовать не надо, они для другого. Надо использовать всякие очереди и каналы. Один поток случает очередь, другие формируют задание и передают его главному потоку через очередь.

Не знаю C# совсем, судя по всему тебе надо смотреть на ConcurrentQueue<T>
Аноним 08/05/20 Птн 10:32:12 1680563403
image.png (28Кб, 1438x161)
1438x161
image.png (77Кб, 1324x583)
1324x583
image.png (49Кб, 1278x421)
1278x421
Парни пидец нужна помощь есть задание
Не могу вальнуть вопрос с удалением песни из каталога
Помогите чутка вот кусок кода.
Как удалить из списка и потом вернуть обновленный словарь.
Аноним 08/05/20 Птн 11:10:56 1680585404
>>1680563
У препода спросишь
Аноним 08/05/20 Птн 11:15:13 1680591405
>>1680563
эх, сейчас бы не знать, как работает библиотека из GAC. Нахуй ты учишь это говно, если даже не хочешь в нем разбиратсья?
Аноним 08/05/20 Птн 18:06:37 1681159406
>>1680308
> рабочий поток будет все время проверять
Т.е. рабочий поток будет крутить бессмысленный цикл? осмотри на BlockingCollection - поток будет спать, пока не появятся данные для обработки.
Аноним 08/05/20 Птн 21:10:49 1681504407
>>1680563
С конца фором перебираешь песни и Removeat на индексе который соответствует твоему ифу.
Аноним 08/05/20 Птн 23:51:53 1681676408
image.png (68Кб, 996x545)
996x545
image.png (7Кб, 827x84)
827x84
Смотри анон, пишу дискорд бота для шикимори и встал вопрос.
Когда делаю запрос из кода, оно думает почему то, что я делаю GET запрос на страницу авторизации. Но когда делаю аналогичный запрос из постмена, то все работает как надо.

Что не так то блядь? Где я туплю? При этом пост запросы делаются так же в других местах бота (например авторизация, там даже рут тот же, только тело немного другое. Вот доки кста: https://shikimori.org/oauth) и все работает.
Аноним 09/05/20 Суб 00:10:24 1681693409
изображение.png (21Кб, 681x349)
681x349
Аноним 09/05/20 Суб 00:29:21 1681711410
>>1680291
для начала добавь проверку rulesTotal.Lenght = 0, а то у тебя вечный цикл, инициализацию rulesTotal упрости хотя бы $"{твоя хуйня}", также for можно на foreach заменить, самое просто добавить таймаут и заводить алгоритм юзера в таске - не успел иди нахуй
Аноним 09/05/20 Суб 00:46:46 1681721411
>>1681676
Ты на ссылки посмотри. Он тебя редиректит на sign-in страницу, поэтому и GET. А почему он тебя туда редиректит - это другой вопрос.
Проверь статус у твоего response и вытащи ответ через ReadAsStringAsync(). Там или 401 или 403 или 302.
Аноним 09/05/20 Суб 02:23:53 1681761412
>>1681721
Проблема кстати решилась созданием в методе Post своего инстанса HttpClient. Не ебу почему так.
амет 09/05/20 Суб 15:19:42 1682127413
Вопрос по ЕФ. Вот у меня есть две сущности - зоопарк и животное. В конфигураторе какой сущности стоит описывать связь? Т.е. я могу в зоопарке прписать zoo.HasMany().WithOne(..., а могу у животного dvacher.HasOne().WithMany(... Есть тут общепринятые стандарты?
Аноним 10/05/20 Вск 06:10:41 1682789414
image.png (24Кб, 808x205)
808x205
image.png (15Кб, 484x259)
484x259
Уважаемые аноны, вопрос :
я пытаюсь сделать так что бы при добавлении продукта на диалоговом окне окно закрывалось и главное окно где раположен список всех продуктов автоматические обновлялся, для этого я использую первый скрин в нем присутствует часть "mainWindow.Refresh();" собственно она должна отвечать за обновление контента,
на другом скрине представлены 3 метода, два метода это евентХандлеры от кнопок которые обновляют страницу вручную при нажатии, а третий Refresh() вызывается собственно с дочернего окна и должен по аналогии с первыми двумя методами обновить каталог но этого не происходит, метода проходит дальше, дочернее окно закрывается обновление не происходит, собственно вопрос, почему и как фиксить?
Аноним 10/05/20 Вск 08:02:52 1682820415
>>1682789
>почему
Зависит от того как оно у тебя сделано. Но вкратце после this.close() хрен что выполнится
>как фиксить?
Делать до закрытия тут же или в событии
Аноним 10/05/20 Вск 11:56:44 1682947416
Подскажите плес книги по архитектуре приложений и алгоритмам, но чтобы было написано, как для тупых. А то я синтаксис шарпа вроде выучил, но на данном этапе всякие солиды и паттерны выглядят для меня, как излишнее усложнение, которое заставляет плодить файлы, классы, интерфейсы ради сомнительной выгоды и ещё больше запутывает. Сразу вспоминаются шутки про "ООП головного мозга", когда на каждый пук-сереньк 1000 файлов с интерфейсами, классами и т.д.
Можно на английском.
Аноним 10/05/20 Вск 12:01:38 1682953417
>>1682947
Agile Principles, Patterns, and Practices in C#

Всё объясняется довольно подробно, есть много реальных примеров. На протяжении всей книги будет создаваться программа для расчета зарплаты сотрудникам.
Единственный минус - книга 2008 года. Поэтому код немного устарел и в нём нет свистоперделок вида интерполяции строк через $ или нулл-исключающего оператора. Но это не так важно, потому что самим паттернам и принципам уже овердохуя лет. И после прочтения ты легко освоишь современные паттерны.
Аноним 10/05/20 Вск 12:06:46 1682963418
>>1682953
Спасибо, посмотрю. На тухлый синтаксис действительно всё равно. Да и вообще даже на язык. Суть ведь в содержании, а не форме.
Аноним 10/05/20 Вск 14:59:15 1683180419
Аноним 10/05/20 Вск 16:36:29 1683269420
>>1683180
>Поскольку камрады
>камрады

Чего ты здесь забыл, камрад?
Аноним 10/05/20 Вск 16:49:38 1683278421
Выбрал сишарп для вката в айти, подводные какие, может все же в джаву? До этого баловался питоном в школе. Смущает малое кол-во джуниор позиций в дс, не знаю что будет к зиме вообще на рынке твориться.
Аноним 10/05/20 Вск 17:06:59 1683294422
>>1683180
>критика книги по паттернам от автора книги по паттернам
А что, звучит легитимно.
Аноним 10/05/20 Вск 17:09:04 1683297423
>>1683294
>рряяя, его книга говно, а вот моя книга по той же теме намного лучше ррряяя
Аноним 10/05/20 Вск 18:15:51 1683374424
>>1682820
я пробовал до закрытия, все хуйня
Аноним 10/05/20 Вск 18:29:09 1683392425
>>1682789
У тебя дочернее окно как открывается, диалогом или нет?
Аноним 10/05/20 Вск 18:41:30 1683403426
image.png (7Кб, 566x107)
566x107
Аноним 10/05/20 Вск 18:49:34 1683412427
>>1683278
Джуны не нужны. Их сейчас выращивают сами компании потому что это дешевле и практичнее. Рынок переполнен вкатывальщиками дебилами из-за которых дешевле вырастить джуна самому, чем пытаться нанять. Больше времени и денег уйдет на поиски.
Конторы которые еще хоть кого-то набирают в 90% случаев построены на наебалове, где в лучшем случае тебе хотя бы 20-30к за месяц заплатит с дикими переработками. А у особо хитрых ты еще и должен останешься. Плюс работа в таких компаниях это считай волчий билет в индустрию. Так как оттуда выходят угольки (выгоревшие люди), а такой человек это беда для компании.

Если у тебя не будет проекта на гитхабе через которой тебя могут позвать на работу или в резюме не будет ссылки на ПР который пошел в ядро или топ библиотеку, при том реальный ПР, а не правка орфографии, то лучше иди на стройку, поверь там условия в десятки раз лучше будут.
Аноним 10/05/20 Вск 18:50:22 1683413428
>>1683403
Тогда в главном окне подписывайся на событие закрытия дочернего (или делай свое событие, если данные должны обновляться не только при закрытии) и в обработчике обновляй данные главного окна.
Аноним 10/05/20 Вск 18:58:59 1683421429
Аноним 10/05/20 Вск 19:03:30 1683424430
>>1683421
Что именно? С событиями не умеешь работать?
Аноним 10/05/20 Вск 19:06:23 1683426431
>>1683424
не знаю такого события для окна на закрытия другого окна
Аноним 10/05/20 Вск 19:09:40 1683431432
Аноним 10/05/20 Вск 19:12:41 1683435433
>>1683431
так погоди, это хандлер который выполняется на том же окне что закрывается перед закрытием, чем оно тогда отличается от просто вызова метода в другом окне?
Аноним 10/05/20 Вск 19:16:33 1683440434
>>1683435
Тем, что дочернему не надо ничего знать об окне, вызвавшем его.