Это копия, сохраненная 29 февраля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c#
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C#-6
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: https://pastebin.com/YJFQKsNm
Прошлый тред тонет здесь: >>1528262 (OP)
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином
- C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
11. Хочу еще хардкорней
- C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата.
- Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода.
- .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF
Из более-менее актуального можно выделить пару книг:
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET
- Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
- Pro ASP.NET MVC 5 Platform (Adam Freeman)
- Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому
- Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции
- Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
- Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином
- C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
11. Хочу еще хардкорней
- C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата.
- Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода.
- .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF
Из более-менее актуального можно выделить пару книг:
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET
- Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
- Pro ASP.NET MVC 5 Platform (Adam Freeman)
- Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому
- Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции
- Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
- Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
Джаваскриптеру неприятно? Ну учи дальше новый фреймворк, пока трудотнетчики сидят на месте
Для начинающего - нормальная. Не настолько уж сильно все поменялось за это время. Конечно, хорошо бы что-то поновей.
Я прост обосрался, пытаюсь маняврировать
Блядь, там отличий-то почти нихуя нет, при этом обратная совместимость во все поля. Это же не блядский С++, где между первыми версиями и последними отличий столько что мать ебал, тут же все попроще в плане изменений.
правда
Если брать старьё, то лучше Рихтера. Из нового Троелсен топ.
Программа будет использоваться для поиска файлов на диске
Пользователь следующие критерии и они должны быть сохранены при перезапуске программы:
1. Стартовая директория (с которой начинается поиск)
2. Шаблон имени файла
3. Набор символов, которые могут содержаться в файле
Затем пользователь нажимает кнопку Поиск и программа начинает отображать следующую информацию в режиме реального времени:
Все найденные по критериям файлы в виде дерева (как в левой части проводника). Дерево не должно подвисать, моргать тормозить и т.д. Во время поиска пользователь может ходить по дереву, открывать/закрывать узлы.
Какой файл обрабатывается в данный момент
Количество обработанных файлов
Прошедшее от начала запуска поиска время
Пользователь должен иметь возможность остановить поиск в любой момент и затем либо продолжить его либо начать новый поиск.
>Дерево не должно моргать
В WinForms делаешь DoubleBuffered = true, а в WPF двойная буферизация по дефолту используется, нужно всего лишь оптимальный ивент/луп для перерисовки написать. А к чистому WinAPI ручками бы пришлось прикручивать, да.
Какой нахуй ивент луп, всё делает при помощи привязок к свойствам объекта и интерфейса INotifyPropertyChanged
Не ивент луп, а ивент или луп, специально же слэш поставил. Я не знаю, какая у него/тебя архитектура программы, и как организована перерисовка - по какому-то условному ивенту (например, нахождение ещё не отрисованного каталога высокого уровня) или в лупе (каждые n миллисекунд). Имелось ввиду, что требуется только оптимальное написание вот этой части кода, а каких-либо телодвижений для прикручивания двойной буферизации в WPF совершать не нужно.
>Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском)
2014-2015 - по новее что-нибудь есть?
Могу сделать за тебя, всего 5к возьму по-братски-аноновски. Сам посуди, ты эти деньги за пару часов на этой работе отобъешь.
Ты шо, совсем нищеблядок, за 5к что-то делать? Я думал ойтишники пятерками жопу вытираюст после сранья.
А в формочках этих ебаных никакого замла нету что ли? Как дизайнить формочку, просто контролы тягать мышкой штоле? Где гриды, где все? Что за хуйня?
Я как-то давно их ковырял, потом перешел на впф, год уже примерно. И сейчас вот эта залупа с тестовым заданием. Причем на собес то я в любом случае не пойду, лол.
Параметры.ДолгПо = ПредыдущийМесяц( Параметры.Месяц, Число( Параметры.@МесДо ) + 1 );
Параметры.ДолгС = 01.01.1900;
Параметры.Кредиторы = Отчеты_ОрганизацияВОтчет( Параметры.@ДержателиДолга );
Параметры.ВыводитьВсех = Параметры.Флаги;
Параметры.МесяцДолга = ПредыдущийМесяц( Параметры.Месяц, 1 );
Параметры.@Раздел = 'Список лицевых';
КатегорияПостВОтчет = Извлечь( Параметры.@КатегорияПоставщиков, "" ) == "" ? -1 : Число( Параметры.@КатегорияПоставщиков );
ПоставщикВОтчет = Извлечь( Параметры.@Поставщик , "" ) == "" ? -1 : Число( Параметры.@Поставщик ) ;
КатегорияВОтчет = Извлечь( Параметры.@КатегорияУслуг, "" ) == "" ? -1 : Число( Параметры.@КатегорияУслуг );
УслугаВОтчет = Извлечь( Параметры.@Услуга, "" ) == "" ? -1 : Число( Параметры.@Услуга );
УКВОтчет = Извлечь( Параметры.@УК, "" ) == "" ? -1 : Число( Параметры.@УК );
Параметры.МояДата = ПредыдущийМесяц( Параметры.Месяц, 3 );
потому что неткор появился, разор и прочее
Я это не пишу, я пытаюсь разобраться в этой параше. У нас стоит купленная софтина, и местами работает не так, как нужно, поэтому приходится править. Я вообще не очень понимаю, зачем так извращаться, если сама софтина написана на джаве. Зачем этот птичий язык было изобретать, может кто-то объяснить ньюфагу?
https://github.com/linq2db/linq2db
Наш слоган: СЧАСТЬЕ БЫТЬ ВМЕСТЕ.
Parametry.DolgPo = PredydushhijMesjac( Parametry.Mesjac, Chislo( Parametry.@MesDo ) + 1 );
Parametry.DolgS = 01.01.1900;
Parametry.Kreditory = Otchety_OrganizacijaVOtchet( Parametry.@DerzhateliDolga );
Parametry.Vyvodit'Vseh = Parametry.Flagi;
Parametry.MesjacDolga = PredydushhijMesjac( Parametry.Mesjac, 1 );
Parametry.@Razdel = 'Spisok licevyh';
KategorijaPostVOtchet = Izvlech'( Parametry.@KategorijaPostavshhikov, "" ) == "" ? -1 : Chislo( Parametry.@KategorijaPostavshhikov );
PostavshhikVOtchet = Izvlech'( Parametry.@Postavshhik , "" ) == "" ? -1 : Chislo( Parametry.@Postavshhik ) ;
KategorijaVOtchet = Izvlech'( Parametry.@KategorijaUslug, "" ) == "" ? -1 : Chislo( Parametry.@KategorijaUslug );
UslugaVOtchet = Izvlech'( Parametry.@Usluga, "" ) == "" ? -1 : Chislo( Parametry.@Usluga );
UKVOtchet = Izvlech'( Parametry.@UK, "" ) == "" ? -1 : Chislo( Parametry.@UK );
Parametry.MojaData = PredydushhijMesjac( Parametry.Mesjac, 3 );
s/ch'/ch
Нужен ли asp MVC, что такое Razor (это часть MVC? или Отдельно). Что брать для базы данных. Чего нет для веб разработки в net core?
Я о си-шарпе, а не о джаве.
>Воскресить его.
В таком случае твой стэк это MSIL и его компилируемые элементы. Когда воскресишь, приходи. Посмотрим, что получилось.
>зачем тебе
Скажи лучше, зачем ты сидишь в треде языка в которого не веришь. Тебя обижали шарп разработчики?
молодых оберегаю. Я как Болвар Фордрагон, хранитель засохшего на трусах говна
бамп
ниже есть Get started. https://linq2db.github.io/ - сходу нашел.
Хуй знает, как вы осваиваете язык, если вы даже нагуглить банальных вещей не можете
Чел, ты... Блять, иди в пизду умник ебучий, я в курсе что там написано, поэтому и спросил куда код писать. Покажи мне, где тут написано об этом?
Ты жопой читаешь, уёбок?
> у меня есть проект WEB API c MVC, нашёл фреймвор для работы - linq2db, а куда писать код вообще не понял. В моделс создать класс из дб, а в хом контроллере реализовать запросы ?
>молодых оберегаю
Лол, я думаю я даже старше тебя.
Поел в свое время говна джавы, скажу с уверенностью - дотнет годная альтернатива для тяжелых многолетних проектов (как минимум выглядит так). Тем более сам си-шарп в разы удобнее как инструмент. А с 5 версии у них вообще все кроссплатформенно будет. Ну я молчу про годные фреймворки поддерживаемые официально. Это крайне удобно и круто. И главное МС в это может реально, в сравнении со всякими эплами и гуглами, которые высерают недо-языки.
Хз что тебе от шарпа бомбит, высри нам свою историю боли, мы послушаем. в замен могу высрать про жабу и пузырь раздутый вокруг сие говна
Ну так себе альтернатива, есличестно, в случае многотабличных интырпрайзных крудов та же херня со вкусом говна, только еще и с испорченным телефоном-балластом в виде команды фронтэнд-макак и девопса, с которыми вместо пяти секунд хуяк-хуяк на JSF+PF нужно совместно фичу делать.
>А с 5 версии у них вообще все кроссплатформенно будет
Шел 2к19, в решетках 8 версия, а у тебя все 5. Если ты про кроссплатформенность, то это Core.
Энивей, все что ты высрал - твое субъективное мнение, которое != требованиям рынка. Открывай HH, language rate и чекай. ASP.NET 3.0+ я думаю в скором будет поддерживать какой ни будь новомодный язык с динамической типизацией без промежуточной перекомпиляции. Нужно же идти в ногу со временем. intelisense заменяет ошибки компилятора, не то что, как раньше.
>>56480
>а в хом контроллере реализовать запросы
>реализовать запросы
>в хом контроллере
у тебя мать жива? Если все еще да, то после таких вопросов у меня для тебя плохие новости.
Твой вопрос был, захуярить ли интерфейс с БД в контроллер или создать отдельный класс? С кем я диалог веду, с табуреткой?
Для таких как ты, уебищь тупорылых, сыновей хуйни, делают GetStarted, где ПОШАГОВО расписывают, как применять интерфейс взаимодействия фреймворка к твоей свестелке-перделке.
Уровень программирования 2ch/pr, лучше удали нахуй
>Шел 2к19, в решетках 8 версия, а у тебя все 5.
Все в своей криокамере сидишь, даун.
https://habr.com/ru/company/raiffeisenbank/blog/451136/
https://www.opennet.ru/opennews/art.shtml?num=50641
https://habr.com/ru/company/raiffeisenbank/blog/451136/
Воу воу, вот это открытие, открывайте скорее шампанское. Ты думаешь индусятине с корпорации зла нужно было 17 лет, чтобы накатить .NET на Linux? Скорее всего просто WS сливают и IIS вместе с ним
>Тем более сам си-шарп в разы удобнее как инструмент. А с 5 версии у них вообще все кроссплатформенно будет.
смотря в каком контексте читать. Я забываю, что двачеры мыслят сумбурно и не только временами не умеют читать, но и перескакивают с мысли на мысль.
Ну все, пошло обострение, заговоры и прочее.
>корпорации зла
Где ты обратное видел вообще? Пора уже вырасти наконец.
Любая корпорация творит только ради своей выгоды и симулирует добро, пока пытается где-то рынок откусить. До сих пор вижу шизиков с раздвоенным восприятием, где гугл то у них корпация добра то зла.
Сейчас мелкомягкие решились расширить свое участие на рынке, от чего вкуснятина посыпется на разработчика. Что как бы и не плохо.
мне похуй че там думает какой-то анонизмус с двачей
если завтра все эти шарпы-джавы закроются и востребованными станут быдлокодеры на фортране, то я и туда вкачусь
лишь бы деньги платили
а то мне нужно на что-то путешествовать, игори для плойки покупать и шлюх ебать
>ради своей выгоды и симулирует добро
Как молод ты и глуп и не видал больших залуп. Как давно ты знаком с продуктами той самой корпорациии? Ты блять историю Windows 95 почитай, про судебные дела, про EE 1.0, про скандал с Xerox
>решились расширить
сынок, хоть бы не пердел из под парты такую дичь. Мелкомягкие - это монополист условный в IT секторе. Она захотят туда, куда захотят, если это будет приносить профитаныч. Такие наивные блять, как дети
>>56813
>мне похуй че там думает какой-то анонизмус с двачей
И тем не менее ты ему отвечаешь
>если завтра все эти шарпы-джавы закроются
гей-шлюхи предпологаю востребованы, вкатывайся туда
>шлюх ебать
С этого вообще проиграл. Видимо решетки только инфантилы и студентота задрачивает. Жаль вас.
>The C# Player's Guide
Слышал очень резкие отзывы, говорят книга - хуйня и учит порочным практикам, так ли это?
Тебе то что с этого, ты был директором ксерокса?
Я в курсе EEE, но я так же в курсе оракла и какую подлянку гугл делал. И что мне теперь, как дурачок "воевать" с ними, нести святой флаг красноглазых? Просто почитай как делали не айти компании и приятно удивишься, что это такая вот обыденность в мире большого бизнеса.
Этот маня-мирок был прикольным в девяностых и нулевых, когда ты был студентотой, юным и глупым, была идеология противостояния, прям чуть ли не как в звездных войнах (вот тебе империя зла, вот тебе сопротивление). Но сейчас, когда ты большой и взрослый лоб, это кажется идиотизмом (и так оно и есть, потому что мир работает чуточку по другим правилам).
Прошу анона помочь с такими вопросами:
Нужно объяснение на пальцах таких моментов:
1. в чем разница между делегатом и событием в плане использования?
Насколько я вижу сейчас - событие всегда можно заменить вызовом делегата, если не так - буду рад увидеть кусок кода с опровержением и пояснениями.
Т.е. я как бы понимаю, что делегат - это ссылка на функцию, и клиент может вызывать там что угодно с подходящей сигнатрурой, а события - механизм вызова делегатов, и добавление/удаление событий осуществляется через lock (по умолчанию), но мы можем кастомизировать "геттер" и "сеттер" события через add/remove. В этом вся разница? Как отвечать когла спросят?
2. Dependency Injection
Я понимаю принцип, но в до конца в голове никак не уложится.
Суть в том, что клиент перестает зависеть от конкретного класса и начинает зависеть от интерфейса/абстрактного класса, что позволяет нам переиспользовать клиент, например, для тестрования, подсовывая ему любую хуйню, лишь бы реализовывала интерфейс? Правильно я понимаю? Был бы рад куску кода с пояснениями.
3.Dependency Inversion - в чем разница с Dependency Injection? В чем проявляется именно inversion
P.S. Также приветсвуются ссылки на related - статьи/гитхабы etc.
Заранее благодарен.
> в чем разница между делегатом и событием в плане использования?
В плане использования событие может быть вызвано только из класса, содержащего его.
>всегда можно заменить вызовом делегата
В принципе можно. Просто тебе дали уже готовую реализацию паттерна паблишер/сабскрайбер.
>клиент может вызывать там что угодно с подходящей сигнатрурой,
Чет коряво. Есть делегат - ссылка на метод, она может ссылаться на метод с подходящей сигнатурой (учитывая ковариантность/контрвариантность). Делегат можно вызвать и будет вызван метод (или группа методов в случае мультикастделегата).
>а события - механизм вызова делегатов
Механизм вызова делегата, это скорее Invoke, а событие в шарпе, повторюсь, это реализация паблишер/сабскрайбер (основана на делегатах плюс еще чуть-чуть).>>57341
>добавление/удаление событий осуществляется через lock (по умолчанию), но мы можем кастомизировать "геттер" и "сеттер" события через add/remove.
Да Только не через lock, а Interlocked.CompareExchange.
>>57341
>2. Dependency Injection
>3. Dependency Inversion
Довольно скользкая тема, injection можно считать вариантом реализации inversion. Лучше почитай Боба Мартина «Принципы, паттерны и методики гибкой разработки на языке C#». Там весь солид неплохо разобран, с кодом схемами и прочим. Еще есть классный блог Сергея Теплякова http://sergeyteplyakov.blogspot.com/2014/11/di-vs-dip-vs-ioc.html
Да, хранишь в куках токен. Для авторизации запросов подписываешь им их.
посвещать себя мелкомягким технологиям, как показала практика - вырванные годы. У них 2 альтернативы развития и обе агресивные:
1. Создали уникальный продукт - давим по всем фронтам;
2. Не создали уникальный продукт, а создали фейк ему и пытаемся вывести его вперед за счет приятных "плюшек", "сахарка", монотехнологичности
Решеточки то все знают, откуда взялись.
Насчет войны - это все бул щит в 2к19, когда все в опенсоурсе, даже мелкомягкие начали .NET core на гит выкладывать следовать мировым тенденциям, спустя лет так N-цать, ага И все, что делается у них - это путь стратегии №1 или №2.
Выпустили WebAssembly - Мелкомягкие - "Подержите мой Dhal, да у нас же Blazor"
Javascript всея, везде - Мелкомягкие - "Да у нас же TypeScript, ребята"
Мертвые технологии от мертвых душой продаванов.
Ситуация постепенно проясняется, спасибо тебе.
>в чем разница между делегатом и событием в плане использования?
В том, что event это модификатор, который создает проперти для делегата. То есть это как автоматические проперти с { get; set; } Компилятор генерирует приватное поле с делегатом и 2 метода для добавления и удаления обработчика.
Это нужно для инкапсуляции. Если просто сделать публичный делегат, то его может заменить, например, кто угодно. И все подписки проебутся.
>Dependency Inversion - в чем разница с Dependency Injection?
Ни в чем. Это ебанутые названия. Это то же самое, что strategy pattern.
Тогда начинай с Троелсена, потом читай Рихтера, потом можешь пройтись по Альбахири
Блджад, самоотправилось. если это они, пойду читать тогда, спасибо
Поясни за жабу, сейчас сам начинаю вкатываться вот и думаю куда. Шарп мне представляется наиболее оптимальным вариантом для входа в IT.
Поддвачну вопрос.
Почему и куда?
Троелсена есть 7 на русском (на торрентах не искал, потому что читал на английском), Рихтер тот, главное последней редакции.
>Как быстро вкатиться с крестов в шарп?
Также как с ассемблера в кресты. Также как с питона в шарп. Т. е. если с крестами сложностей не было и ты их действительно знаешь, то шарп должен показаться лёгким.
>Открыл проект, а там main внутри класса, который внутри пространства имён, я охуел просто
А выше идёт еще AppDomain который внутри процесса.
Оно? Смущает конечно немного "Pro", потому как я совсем не про, но похоже ничего другого нет.
Да, оно. Pro за счёт того что там рассматривается IL (то во что компилируются языки .Net платформы) и другие подробности, но при этом не детально. В остальном вполне для новичков подходит.
Спасибо.
Сиди в своей верстке и жс, зачем тебе тяжеловесный бэкенд-язык энтерпрайза. Аргументы командной строки это аргс, неймспейсы нужны для разрешения конфликтов именования, класс это свалка переменных и функций
>namespace, class
Для того чтобы изолировать переменные, методы и другую часть кода от того, что находится за ними. За namespace находятся другие namespace, все они являются частью AppDomain, который в свою очередь является частью Process, за процессом уже лежит система. За class находятся другие классы и все они лежат в одном namespace.
Вот и получается у тебя пирог вида:
Process
AppDomain
Namespace
Class
Делается это в основном для того чтобы можно было использовать свои и чужие классы в чужих и своих программах. Вот создал ты свою программу, у тебя есть в ней SomeClass, потом ты нашел другую программу и в ней есть нужный тебе класс, но название у него такое же SomeClass, при этом оно взаимодействует с другими классами в этой программе, т. е. просто переименовать его у тебя не получится, так как надо будет переименовать везде. А иногда у тебя вообще нет доступа к переименованию. Вот здесь и полезны пространства имён (namespace), ты просто пишешь using OtherSomeClass = OtherProgramm.SomeClass; и никаких конфликтов не происходит.
Также это позволяет не парится с выдумыванием новых имён для классов, достаточно придумать новый namespace и в нём продублировать нужное название. Либо вложить его в уже существующий класс.
В целом, всё это добавляется для большей гибкости и возможности использовать код повторно. Но сильно тоже нельзя увлекаться, потому что можно легко наплодить спагетти из пространств и классов.
>static void Main
А как по твоему компилятор узнает, с чего начинать твою программу? Вот для этого и существует такая условность, что точкой входа в программу будет являться статичный метод Main, если таких методов у тебя два, то при компиляции нужно указать, какой именно должен являться точкой для входа. Если такого метода нет, то это уже не программа, а библиотека с набором классов и методов.
>string[] args
Это параметры запуска, т.е то что ты вводишь в командной строке после .exe Или в свойствах ярлык. В коде ты можешь перебрать этот массив и в зависимости от ключей, выполнить какой-либо код или поставить какие-нибудь флаги.
Возможные виды данного метода можешь здесь посмотреть:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/main-and-command-args/
>namespace, class
Для того чтобы изолировать переменные, методы и другую часть кода от того, что находится за ними. За namespace находятся другие namespace, все они являются частью AppDomain, который в свою очередь является частью Process, за процессом уже лежит система. За class находятся другие классы и все они лежат в одном namespace.
Вот и получается у тебя пирог вида:
Process
AppDomain
Namespace
Class
Делается это в основном для того чтобы можно было использовать свои и чужие классы в чужих и своих программах. Вот создал ты свою программу, у тебя есть в ней SomeClass, потом ты нашел другую программу и в ней есть нужный тебе класс, но название у него такое же SomeClass, при этом оно взаимодействует с другими классами в этой программе, т. е. просто переименовать его у тебя не получится, так как надо будет переименовать везде. А иногда у тебя вообще нет доступа к переименованию. Вот здесь и полезны пространства имён (namespace), ты просто пишешь using OtherSomeClass = OtherProgramm.SomeClass; и никаких конфликтов не происходит.
Также это позволяет не парится с выдумыванием новых имён для классов, достаточно придумать новый namespace и в нём продублировать нужное название. Либо вложить его в уже существующий класс.
В целом, всё это добавляется для большей гибкости и возможности использовать код повторно. Но сильно тоже нельзя увлекаться, потому что можно легко наплодить спагетти из пространств и классов.
>static void Main
А как по твоему компилятор узнает, с чего начинать твою программу? Вот для этого и существует такая условность, что точкой входа в программу будет являться статичный метод Main, если таких методов у тебя два, то при компиляции нужно указать, какой именно должен являться точкой для входа. Если такого метода нет, то это уже не программа, а библиотека с набором классов и методов.
>string[] args
Это параметры запуска, т.е то что ты вводишь в командной строке после .exe Или в свойствах ярлык. В коде ты можешь перебрать этот массив и в зависимости от ключей, выполнить какой-либо код или поставить какие-нибудь флаги.
Возможные виды данного метода можешь здесь посмотреть:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/main-and-command-args/
Я ебу какую ты читаешь ? Про это вкратце в начале обычно говорят, потом отдельно про AppDomain рассказать могут.
Там в начале об это говорится, а про AppDomain отдельно.
> чем разница между делегатом и событием в плане использования?
Событие удобнее использовать, при этом оно имеет ясный юзеркейс, делегаты же это как бы более общая фигня и использовать их можно по всякому. По сути, событие - сахарок, чтобы тебе в юзеркейсе было удобнее реализовывать штуки.
> Dependency Inversion
> В чем проявляется именно inversion
В том что у тебя класса высокого порядка не зависят от нижестоящих. Инжекшены это вариант инверсии, но ты можешь ее и иначе реализовывать.
Тем более на таких вещах. Что будет дальше, страшно подумать.
Так а где тот взять? Я вот загуглил, таки есть расширение где сокет принимает Memory, вроде как он все равно в неймспейсе System.Net.Sockets, но студия упорно мне говорит, что нет такой перегрузки. Что я делаю не так-то?
Хм... Сейчас в vscode попробовал и все есть, только перед этим я сокеты нугетом подтянул. Но буквально утром в универе не было, хотя там тот же неткор 3.1, правда не вскод, а студия 2019. Странно.
>Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
Что ж, синтаксис шарпа побогаче, чем в жабке, да. Вот только если джава проверена временем и доказала свою пригодность для энтерпрайза, то про шарп никто ничего не знает. Соответственно, будет сложнее найти ответы на вопросы и более вероятно наткнуться на недоработку платформы. Возможно, когда-нибудь шара взлетит.э, но сейчас перспективы у него ну очень туманные.
Это что, новая мантра жабадаунов перед новым днём разгребания легасидерьма? Жаба никому не нужна, она живёт только потому что на ней написаны тонны дерьма, которые сложно переписать на что-то хорошее, на шарп, например. Переписывается только малая часть, остальная продолжает гнить и обрастать новым говнокодом. Жаба не обновляется, обновляются только фреймворки, которые созданы для разгребания дерьма, такими же рукожопами, которое это дерьмо плодили.
Над "сложнее найти ответы" можно только посмеяться, зайдя на постоянно обновляющийся https://docs.microsoft.com/, не говоря о стаковерфлоу и тонны годной литературы сконцентрированной на шарпе.
проигрываю с анонов, которые хватаются за решетки, как утопающий за соломинку
Ты посмотри, какие вопросы задают в треде - тут одна студентота и вкатывальщики. Кроме шараг и курсов твои решетки никому не нужны
>одна студентота и вкатывальщики
Конечно, потому что все знающие уже давно освоили docs.microsoft и stackoverflow, которые содержат исчерпывающую информацию на все виды вопросов.
> хватаются за решетки, как утопающий за соломинку
Ага, вакансии с зарплатой 120к+ тому подтверждение, да? Уже 8 версия вышла, а всё еще "утопающий за соломинку" лол.
Не копротивляйся ты так, а то студентота в этом треде прочтет и реально захочет вкатываться в решетки в 2к20 удачи им, лол
Что именно тебя интересует?
Тонна легаси разных форматов, от самоделок, до EE и выдрюченного магией спринга. Все это низкокачественные продукты многолетней индустрии "хуяк-хуяк и впродакшен". Чтобы там на конференциях тебе не продавали, джава абсолютный кобол. Ничего не развивается, всем насрать. Вечно пытаешься нятнуть одну хрень на другую, все падает или жутко жрет ресурсы (в том числе и твое время).
То что ты еще пытаешь видить в жабе альтернативу - это лишь благодаря андройщикам, которые так громко плескались в луже, что их все еще слышно (пока не пришел котлин и дарт с флаттером).
Забавно то, что потонет жаба, потонет и его все прокси языки.
JVM действительно хорош, с оговорками.
Чому нет?
Как бы .net ни был говном, это все равно хоть какая-то платформа с заготовленными педалями
Порог входа низкий, придумывать ничего не нужно
Некоторым и такого гребства за 120к достаточно
>ни был говном
До .NET 3.0 это был ад, уж поверь.
>Порог входа низкий
относительно чего? Тем более это не критерий успеха языка
Никому на рыночке срань мелкософта не нужна
Десериализовал, на консоль ничего не выходит, нихуя не понятно
Эксепшн ща выдает
Студент - да мне затестить
Jun - да мне перед код-ревью
Mid - да мне перед мерджем
Sen - да мне перед релизом
Быдлокодер, ты видимо кроме как буковки как писать в названиях нихуя не умеешь, я всегда придерживаюсь регламентов и пропаганды майкрософт
я тот, кто осилил ангельский, чтобы не задавать столько тупорылые вопросы на борде, а найти ответ на SOF
МММММ, КАКОЙ ВКУСНЫЙ ХЛЕБУШЕК
Так-то двачую. Вот буквально недавно на моей галере поручили переписать добро что было на джаве на шарпец, сам-то проектик небольшой, всего 25к строк кода на джаве, только вот на шарпе это вообще вышло в 7к строк, при этом производительность возросла в разы(конечно тут не совсем корректно про это писать, потому что я тупо переписывал на шарп, а просто тот же функционал реализовывал, но все же)
Тем временем Шарп и Аспнет с каждый годом растет в популярности лол
В крестах, например.
Стоит ли переходить на домашнем компьютере на неё же? Есть какие-то косяки совместимости, какие-то скрытые камни и так далее.
В целом MSVS использую только для одного рабочего проекта, который не запускается под IntelliJ Rider. Также хочу поиграться с Xamarin, не знаю как у него работа с Райдером, возможно придётся писать код в MSVS.
MSVS говно, им нельзя пользоваться после того как попользовался Idea хотя бы недельку. Но она, MSVS, мне всё равно нужно
Главный косяк новой студии в том что эта менюшка создания проектов уродлива что пиздец.
Шарп рулит.
Nы точно играл в раст? там баг на баге на каждом шагу. Вот другое дело Rimworld, этот Шедевр тоже на юнити сделан, тоже на шарпах(и на них же можно моды к нему пилить).
>Смотрите на меня я долбоеб
>Чел, ты долбоеб
>хаха я только притворялся земля пухом
Пиздец, зарепортил жирноту
Как же хочется что бы можно было на шарпах делать плагины для майнкрафта......
Фронтенд как-то легче во много раз
https://insights.stackoverflow.com/survey/2019
Что сказать хотел, клоун?
ASP.NET вообще топ-1 по популярности среди бекенд фреймворков
Я не знаю что это за ресурс и насколько достоверно он собирает статистику. Но в целом интересно
https://trends.builtwith.com/framework
bump
>Я не знаю что это за ресурс и насколько достоверно он собирает статистику.
>Стаковерфлоу
>Я не знаю что это за ресурс
Пиздец. И это хуйло что-то поясняет в треде кому-то.
Жаба кодер зарабатывает больше шарписта. На жабе написано много библиотек, часть из которых тупо 1 в 1 скомуниздили на шарп.
А так, в целом, и жаба, и жаба кодер сосут.
>Жаба кодер зарабатывает больше шарписта
И реально много там?
Надо еще среднее значение по определенному количеству посмотреть, а не только топ "прайсы".
Но да,у джависта больше ебли, он заслуживает это.
Особенно легаси на джаве, самое токсичное что я видел. Эта работа не стоит никаких надбавок.
> Жаба кодер зарабатывает больше шарписта
Это было раньше, когда шарп был приколочен к винде и M$ стеку. На данный момент уже не так.
> На жабе написано много библиотек
На питоне тоже много библиотек, даже больше чем на джаве, давай будем считать что питон теперь ванлав и вообще в любых задачах всех уделывает.
> часть из которых тупо 1 в 1 скомуниздили на шарп
Не скомуниздил, а позаимствовал удачные решения. Так-то, вообще смешно это слушать, учитывая историю джавы и M$, когда мелкомягкие вложились в развитие жабы, а та их опрокинула через жопу, вполне имеют моральное право.
>На данный момент уже не так.
По результатам опроса Stack Overflow за 2019 жаба на дне по зарплатам. Но лучше смотреть по секторам применения. Например, банковская сфера и богомерзкие жаба аплеты, которые работают на определенных минорных версиях IE 11 и каком-то древнем Firefox, всё еще живы. Т.е. безопасность и всякие хайлоады, а не мобилки и автотесты. Удачи заставить переписать всё это легаси говно, которое уже работает и приносит деньги.
Потом, я привёл лишь один из доводов, которые мне приводят знакомые жаба кодеры в пользу жабы. Дорогие языки из той таблицы, как F#, Rust, WebAssembly не просто так ведь дорогие: попробуй еще найди вакансию на этих языках и обычно это узкая направленность. Другое дело Scala и Kotlin, на которые жаба кодеры активно пересаживаются в промышленных масштабах и с умным видом задвигают про всякие аппликативные функторы. Кстати, туда же Go, на который активно пересаживаются пхписты и которые рекламируют его из всех щелей как манна небесная.
>На питоне тоже много библиотек
У каждого языка своё применение. Например, питон отлично заходит в AWS стеке, потом идет нода. Шарп проигрывает питону и ноде в производительности. Возможно, когда появится 3.1 на AWS, это исправит положение, так как рантайм F# обгоняет любой другой язык, чуть-чуть от него отстает C#.
>Не скомуниздил, а позаимствовал удачные решения
Это заслуга независимых разработчиков, а не мелкомягких. Например, если взять то же машинное обучение, благодаря которому питон стремительно развился в последнее время, то поделие от мелкомягких (https://github.com/dotnet/machinelearning) в значительной мере всирает TensorFlow.NET, который вообще пародирует конвенции питона и выглядит очень чуждо на C#.
Спорно, что быстрее. TcpClient и TcpListener - это просто обертки над Socket, с целью упростить работу с TCP сокетами. Класс Socket поддерживает другие протоколы и более тонкую настройку работы.
Ну, как-бы я проверил просто: принимаю клиента, асинхронно читаю и шлю то что пришло обратно, закрываю подключение. На 10к подключений, сокетом смог больше принять-обработать-отослать, чем связкой TcpListener+TcpClient. Правда я в случае с сокетами не делал никакого стрима для чтения, а писал в Memory методом ReceiveAsync, а клиент, как я понимаю, создает стрим, и ему пришлось ReadAsync создавать за кулисами, пусть и получал я в ту же Memory. Так вот, тех кого принять не смог, соответственно не смог создать сессию, у сокета в разы меньше.
>>59960
Смысл в том, что в реальных проектах, если ты хочешь использовать только Socket, тебе придётся реализовать всё то, что есть в TcpClient+TcpListener и в итоге у тебя либо получится также, либо хуже. Может и лучше получится, но тогда твой инструмент будет направлен на что-то конкретное, в нём не будет универсальности TcpClient+TcpListener.
Escape from Tarkov на Unity написан.
Шарп это потомок C и C++, какие нахуй маскоты? Ну можешь вот это использовать в качестве маскота:
https://ru.wikipedia.org/wiki/Диез
Ну, такой себе потомок. Ни обратной совместимости с обоими, ни такой же простоты стрельнуть себе в ногу на ровном месте, все обернуто в безопасный код, чтобы словить утечку памяти - нужно постараться. Да даже синтаксис только на первый взгляд похож, при повтором взгляде уже заметно слишком много различий.
Был официальный маскот. Какой-то Andy (Anders Hejlsberg): https://twitter.com/pjf/status/1154285137040826369
Аниме девку при желании можно найти на что угодно, пикрелейтед, набор стикеров за бакс.
Глубокой любовью к языку, конечно же.
ActiveUp.Net.Mail
Или посоветуйте, как лучше было бы все собрать с мыла яндекса. Так как вторым способом собирается пиздец долго.
Тем, что ты не можешь выебать язык программирования без его персонификации.
> Я же индексы даже не использую.
Откуда ты знаешь что там внутри библиотеки используется? Читай документацию и думай, что у тебя не так пойти могло.
Выучи всё что со знаком трейни, а остольное учи по мере необходимости. Если ты всё подряд читать будешь, то пока до практики дойдёшь, уже все знания улетучатся, так и попадёшь в вечный цикл чтения и изучения. Без практики никакого смысла в обучении нет.
Bitmap dd = new Bitmap(150, 150,g);
dd.Save("thi.bmp");
Почему сохраняется просто белое изображение? Если сохранять bmp, то все нормально
Чего я точно понял, это то что моих 1-2 часов в день практики и изучения(и не каждый день к тому же) точно недостаточно, нужно уделять намного больше времени.
есть проект, пока реализую его в консольном виде, потом хочу реализовать в виде web приложения и telegram бота, и желательно это все связать между собой.
>>59843
как же проигрываю со студентов(в лучше случае джунов) рассуждающих о рынке и о том, кто там у кого сосет
вы же просто дегенераты ебанные
вас на реальной работе за людей считать не будут, если вы слух будете подобные вещи говорить
а если по теме - то джава и шарп это языки близнецы, с + - одинаковыми зарплатами, одинаковыи проектами и одинаковы кол-вом вакансий
и оба языка еще очень долгое время будут востребованными на рынке труда
>а если по теме - то джава и шарп это языки близнецы, с + - одинаковыми зарплатами, одинаковыи проектами и одинаковы кол-вом вакансий
Если ты так рассуждаешь, то ты вебмакака, которая не чем не лучше студента или джуна.
Однажды создал шаблон, теперь пишу dotnet new прокидываю его. Брат жив, зависимость есть.
действительно, а давайте лучше хуклить, вместо того, чтобы спросить в соответствующем треде ыааа ыаа
топ решение
Желательно не слишком сложное и не слишком простое, у меня пока есть две идеи: ftp-клиент и vnc-клиент.
Записную книжку для хранения заметок.
фтп клиент - хорошая идея
>А во что из этих двух сортов говна приятнее нырять?
Ну в бекенд, наверное. Вакансий больше, конкуренция, я думаю, поменьше относительно геймдев разрабов (но это не точно)
>во что из этих двух сортов говна приятнее нырять
судя по посту - ныряй туда, где больше вакансий. Те, кому прет, те не спрашивают куда им
Логики чтения/записи довольно много, поэтому решил вынести её в отдельные классы (Reader/Writer).
Внешний пользователь работает только с классом Format и его производными.
Для единообразия апи классов Reader/Writer использованы интерфейсы.
Вопрос: оправдано это или нет? Или лучше будет удалить интерфейсы (IReader/IWriter) и использовать паттерн шаблонный метод?
Кто бы как реализовал данную задачу?
https://pastebin.com/Vkgd5QH2
>А у тебя типичная стратегия
Все дело в том, что пользователь не будет на лету заменять реализацию IReader/IWriter. Он даже не будет знать про их существование.
Они что-то вроде внутреннего апи получаются. Пока не знаю, будут ли эти классы выходить наружу и использоваться отдельно от класса Format.
Корректно ли спроектированы классы? Или нужно что-то изменить?
более менее нормально
я бы попробовал избавиться от производных классов Format, иметь только один формат класс и передавать ему в конструктор IReader & IWriter
далее, я бы попробовал объединить пары Reader и Writer классов в один класс, так как они наверняка будут семантически связаны и проще иметь все эти правила в одном месте
интерфейсы немного поковырять, что бы была понятна разница между парами Reader/Writer и Format
О, это ж Service Locator. Знавал я несколько проектов, пропитанных этой гадостью. Какая же боль поддерживать это говно. Сразу хочется перерезать горло той тваре, которая это говно добавило, особенно, если ещё додумалось сделать его статическим классом аля синглтоном.
Dependency Injection, описанная выше, нормальная (читай привычная) замена, пока конструктор не начнёт принимать огромное число зависимостей. Додумаешься до контекста и сделаешь кое-что страшнее Service Locator. Лет через 5-10 поймёшь, что не надо плодить сущности без надобности, нет универсального решения и существуют подходы, лучше DI, например Dependency Rejection.
https://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/
вот настоящий локатор. он правда говно жуткое, но я не знаю где ты его там увидел
может у тебя триггер на static?
Ещё есть варианты у уважаемых сисярп господ? Я пока всё ещё склонен к VNC клиенту, уже начал rfc читать
FormatFactory - это нехуя не фабрика, а Service Locator, у него есть определенные свойства, которые его сразу выдают. Например, это говно вообще не поддается тестированию в месте использования, в отличии от фабрики. По ссылке одна из его вариаций реализации.
да, похоже на то
>сделает еще какое-то действие, которое все мне нахуй испортит.
Значит проблема не в параллельности, а в архитектуре твоей говнопрограммы.
Не могу исключать такой вероятности. Тогда объясни, если я нахожусь внутри цикла и что-то там делаю и в этот момент хочу остановить таску, что тогда произойдет? Она же сразу не выйдет из цикла, да?
>Вообще это больше к команде чем к стратегии.
Это ты относительно IReader и IWriter?
>>61607
>я бы попробовал избавиться от производных классов Format, иметь только один формат класс
У каждого формата свои характеристики, по которым его можно идентифицировать (например, расширение файла), свои условия сохранения и проверки внутреннего содержимого. Поэтому не представляю, как избавиться от производных классов Format.
>и передавать ему в конструктор IReader & IWriter
С этим пунктом всё понятно.
>далее, я бы попробовал объединить пары Reader и Writer классов в один класс, так как они наверняка будут семантически связаны и проще иметь все эти правила в одном месте
Reader и Writer безусловного связаны семантически, так как действия противоположные друг другу. Класс Format как раз и объдиняет их.
>интерфейсы немного поковырять, что бы была понятна разница между парами Reader/Writer и Format
С этим пунктом тоже не очень ясно.
Можешь набросать пример, как ты это видишь?
>>61607
>О, это ж Service Locator
>>61675
>FormatFactory - это нехуя не фабрика, а Service Locator
Самая обычная фабрика. Пробегает по списку форматов и находит тот, который соответствует расширению файла.
https://pastebin.com/Jpr3NCLQ
Задрот, я через пару лет стану твоим менеджером-начальником и буду ебашить тебя кнутом по спине и ебать за проебанные дедлайны. Ты будешь молчать как терпила, а на выходных "изливать боль" на анонимных параша вроде двача или ебаного.ит
Долбоеб вкатывающийся в менеджмент через программирование через пару лет может расчитывать только на позицию junior cocksucker.
У вас нет нормально DI
Как раз наоборот - большинство нормальных менеджеров которых я встречал были бывшии разрабами, а вот "успешные успехи", никогда кода в жизни не нюхавшие или хотя бы тестировавшие - это поголовный сброд с которым работать неудобно.
>>61792
Люди бывают разные и ситуации тоже. Если сравнивать с другими сферами, то в айти охуенное начальство + у рядового гребца вполне есть возожность самому дорасти до начальника.
Спасибо, няша.
>31
>чего бы прочитать по шарпу
Можешь не напрягаться, на собеседовании тебя загнобят вопросом "Как вы отметили Новый Год?"
По факту, тебе нужно хорошо знать и понимать предметную область в которой будешь работать. Программист в вакууме первый год это одни расходы и берут их на вырост. Если бы бухгалтеры и прочие были чуть более обучаемы, кодеры бы были работодателям не нужны.
Т.е. план следующий: Ты изучаешь основы кодинга, т.е. синтаксис, базовые алгоритмы и прочее; затем изучаешь основы ООП, опять же, базовые вещи про инкапсуляцию, наследование, полиморфизм; затем выбираешь область в которой хочешь развиваться, идешь туда обычным работником, работаешь годик, потом говоришь что умеешь кодить и хотел бы в отдел автоматизации пойти и тебя без лишних вопросов туда отправят, если ты со своей работой справляешься нормально.
Я сейчас пьян, новый год же, но суть: работодателя не ебет как ты делаешь то что ты делаешь, хочешь хоть на ассемблере ебашь, важно чтобы было в срок и выполняло все требования. Всё. Не больше и не меньше. Если ты понимаешь как предметная область работает изнутри, то с вероятностью 95% тебе не нужно будет объяснять, чего бухгалтер там хочет получить, почему ты сделал хуйню, хотя работал по ТЗ и т.д. и ты сделаешь все нормально. Это то что хочет работодатель, на технологии, архитектуру и прочее он срать хотел с высокой колокольни: Есть бизнес задачи и их нужно решить, если ты знаешь как их решать, то тебе всегда будут рады в любой сфере, если ты просто умеешь писать код, то тебя придется учить -> ты должен конкурировать с кучей других таких же ебланов, которые только код писать умеют.
Скажу, что я хикка.
Понял, спасибо, учту. Я в муниципалочке работаю, я уже писал где-то выше, кодирую хуйню, которая тут никому не нужна. Ну, т.е. и без нее справляются, так что кодирую больше для себя. Только одну хуйню написал, без которой тут никак в силу того, что ввели обязательные онлайн-кассы и в них нужно выгружать инфу по платежам, понятно, не вручную. Зачем-то начал изучать впф, хотя, насколько я понял, сейчас востребованнее асп и всякие ентити фреймворк, вебапи и еще другие хуйни, которых я пока не знаю. Сейчас, вот, решил выдрочить сам язык как следует, а дальше, наверное, полезу в асп, благо работка есть, которая худо-бедно кормит и позволяет что-то изучать.
Ну вкатывайся в обычный асп, на коре мало кто сейчас разрабатывает, это всё в будущем
Ок, спасибо.
На пальцах: POCO:
public class User{
[Required]
string Name {get; set;}
string LastName {get; set;}
string Position {get; set;}
}
public class UserUI{
public void GetData(string name, string lastName, string position)
{
User user = new User();
user.Name = name;
user.LastName = lastName;
user.Position = position;
db.Add(user);
db.Save();
}
public void GetData(string name, string lastName)
{
this.GetData(name, lastName, null)
}
ETC...
Или
public class UserUI{
public void GetData(User user)
{
if(user.Name!=null){
db.Add(user);
db.Save();
}
}
На пальцах: POCO:
public class User{
[Required]
string Name {get; set;}
string LastName {get; set;}
string Position {get; set;}
}
public class UserUI{
public void GetData(string name, string lastName, string position)
{
User user = new User();
user.Name = name;
user.LastName = lastName;
user.Position = position;
db.Add(user);
db.Save();
}
public void GetData(string name, string lastName)
{
this.GetData(name, lastName, null)
}
ETC...
Или
public class UserUI{
public void GetData(User user)
{
if(user.Name!=null){
db.Add(user);
db.Save();
}
}
клиент создаёт объект UserDTO, он передаётся в GetData (хуёвое кстати название) и там уже копируешь из DTO в User
знаешь ответ.
Есть DAL уровень. В него входят CRUD методы на каждую POCO entity. Но если у меня для UI помимо обычного Create есть еще проверки на другие условия - можно ли это отнести к Business logic? К примеру - приход на склад с проверкой количества больше 0. Или проверка на уже существующее название? Что обычно на уровене DAL, exception, проверки?
dal тонкая обёртка/адаптер над нижележащей персистентностью, будь то sqlserver, dynamodb или завтра вообще .txt файлы
реализаций dal-ов в проекте может быть несколько
поэтому твои проверки лучше держать в другом месте
понял, спасибо. Еще вопросы, если не влень отвечать. В классах business logic нужно ли делать DI контейнеры на все сервисы, типо automapper, DAL, messageService, loggers? Я по привычке все реализовываю через интерфейсы создаю класс, под него делаю интерфейс и реализовую в классе, потом передаю не класс, а интерфейс.
По сути врядли будет подмена другой реализации через интерфейс, но это хорошая практика на сколько я знаю писать на абстрактном уровне. С другой строны - подвязывать кучу зависимостей в Ninject.
Что скажешь?
dal, messaging, всякие third party api лучше прятать за интерфейсами и делать DI, иначе например будет сложно писать тесты или
экспериментировать с инфраструктурой
у меня всегда болит голова от архитектурных решений. Вот сейчас - только 9 сущностей с половиной функционала, а уже куча DI привязанных и функционал раскидан по сборкам. Еще вопрос, я его уже раньше задавал в треде (этом или 15 не помню).
Делаю CRM на Core, где должна проходить регистрация всех действий пользователя. Соответственно в уровень выше от DAL идет реализация методов с входящим параметром ClientDTO. В каждый метод передается интерфейс IMessageService с реализацией MessageService, где есть только 1 метод, который регистрирует класс, в котором происходит изменение, дата и Client Id.
Правильно ли это? Или лучше через события как то реализовать?
Для наглядности - вот кусок кода:
https://gist.github.com/Hotriden/57d52bc0f0f13ed7969765c61113422b
что внутри messageService?
событие создания нового supplier следует публиковать сразу после того как он сохранён в базе, остальные вызовы убрать
logging следует отделить от messageService, в messageService идут только объекты событий которые издаёт supplier/каталог
на картинке [ скобкой обведен возможный баг - логгируешь дважды
> Правильно ли это? Или лучше через события как то реализовать?
лучше пока так
suppier'а своего проверь на null перед тем как обращаться к его свойствам
Говно, а не код. Стопиццот иф элс. Инкапсулируй логику кажлого блока в отдельных методах, так повысишь читабельность
Нет граничных операторов, код свалится в NRE
>что внутри messageService?
>с реализацией MessageService, где есть только 1 метод, который регистрирует класс, в котором происходит изменение, дата и Client Id.
спасибо, пофиксил
>Стопиццот иф элс
не такая насыщенная бизнес логика, чтобы разбивать на методы (имо). Но насчет If-else - согласен, не удобно читается, тем не менее - нужна проверка
>supplier создаётся контроллерем, я так понимаю. поэтому перепроверять на null не нужно
У тебя публичный метод, в него можно передать null и получить ошибку, больше никаких условий для добавления проверки на null не нужно.
все эти null-проверки это лишний мусор для глаз
если каталог вызывается контроллером, то туда не будет передаваться null
возможно стоит только проверить что каталог не существует (db.GetById(suppier.SupplierId) == null)
но это всё мелочи, я кажется понял что он делает с clientDto, лол
трудно прикинуть как это лучше реализовать не видя остального кода
>если каталог вызывается контроллером, то туда не будет передаваться null
Значит нужно как минимум заменить модификатор доступа public на internal. Но всё равно это не безопасно, потому что ты можешь использовать этот метод в другой части кода, там ты не сделаешь проверки на null и в итоге получишь NRE.
в хорошем коде NRE контролируется юнит тестами и Anti-Corruption layer, а не костылями вида if (input != null) размазанными по всему проекту
C var result - обосрался, это должен быть маппинг сущности ClientDTO в Client
>эти null-проверки это лишний мусор
Я уже выше спрашивал насчет проверок. Я никогда в реальных проектах не участвовал, поэтому задаюсь вопросом на каком уровне делаеть NRE проверки и Exceptions.
>трудно прикинуть как это лучше реализовать не видя остального кода
Я скоро выкину весь проект целиком на борду под предлогом опенсорса для всех желающих
Так он и не пройдёт юнит тесты, если в нём не будет проверок на null в таких местах. Anti-Corruption layer это скорее для случаев когда две взаимодействующие системы разрабатываются независимо друг от друга.
пройдёт, передача null не должна даже компилироваться
https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
в примере выше например, db.GetById(suppier.SupplierId) должна возвращать объект типа 'Supplier?', потому что он действительно может отсутствовать by design
тогда мы проверим на null и продолжаем дальше
> на каком уровне делаеть NRE проверки и Exceptions
некоторые проверочки - часть "бизнес логики"
другие - костыли на случай обосрамса программистов
мешать их лучше очень осторожно
>пройдёт, передача null не должна даже компилироваться
Вот только проблема в том, что не всё можно предвидеть на этапе компиляции, особенно если у тебя выполняются запросы к бд и другим ресурсам.
>C# 8.0
Это ты так пошутил? Или ты всерьез думаешь, что кто-то будет переписывать тонны кода?
ничего не нужно переписывать
и да, случаи отсутвия объектов можно предвидеть, nullable ref types как раз для этого
во многих функциональных языках уже давно (десятилетия) есть Optional типы (и нет null вообще), option<T> в F#, Maybe в хаскеле и тд
Поменять в коде старое на новое
начинал с метанита, потом, как устал хавать кал перешел на рихтера. все доходчиво и глубоко разъясняет.
Только вручную, увы
А ты хочешь, чтобы в книгах для начинающих Razor давался?
Например,
public class StringField
{
protected string name;
public string value;
public StringField(string name)
{
this.name = name;
}
public override string ToString() => this.value;
}
StringField sas = new StringField("supB");
Я хочу, чтобы можно было написать что-то типа sas = "kek"; sas = sas + " kok";
Но не могу, в шарпе нету перегрузки оператора=
StringField sas1 = new StringField("supA");
StringField sas2 = new StringField("supB");
то я хотел бы, чтобы sas1 = sas2 не перезаписывал параметр name
>>63572
>>63577
время охуительных вопросов
>4е издание рихтера для вкота
Какая хуй разница, какое издание? Книга эта с 4 версии .NET дописывается парой строк. Для вкота - нет, обосрешься причем жидко
>то я хотел бы
Ты оператор присвоение решил оверлоадить? Ты хоть сам понял, что ты высрал?
>С этой книги норм начинать знакомство?
В просторах сети есть 2 авторитетных учебника для подзалупных студентов (с переводом и без). Зачем тебе какая то %NONAME% писака косплеящий Шилтда?
открой Рихтера, почитай первую главу и реши сам. Осилишь - флаг в руки и пиздуй куда ни будь, точно не на галеру или собес, тебе еще тонны данных нужно обработать и запомнить
В кратце - если всё поймёшь, то изучай сразу с Рихтера, если нет, то возьми попроще что-нибудь, типа Троелсена или Шилдта, потом Рихтера всё равно лучше изучить.
Рихтера форсит фанат-шизик уровня фаната метанита. Рихтер сильно углубляется, новичок просто не сможет переварить всю эту информацию и усвоит максимум 5-10%. Для новичка лучше подойдет Троелсен, которыйвдается в подробности только там где это нужно и фокусируется на базе, либо Шилдт. Потом уже можно читать Рихтера, и интересней будет, и информации больше усвоишь.
Блядь, а ничего, что я в проперти можно запихнуть проверку какую-то, добавить какую-то логику, вызов событий и т.д., либо просто предоставить удобный интерфейс для получения данных, например у меня в классе время храниться в миллесекундах и каждый раз делить их чтобы получить час - заеб. Нет, блядь, какой-то питух сказал, что не нужны и мы будем за ним повторять как дауны.
>мода пошла
>какой-то питух сказал
иди обратно в свою петушарню, тут элитные господа сидят, использующие свойства
Не знаю из какого сельского форума ты вылез, но как в книгах, так и в продакшене уже все давно используют свойства.
Вообще-то оно существует из-за ООП, а именно инкапсуляции.
Вот я создал контекст базы данных, зарегистрировал его
services.AddDbContext(hostContext.Configuration);
потом я создал класс, реализующий интерфейс IService
public class SomeService : IService
{
private readonly AppDbContext _dbContext;
public SomeService(AppDbContext dbContext, string something)
{
_dbContext = dbContext;
}
}
Первый параметр конструктора передается через di, а как передать второй параметр?
И вот как этот сервис с параметризованным конструктором зарегистрировать?
Это не работает:
services.AddScoped<IService>(s => new SomeService(""));
Ты не правильно понял суть DI. Интерфейс передается в класс полем, который конструктром типа инициализируется классом, реализующим этот интерфейс. Будет типо такого:
public class SomeService
{
private readonly IService;
public SomeService(IService service)
{
IService = service;
}
}
Под этот IService в конструкторе можно подложить любую его реализацию
я не помню как точно это делать
но как минимум, ты можешь взять свой
services.AddScoped<IService>(s => new SomeService(""));
и зарезолвить db внутри лямбды
что то типа:
var serviceProvider = services.BuildServiceProvider();
services.AddScoped<IService>(s => new SomeService(serviceProvider.GetService<AppDbContext>(), "string something"));
гугли
https://stackoverflow.com/questions/32459670/resolving-instances-with-asp-net-core-di
ИМХО, часть рихтера еще и НИНУЖНА. То есть нужна конечно - C# вообще бессмысленных конструкций не держит, но эта информация в первое десятилетие работы может не пригодиться, а книгу новичкам советуют...
Мертвая хуйня, все нормальные конторы на формах сидят.
Зайди на hh.ru да посмотри, чего тупой то такой.
Зависит от задач. Есть принцип (закон Парето), который гласит, что 20% кода выполняется 80% времени. Т.е. оптимизировать необходимо ТОЛЬКО критические для производительности места в кода, а не всё подряд. Например, нет ничего плохого в том, чтобы написать свою версию урезанного LINQ для таких мест, которая будет работать на массивах и не использовать тормозной IEnumerable, замыкания, лямбды и аллокацию памяти на любой чих. Или использовать уже готовый nuget-пакет, но обычно своё кастомное решение лучше, так как имеет узкую направленность.
С другой стороны, есть области, где это оправдано и используется повсеместно, например, гейдев: https://youtu.be/L_uwDygZe48
>>64120
В кровавом тырпрайзе обычно используется в качестве вспомогательных утилит к какому-то куску системы. В сообществе есть неосиляторы WPF, потому не редкость встретить и WinForms или, в запущенном случае, сразу обе технологии.
Dolgosrochnui yazuk
Потому что оптимальный язык для того чтобы распробовать все это дело. Ведь школьники почему-то дюже не любят консольку и почему-то уверены, что весь серьезный софт должен работать нажиманием кнопочек, чтобы бегал прогрессбар и вот это вот все, а на шарпе ОЧЕНЬ просто сделать оконное приложение, даже не разбираясь что там под капотом, те же винформы это очень легко делать позволяют.
В большинстве других языков(не дотнетовских), чтобы то же окошко сделать приходится больше усилий приложить и это очень сильно отталкивает.
бывший школьник, который в школе именно шарпик начал учить
Наверно какой-то типовой проект, следующий шаг после хлловорда.
Делаешь массив ["день", "месяц"] и в зависимости от выбора, берешь из него соответствующий индекс, после чего добавляешь данные из массива в консоль.
Так запили общий метод в базовый класс, принимающий строку которую надо вывести, а в наследниках просто вызывай его с нужной строкой.
Да, блять, серьезно. Почему у вас 0 инфы в шапке по версиям вашей хуйни? Я ебу что ли, что там актуально сейчас.
(++userNumber == randomNumber || (userNumber - 2) == randomNumber)
-2 потому что при инкременте число изменяется. Как прибавить или отнять, но только для сравнения, чтобы еще одну переменную не делать?
Проблема в том, что, как обычно, везде у каждого свое мнение о том, что нужно прочитать ньюфагу. А ньюфагу, в свою очередь, хочется выбрать что-то, что позволит изучить язык с минимальными трудозатратами относительно других вариантов.
>The C# Player's Guide
>Очень хорошая книг для начинающих. Все изложено в четкой логической последовательности и в том объеме, который необходим.
>Абсолютно несогласен, книга - отстой, никому не советую для начала. В сишарп стартер паке ей делать нечего, не тратьте время зря.
Классика
Я больше не знаю никаких ваших типизаций, мне оно не нужно
>в шапке
Шапка устарела лет 5 назад. По одной книге язык не выучишь. Толку от знания только языка мало.
Троелсен и Шилдт - хороши для новичка. Тоже классика, но ты почему-то выбрал то что тебе хочется и исходишь из этого.
почему нельза переменную?
new[] { randomNumber - 1, randomNumber + 1 }.Contains(userNumber++);
Math.Abs(randomNumber - userNumber++) == 1
Шапка создана поехавшим анимешником и давно не обновлялась. Единственное, что годное с ней случилось - убрали метанита.
>убрали метанита
Почему его в последнее время начали хейтить? Ведь сайт существует уже очень давно.
говно вопрос - говно ответ
К сожалению, годы существования сайтов не исправляют опечатки и кривость повествования. Он всё также создаёт ощущение поделки студента, который просто попытался пересказать Троелсена, при этом делал это небрежно и с изрядной долей похуизма.
Всё так. Но хейтить его начали недавно по тем помойкам, где я лажу. Этот сайт что 10 лет назад, что сейчас в выдаче гугла может и не появиться вовсе. professorweb очень редко проскакивал, но все же намного чаще метанита. Тот, на котором был майнер одно время.
Может, раньше просто никто про метанит не слышал, и только недавно аноны его увидели, посмотрели и сказали "говно"?
Скорее всего так и есть. Мне был сам источник интересен.
Я хотел обновить шапку оп этого треда, но не уверен, что изменения понравятся, поэтому решил оставить
как для студента, быстро найти что то и сделать по аналогии, годный, но в качестве обучающего ресурса, так себе. Слишком уж в сжатой форме материал.
Не отвечай этому дебилу, ему вообще все шапки не нравятся, что бы ты не делал, оп предыдущих 20 тредов.
К слову изначально в шапку я ставил просто C# картинки и шапка состояла из "C# тред", без гайдов и этого всего. Ему это тоже не нравилось, так что просто забей.
Все, понял там не приравнивается значение.
получается число из единицы и userNumber и сравнивается с randomNumber. Приоритет выполнения у оператора + выше чем у ==, поэтому сначала произойдёт сложение.
ЗП? Опыт? Как дошел до такой жизни? В СНГ живешь или уехал уже? Что посоветуешь молодым-шутливым и вкатывальщикам?
странная аналогия на пикче. Она больше человек, чем зверь.
Проблема в том что если с конструкцией "class Success<T> : IResult<T>" всё хорошо, то классу Error параметр типа T нахуй не нужен, но вот написать "class Error : IResult<T>" компилятор не позволяет.
Я хотел было сделать класс Unit, как в любимой функциональщине, и написать class Error : IResult<Unit>, но тогда если из функции нужно вернуть IResult<string>, то ошибку из него вернуть уже не получится, т.к. IResult<string> это не IResult<Unit>. IResult делать ковариантным и писать class Error : IResult<object> - тоже не вариант, мне ковариантность нахуй не нужна.
Есть готовые паттерны для таких случаев?
>интерфейс-маркер (без методов)
Ужас.
>Есть готовые паттерны для таких случаев?
А зачем так усложнять?
class Result<T>
...bool Successfull {get;} //ну или HasError
Если это все крутится внутри проги используй эксепшоны, или try методы: bool TryDoSmthg(out result)
А еще лучше описывай решаемую задачу, а не тот способ который ты придумал, может найдутся варианты получше.
> Ужас.
Ну можно и абстрактный класс.
> А зачем так усложнять?
Ошибка - вернули один класс, всё ок - вернули другой, а дальше паттернматчингом разобрали. Нам switch на спидах завезли чтобы мы по старинке всё в один общий класс пихали а потом проверяли его поля?
Я просто параллельно фшарп ковыряю и попытался заюзать тип-сумму, но видимо придется действительно по старинке с IsError
>>65760
Похуй, сделаю примерно как тут https://habr.com/ru/post/267231/
Чсх когда делал через единый класс, Result так и выглядел, но показалось что хуйня
нэт. Ты можешь сумма сойти с таких сумм , стать жирным или спиться
нэт. На разговаривал с трапиком (HR мэнеждер в одной компании был(а))
зп 300к + (но основные деньги от инвестирования)
до жизни очень просто , заметил что вижу как надо делать с первого раза в это включая очень легкую и предполагаемую мутацию системы для бизнеса .
Если приближенно это что то вроде некоторые люди сразу читая условия задачи могут рисовать в sql правильно в нормализованной форме. (даже если задача очень сложная , много разных отношений и ты даже не знаешь в какойто момент что там дальше по задаче и как повлияет на текущий момент)
Молодым очень просто : сделать клон понятной хайлоуд системы. Вроде Ютуб, твитер.
На легаси пердолил некоторое время не так давно. С какой-нибудь либой расширений (типа Kendo), и для приложений, которым не требуется быть SPA - вообще хорошо живется. Хуяк-хуяк интерфейс за 10 минут и дальше бек пилить.
Мне так нравится как очередной нормис врывается в тред всякий раз когда ктонибудь постит на 100 км отдалённо напоминающее фурятину и такой "Ух какие вы все извращуги, я вот не такой, а вы такие, я вот прям смотрите какой я нитакой как вы. Видите? Я вот не люблю этих вот всех, вот почитайте моё мнение по этому поводу."
Какой-то симбиоз вниманиеблядка и пониёба. Никогда этого не понимал. Мне тоже много чего не нравится в интернете, Если бы я каждый раз отвечал в такой духе я 24 на 7 сидел бы в инете без продыху.
я думаю есть такие проекты, которые забили болт на UI и пилят все на ASP.NET. Но мне все же интересна общая тенденция, юзают ли его или все через Web api?
>которые забили болт на UI и пилят все на ASP.NET
Спешите видеть, у зумеров все что не спа то "забили болт на UI", лол.
> Но мне все же интересна общая тенденция, юзают ли его или все через Web api?
Тебе сказали уже, ты какого ответа ждешь, что мы тут с тобой вместе поцокаем языком и порассказываем какой razor говно?
>у зумеров
манямир, все кто спрашивают в тред зумеры
>все что не спа то "забили болт на UI"
я у людей с интепрайза спрашивал, а не у вкатывальщиков или студентоты подзалупной
>вместе поцокаем языком
нет, только ты и в том месте, откуда начинается разработка View в ASP.NET
>какой razor говно
Я реально спрашивал, "это" вообще кто то использует? И зачем он вообще нужен, если интерфейс взаимодействия на любой технологии backend-to-frontend это Web api?
У меня походу дела назрел другой вопрос - все .NET-тчики это full-stack? Типо везде пишут в required JS+Framework (vua/react). Типо зачем нанимать фронта, если .NET-тчик все сам сделает?
>Интирпрайз
Лол, ты же сам обоссаный вкатыш
Энтерпрайз это место наибольшей концентрации легаси, а легаси на асп это почти всегда разор
На твой вопрос ответил?
Год стажа в трёх разных тырпрайз конторах
>обоссаный вкатыш
>Год стажа
>в трёх разных конторах
да ты опастный перец хоть бы не позорился такое писать
ты пишешь, что razor говно, хотя это всего лишь компилируемая оболочка класса с DOM html страницы. Жаль тебя
>Энтерпрайз это место наибольшей концентрации легаси
в твоем селе, где нет продуктовых и все на аутсорсе - так и есть
бампаю вопрос
>Ты пишешь что разор говно
Ты совсем тупой какой-то
>Энтерпрайз где нет продуктовых
Ой блядь, ты бы хоть мемы выучил перед тем как быть баттхертом
Энтерпрайз у него не продуктовый на автомате, пиздец
>В твоём селе
Лол блядь, шизоид, скажи мне где тырпрайз НЕ легаси
И как раз таки в аутсорсе обычно его меньше
Ты вообще значение слов которые пишешь понимаешь?
>ты бы хоть мемы выучил
>мемы
>выучил
Вся суть вопросов в /pr/. Какой то малолетний долбоеб, который вчера только вкатился на галеру засирает ленту. Не знаю даже, нахуя я таким отвечаю
Ясно, это троллинг тупостью. Если не спа то похуй на UI. Если легаси то не энтерпрайз. Если энтерпрайз то не продуктовая контора. Если сказали что разор хорош в смеси с либами расширения, то сказали что разор говно.
Действительно хуй знает зачем ты это продолжаешь.
Из требований быстрое создание нового экземпляра стэйта и малый жор оперативы и что бы из луа шарповые функции вызывались как можно быстрее. Особо тяжёлой и замудрённой логики там не будет
>все .NET-тчики это full-stack
Как правило да, есть исключения, например, если проект очень большой.
В целом же, на большинстве проектов, на одном только бэке делать нечего.
Ваша параша уже загнулась?
сам себе отвечаю. neolua на базовых вещах просто рвёт nlua т.к. первый это полностью шарповая реализация и единоразовый компил скрипта в дерево выражений
>Вот тебе приятный и быстрый язык с лучшим на свете компилятором под винду
>Не, я хочу говна поесть дайте мне говна.
Решил вкатиться в программирование и выбрал шарп как первый язык для изучения. Так вот, немного почитав, я узнал, что разработка на шарпе для юнити и разработка на обычном шарпе очень сильно различаются. Поэтому, у меня появился вопрос. Куда, по-вашему, перспективнее и лучше пойти: вебдев/геймдев? Хелпаните плез.
Для справки: знаю html и немного css. Недавно изучал, до того как узнал о шарпе.
С юнити знаком лишь поверхностно, для сравнения.
Предлагаешь держать сервера на винде?
Делать игры в промышленных масштабах мало кому нужно, веб повостребованнее будет.
Я пытаюсь дальше развиваться, в с, и крестах освоился давно, захотелось человеческого ООП, в яву ступать не хочеца
мимо1567034-
сап анон, хуйня это все. Сейчас пашу, что лось ASP.NET full webstack dev-ом. Заебало все - овертаймы, больничный - без оплаты ЗП, 14 (10) дней отпуска. IT в 2к20 это дно, на просторах СНГ - так точно.
После работы переучиваюсь на слесаря-автомеханника. Вот это я понимаю работа. Похуй, что в тасоле, зато руками работаю, да и ЗП у хорошего спека не меньше, чем у Senior dev-a. Задумайся лучше над этим.
Украина? Какая галера? У нас отпуск/больничний по цене середней зп за последниеее 6 месацав в день
Да, название называть не буду (подписывал бумажки об конфиденциальности этого бадишопа). Отпуск - 10 дней рабочих (14 календарных), больничные - не гребешь, не платим. Сижу сейчас с соплями и кашлем, без компенсаций, когда выйду - пойдет гора тасков. Ебал короче ваше погромирование, за эти же деньги (мидла так точно) можно найти другую менее напряжную и более развязную работу.
У меня не по rate/hour - ставка месячная. Если берешь отгулы делят на КОЛИЧЕСТВО РАБОЧИХ, НЕ КАЛЕНДАРНЫХ КАРЛ и снимают с ЗП. Сколько с меня получают, я хз, думаю в пределах 20
>в месац
~1.5-2k
Для контраста - сменить сайлентблоки, тормозные диски, развал-схождение, ТО - это $500-600, из которых комплектующих если на $250-300 набереться, то это уже дорого. Поэтому маня мир погроммирование трескается тогда, когда узнаешь, что есть полно другой работы, за которую можно получить те же деньги при меньших усилиях.
Продаваны, которые не на ставке, а на сделке думаешь 3к не поднимают?
> Слесарь без любви к программированию самому по себе вкатился в говноконтору на хуевые условия, сгорел и теперь жалуется в треде сишарпа о том что кодинг говно, программисты не шарят за рынок
Проблема в тебе, не воняй.
пускай воняет, может отпугнёт немного ньюфагов - среди них ещё попадаются конкуррентноспособные
может долбоебам с борды прийдет в голову не форсить свой стэк
Сначала попробовал дефолтный MediaElement. Всякие мелкие видосы гоняет хорошо, но 1440p@
Поставил FFME - эта штука использует FFMPEG. Все равно результат такой себе. Ну, конечно, на моей GTX1080 все ОК, но на ноуте с Гиперпнем образца 2016 - боль.
Подумал, неужто встройка ноута совсем плоха? Но почему тогда дефолтный виндовый плеер тащит? А потом вспомнил, что в Winforms можно вставить тот самый дефолтный плеер. И вставил. И он тащит! С ним все прекрасно!
Что за херня? Ошибка в ДНК, или в Сешарпе и вправду нет нормального видеоплеера, исключая винформовый AxWindowsMediaPlayer?
Тогда вопрос почему в айти? Вошел из-за денег?
И что с этим делать? Есть какие-то варианты получить нормальную производительность плеера, не переключаясь на допотопные классы, которые написал еще мой дед в окопах Сталинграда?
Нет, я определенно на сайте Двач.
На сайте майкрософт есть только VS 2019, где мне найти 2017?
мимо-ньюфаг
Ни разу в вакансиях не видел этого слова. Читаю про него, пишут, что пиздатый. Спасибо за инфу.
спасибо тебе бро, угощайся
Типа адо нет на коре работать должна, не вижу бугурта
https://stackoverflow.com/questions/38510740/is-ado-net-in-net-core-possible
нет проблем для легаси-богов кроме ковыряния в говне На самом деле проблема большенства девов, когда смотришь в требования, а там EF, .NET 4.5+, Core 2.2
А по факту приходишь, а тебе дают хуйню хуйни, но т.к. в офере пункта такого нет, то месишь глину, пока не сдохнешь закончится офер
В общем работаю я на технической работе, но она никак не связана с программированием. И образование соответствующее. Но программирование всегда нравилось, и последние лет 7 учил шарп как хобби. Знаю его достаточно неплохо, писал несколько весьма полезных для себя приложений, и даже весьма приличную игру, но не дописал, завис в балансе и рефакторинге. Хотя есть вполне приличная демка. Знаю также на некотором уровне unity, как то начинал учить html, яваскрипт, уверен что без проблем освою любой другой язык.
Так получилось, что моя текущая работка загибается.
Есть мне шансы вкатиться куда-нибудь на зарплатку мидла? Совсем уж с джуниуров начинать неохота, хотя если там зп будет 100к не в дс, или от 200к в дс - то можно всё таки мне не 20 лет.
И может быть посоветуете что делать для этого? Гитхаб не юзаю, хоть и знаком, взять и написать пяток прог и выложить на гитхаб? Или подучить что то ещё?
Если закрыть глаза на излишние пристрастие автора к сахару, книга ультрагодная, без излишне глубокого мозгоебства, но с указанием всяких тонкостей и неочевидных мест.
И все шло заебись, пока не наткнулся на вариативность в универсальных интерфейсах и делегатах. Инфы, почему оно так работает дается крайне мало. Просто: "делай так. и будет заебок".
Решил глянуть, что по этому поводу говорит Троелсен, вроде он обычно по любому чиху приводит кучу ненужных подробностей и промежуточного кода. А там вообще эта тема не затрагивается.
Так вот вопрос, где об этом можно подробно прочитать?
Конечно вопрос индивидуальный, поэтому поделитесь вашим опытом, сколько у вас заняло времени?
Планирую 4 часа уделять
Насколько сложный код надо писать?
>Албахари
>ультрагодная, без излишне глубокого мозгоебства
сразу за инвариантность, ковариантность и контрвариантность подумал, хыыыыы
>А там вообще эта тема не затрагивается.
Тролсен - для щеглов, уровень - begginer. Албахари - Middle/Senior
Где искать материал? В интернете не осилившему гугл хороший совет имо
>>68942
>Совсем уж с джуниуров начинать неохота
есть дебичи, которые за бесплатно готовы работать, а ты тут выебываешься. Не хочешь быть погромистом что ли? Они же 300к/сек рубят
>>69037
>какие обязанности у C# джуна и мидла?
Фиксить баги, допиливать функционал, писать тесты, пить кофе, пиздеть, что сильно загружен и оверхард таски, просить деньги
>Насколько сложный код надо писать?
Пиздец какой сложный, что то на уровне ракетостроения или даже выше Погугли тему из вопроса про Албахари - ты охуеешь
Так что, опытные шапреры, есть идеи? Я даже попробовал либу, делающую плеер с DirectDraw (пакет WPFmediaKit), и стало лучше, но все равно результат работает тупее, чем ебаный винформовый плеер.
> Где искать материал? В интернете не осилившему гугл хороший совет имо
Ну блин, не ужели ты думаешь, что я бы пришел сюда спрашивать, предварительно не погуглив? В большинстве своем там объяснения уровня "вот пример вариативности, вот контрвариативности, запомните и пользуйтесь". Если и есть попытки объяснить это на пальцах, то все их веселые аналогии с животными мгновенно идут по пизде при объяснении контрвариативности, потому что она контринтуитивна.
Единственно годное объяснение я нашел в архивном блоге мсдн от разработчика языка. Но оно от 2007 года для 3ей версии шарпа. Там вариативность параметров универсальных делегатов только в планах.
Картридж черный canon 1200 стоит, рассчитан (официально) на 140 стр. Лучше купить книгу.
4 года в шараге по 2-3 часа в день в среднем только на шарп тратил. Могу кинуть собственной какахой в монитор только. Буду рад если с книгой будет по-другому
>4 года в шараге по 2-3 часа в день в среднем только на шарп тратил
Понял. Я просто в ахуе с челов, которые пишут что за полгода в айти вкатиться можно. Я от этого комплексую, потому что за полгода я совсем базовые вещи только освоил
я где-то так же даже подольше, но вот меня недавно "осенило" поставить зонд-трекер и я охуел: внезапно оказалось что большая часть моего времени тратится на бесполезную херню вроде серфинга двачей и прочего интернета
т.е. даже если я на бумаге уделяю, допустим, шесть часов на что-нибудь полезное вроде решеточки, над собственно решеточкой я реально работаю не больше часа, остальное просто сливается в трубу нахер.
что с этим делать пока не ясно, но по крайней мере теперь знаю в чем скорее всего заключается проблема моего херового обучения.
Все казенное. Плотют мало, зато могу невозбранно печатать книжки, на которые не хватает денех. Такой пидораший симбиоз.
Зато даже студия не такое лагучее дерьмо как пуйчарм, вниманиеблядь, свали в свой тред.
Посоветуйте либу, чтобы выводить frameless-видеозапись на экран, в идеале на все мониторы.
Я, как пистонодрочер, оффициально заявляю, что его преимущество в возможности возвращать массив различных типов:
def a():
...
-return intValue, strValue, listValue, tupleValue, neboValue, allahValue
Но с другой стороны, в многопользовательском проекте сисярп рулит именно потому, что там как раз-таки наоборот строгая типизация, и ты мгновенно при взгляде на метод понимаешь, какие типы он принимает в качестве аргументов и какой возвращает.
В пистоне приходится костылить это стрелочками справа от параметра.
В шарпе тоже можно, просто ты неосилятор тупой.
> Я, как пистонодрочер, оффициально заявляю, что его преимущество в возможности возвращать массив различных типов:
> def a():
> ...
> -return intValue, strValue, listValue, tupleValue, neboValue, allahValue
Вернуть object[] можно. Да, придётся проверять тип при работе с элементами этого массива, но возможность возвращать массив различных типов существует
Можно кортеж возвращать.
Просто макака не понимает, что в его петухоне делается всё тоже самое, просто за кулисами.
Значит выше по коду. Если у тебя где-то есть
try
{
SomeMethod();
}
catch
{
}
При этом в SomeMethod() у тебя есть:
SomeRequest();
Который может вызвать эксепшен, то он пробросится вверх, а если ты сделаешь так:
try
{
SomeRequest();
}
catch
{
}
То вверх ничего не пробросится, а проглотится внутри SomeMethod()
А нахуя вникать в ненужное говно, когда за тебя все машина делает? Вот ты страдаешь хуйней, определяешь массив с конкретными типами, а я просто взял и получил с ходу не определенный мною за ненадобностью массив. Ты, наверное, из тех петухов, у которых "Не прогал в ассамблере - не разраб! Не нопесал свой собственный игродвижок - неполноценный геймдев!"
Для того чтобы предоставить больше возможностей. Для того чтобы предотвратить говнокод. Петухонщик не будет думать, а не хуйню ли он делает, возвращая столько разных типов из одного метода, он просто сделает. В то время как программист увидит, что делает хуйню и переделает этот перегруженный метод в несколько. Но если этого сделать нельзя, то использует либо object[], либо кортеж, либо создаст отдельную структуру/класс для этого.
на самом деле, то что ты описал скорее недостаток пайтона, нежели плюс.
Когда ты возвращаешь массив различных типов, тем самым ты:
1. Подрываешь механизм строгой типизации;
2. Переполняешь ресурсы возвращая одним методом то, что должно вернуться несколькими;
3. Плодишь кашу в коде, который поддерживает N+ человек. Тут писали про методы из 20к строк, вот как раз возвращать любые типы - это из той оперы.
Так или иначе, вернуть массив разных типов в решетках тоже можно используя кортежи или класс-оббертку.
Я не фанат решеток и хотя этот язык умирает, он во многом совершенен.
Не совершенен - нет множественной диспетчеризации например. Скорее жс сдохнет, чем шарп.
Везде да.
В каких именно задачах альтернатива?
f#
Тебе нужно что-то, что будет выводить твою графику. Теоретически можно сразу работать с директ иксом, но ты повесишься, пока разберёшься.
Либо выводи через WPF (на нём тоже написано несколько игр, погугли. Там есть встроенная анимация), либо не еби мозги и учи параллельно юнити, как и все делают.
спасибо
Да нет, всё запускается отлично, даже экзешник скопированный с папки debug если ты, конечно, с библиотеками и версией шарпа не проебался, но пишет что на ваш страх и риск.
Джаваскрипты, хтмл и цсс тебе нахрен не нужны, на шарпе бекомакаки пишут бэк с апихой (rest, graphql).
Вся гуйня пишется на фронте фронтомакакми.
Разделение труда.
Если нет интернета, значит ты страна третьего мира в которой или сам диктатор отключил своим рабам интернет или это диктатору Белые Бваны Демократии отключили интернет и прямо сейчас бомбят на стелс-истребителях F-35 и гиперзвуковых ракетах его города.
В противном случае не может такого быть что бы не было интернета.
не пости такое, сейчас мочератор прибежит, начнет посты тереть, банами трясти. Вкатывальщики и студентота не верит, точнее не хочет верить
Волнуешься ты потому что не веришь в то, что обосрёшься. Если бы ты действительно в это верил, то и страха бы не было.
Ничего, завтра ты обосрёшься по полной, будешь краснеть и потеть, мямлить что-то невнятное, впадать в минутные паузы после вопросов на которые ты ответить не можешь. Потом всё будет как снежный ком, волнение и стыд не дадут тебе отвечать даже на элементарные вопросы, в итоге собеседующий будет смотреть на тебя как на дерьмо, а также не скрывать презрения, ведь ты потратил его время, которое он мог потратить на достойного кандидата, а не на какого-то придурка, который захотел войтивайти потому что много платят.
В чём проблема?
Логично что кто уже работает по теме - здесь особо топ ответ не получишь. Да и есть другие места, где можно искать ответы на серьёзные вопросы. Здесь такое вот самое начальное только.
Не, на русском.
Хорошо.
Потому что между похуизмом по отношению к тому, что ты написал, и похуизмом на картинки и перекаты, нет никакой связи.
Могу сказать, чем отличаются. Ну, это паттерны проектирования, насколько я понимаю, да? Я их слегка касался только. Сейчас почитаю.
Лол, это троллинг?
>есть связь я так скозал!!!
Опять выход очередной серии твоего любимого маняме задержали, дебилёныш?
В общем удачи тебе
>Нет связи, я так скозал!1
Я доедаю свою пиццу флорентино, пока я параллельно кодю и отвечаю вкатывальщикам, а ты и дальше сиди и перди, неосилятор, возмещающий обиду токсичностью
В абстрактном классе можно реализовать методы и инициализировать поля, интерфейс это всего лишь обложка, схема.
Абстрактный класс нужно использовать для создания основы иерархии классов, т. е. если у тебя будут как минимум два класса, которые связаны между собой, то следует всё общее из этих классов вынести в абстрактный класс и наследовать его в этих производных классах.
Интерфейс нужно использовать для связывания различных иерархий классов, которые не связаны между собой общим классом, но имеют что-то общее.
>Интерфейс нужно использовать для связывания различных иерархий классов
Зачем, если интерфейс это всего лишь обложка? Почему без него нельзя обойтись?
Ок, не может быть так не может.
Потому что ты можешь наследовать сразу несколько интерфейсов, но не можешь наследовать сразу несколько классов. При этом, интерфейс обязывает тебя реализовать все свои методы, а класс не обязывает этого делать. Т. е. в случае с интерфейсом, каждый кто его наследует, должен предоставить реализацию методов интерфейса. Это удобно потому что предотвращает путаницу, которая может возникнуть из-за того, что кто-то наследовал класс, реализовал в нём какой-то конкретный метод, а остальные остались неизменными, но при этом для правильной работы эти методы необходимо реализовывать для каждого класса по своему.
Т. е. интерфейс используется еще и тогда, когда каждый метод этого интерфейса нужно в классе, который будет его наследовать, реализовать по своему.
фу блядь
Тогда можем вам предложить вакансию в HR отделе. Также, одному из наших топ-менеджеров требуется помощница, но там фигурируют отдельные условия, которые необходимо обговаривать в более приватной обстановке, если вы понимаете о чём я ехидно улыбается
>которая может возникнуть из-за того, что кто-то наследовал класс, реализовал в нём какой-то конкретный метод, а остальные остались неизменными
А виртуальными их нельзя в абстрактном классе объявить?
Нет, он прав. Надо готовиться к худшему, иначе восторженный манямирок лопнет с треском.
И? Это не обяжет его перезаписывать, а только предоставит такую возможность у класса-наследника.
Ну я сегодня-завтра почитаю вопросы к собесу. Ну они мой говно-гитхаб смотрели, поэтому, думаю, знают, что я из себя представляю. Могу из-за волнения начать городить хуйню и даже не ответить на вопросы, на которые знаю ответы.
Ага, да. Я не знал просто.
Обязательно, братишка.
У меня есть подозрения, зашла на хх и кинула резюме.
фо, серьезно? Хм, а как же ты заметил? Может задачи с перестановками строк тебя на это натолкнули? Хм, или какие книжонки почитать? Каждый тред это пишу, пока моча не банит и не тред посты.
>>71596
>особо топ ответ не получишь
проиграл с дауна
>есть другие места, где можно искать ответы на серьёзные вопросы
дважды
>>71649
всем похуй, хуй сосать готова за оффер? Нет? На выход
>>71693
на решетках еще берут джунов? Земля им пухом
Да иди ты нахуй пидор ебаный, маму твою ебал.
Адекват в треде.
https://www.youtube.com/watch?v=ILfUuBLfzGI
https://www.youtube.com/watch?v=C56bbgtPr_w
Скинь гит плиз. Тоже завести хочу, а надо понять хоть как выглядит это все. Фейкомыльцо
Ты похитишь мою интеллектуальную собственность.
По твоему люди, которые ходят 3 раза в неделю в зал, не живут? Живут, просто тратят 3 часа в неделю на занятие спортом. Столько же нужно тратить программисту для того чтобы всегда быть готовым к собесу.
Надо
Разберись сначала в том, как создать контекст не используя асп и конфигурационный файл. Потом поймешь насколько тупой вопрос задал.
После добавления ограничений внешнего ключа не могу добавлять новые записи в таблицу(до точно работало все), т.е. прямо в datagridview просто пропадает запись, не попадает в dataset. Как поправить?
Да я на плюсах делаю, но в том треде не любят c++/CLI. Да и код там формируется автоматически из коллекции relations у dataSet, я неправильно ключи что ли задал?
Ну откровенно говоря, да.
Просто объясни как правильно настраивать отношения между таблицами, если не трудно. У меня их всего 3, одна с книгами, вторая с читателями, а третья их соотносит в виде учета.
Я выставил их родительскими, а третью дочерней, связал по ключам соответствующим, но не работает.
Ты блядь думаешь что если тебе в плюсотреде не помогли с плюсами то помогут в шарптреде?
пили, поучишься на своих ошибках, заодно анону поможешь
Да тут дело не в плюсах, а в компоненте dataset библиотеки .net. Это ведь и шарповская вещь, верно?
Ну я так и делаю по идее. Я все удалил и по-новой им прописал эти свойства, но программа выкидывает исключения при запуске.
Я кстати заметил что foreignkey почему-то unique, я думал только primary должен быть уникальным?
Там просто есть коллекция relations и еще в коллекции tables можно contraints задавать, может конфликт какой-то происходит если не в том порядке настраивать свойства? Может какой-нибудь мануал/видео есть с простеньким приложением, использующим таблицы со связями?
Вообще так делается обычно
Что пишет то в исключении?
ФК ссылается на ПК, который должен быть уникальным жи.
код покажи хоть на крестах и текст исключения
Я походу понял ошибку, надо заполнять сначала родительские таблицы в обработчике загрузки формы. Вроде теперь работает все. Чувствую себя как пикрелейтед. Еще раз спасибо, аноны.
Я вот думаю может в шарп перекатиться и продолжить в студии сидеть, потому что на qt что-то все закручено делать интерфейс графический. А плюсы походу из студии выживают с каждым годом, у меня вижуал студия 2008 и то там повырезаны некоторые возможности, в новой версии я слышал вроде даже winforms шаблона нет по умолчанию для плюсов.
>надо заполнять сначала родительские таблицы в обработчике
>вижуал студия 2008
>в шарп перекатиться
тут своих обезьян хватает, спасибо не надо
Это должно быть очевидно, да. Но я сначала делал без связей и там было похуй как заполнять dataset, я не обратил поэтому внимание на обработчик, думал дело именно в отношениях/ограничениях. В книжке, по которой я пытался разобраться была вообще одна таблица, а все подводные камни вылезают в процессе как правило.
Ну а для шарпа естественно обновил бы студию, хотя для лаб в принципе и старой хватает.
Тут люди интересуются за актуальность Рихтера (CLR via C#) в эпоху .NET Core. Что скажете?
Всегда актуально, но не для книги с которой нужно начинать, а для закрепления и углубления.
Ты здесь недавно? Почему не на пикабу? Опять карма в минус ушла и постить не разрешают?
Раз в год с 2010, постоянно с 2016, но сидел в других досках. Вроде мало где так агрессивно себя ведут, если пишешь не про политоту/биопроблемы/тупуюхуйню, а нормально задаешь вопрос.
Это не нормальный, а тупой вопрос. Никто в здравом уме не будет переписывать то, что делалось несколько лет. Очевидно, что цлркоре это тотже цлр только с уклоном на мультиплатформенность.
Я одного не пойму.
Вот все эти байтоизвращения с дезинтеграцией ООП по-сути нужны для решения аппаратной байтопроблемы кеш-локальности данных.
То есть по идее - всё это должно решаться evysv коньпелятором, который должен под капотом превращать AoS layout в SoA layout.
И тут я такой смотрю вот эти видосы этого сычевского и, что бы вы думали, ОНИ ЗАПИЛИЛИ СВОЙ КОНЬПЕЛЯТОР, С БЛЕКДЖЕКОМ И ШЛЮХАМИ (Burst compiler, если я правильно понел), но написать в него эту самую кеш-локальность забыли и декапсулированные структуры и процедуры по прежнему надо писать с использованием вот этих вот анальных трюков из вот этих вот видосов.
Что за хуйня, объясните.
Тут же чсвшное быдло собирается, каждый считает себя самым охуенным.
1. Обработка статус кодов и различного рода ошибок - В каком из слоев приложения хранить? DAL/BLL/UI (asp.net core)?
2. Холиварный вопрос уровня /pr/бугурт тред. Есть HTTP (транспортный протокол). Как обрабатываются статус коды? В моем понимании - если запрос обработан (200 ок), то в зависимости от аутентификации пользователя вывалывать ту или инную стараницу. Или же - запрос обработан, аутентификация упала - 403 forbidden?
С меня как обычно мог бы и не чекать, про "нихуя" и сам знаешь
Хотя в зависимости что у тебя за приложение, можно больше детелей, что делает твой BLL, а что UI?
CRM, где каждый пук чих регистрирует действия пользователя. BLL - вытягивает из DAL по UOF паттерну CRUD функции и дальше делает ряд проверок, расчетов и т.д.
UI - берет данные из BLL и передает в View через контроллер
если юзер не прошел аутентификацию, должно ему высрать 403 ошибку. Возник вопрос - через 200 статус + View об ошибке, или сразу 403 статус код вывалить?
он то обработает, каким образом это делать? Статус код 200 или 403, если клиент не аутентифицирован? Еще помимо View выход на Web Api (все эндпоины будут писать отдельно)
Какие еще статус коды, кроме 200, 403 и 404 посоветуешь запилить? С вебом мало знаком, не хочу говно лепить.
Энивей, спасибо.
еще раз спасибо
Bump();
Бумп.
Вот есть у тебя мобильная апка, допустим тотже телеграм. Нужно послать или получить сообщение. База в клауде, собственно нужен к ней доступ с моб. девайса. Доступ к базе есть с сервера, клиенту нельзя ибо не секюрно.
Сообствено сервер общается с мобилой через http(s) протокол. Также как и браузер, только браузер юзает в основном GET/POST, и получает в еблет html код и показивает юзеру. А вот в слачаее с мобилой не нужен html, а только дата, для етого и есть REST сервиси, только там есть еще методи: PUT, PATCH, DELETE, HEAD.
Хорошо, спасибо
моча, не могу удержаться запостить такую дичь, когда вижу очередной вопрос по курсовой/лабы. Как не вращение строчек, так кодеки/видеоплееры в решетки тащат, ну что за уебища :(
Ковыряю MVVM с WPFом. Подвязываюсь вьюшкой через вьюмодел к модели, все как по учебнику, так сказать. Но проблема в том что при присвоении модели данные на вьюшке не обновляются.
В прошлый раз мне предложили сделать модель пропертью и таким образом уже подвязываться. Но тогда получается что вьюшка видит модель напрямую, а значит ломается сам MVVM если я правильно понимаю.
В общем, как ПРАВИЛЬНО сделать чтобы оно работало? Или у меня вообще подход неверный и модель не должна присваиваться?
Для небольшого контекста - аппка общается с некоторым веб апи посредством рестшарпа, получает Json, который автоматом конвертится в объект, являющийся, по сути, моделью.
Это тред для ньюфагов. Если ты не ньюфаг или не готов отвечать на ньюфажные вопросы, то упездывай отсюда.
>тред для ньюфагов
Где это указано? Мне давали очень годные советы, как не щелчку. Почему я должен читать залупню, которая гуглится по счелчку пальца? Или в шапку нужно дописать в инструментарии гугл, а то не могут догадаться?
>Но тогда получается что вьюшка видит модель напрямую, а значит ломается сам MVVM
А как ты по-другому инициализируешь ViewModel? В этом и вся суть, ты инициализируешь ViewModel, как свойство в View, после чего во XAML View в качестве контекста даты указываешь это свойство ViewModel.
Далее делаешь всё через команды и биндинги. В итоге получаешь хорошо структурированную модель, которую удобно просматривать, редактировать и дополнять.
Можешь даже сделать в одном проекте отдельное окно, которое не реализует паттерн MVVM, а потом через неделю-две, вернутся к этому проекту и сравнить, как быстро ты разберешься в той части что без MVVM и в той части, что с MVVM.
>Но проблема в том что при присвоении модели данные на вьюшке не обновляются.
Чтобы данные обновлялись, нужно чтобы типы этих данных поддерживали интерфейс INotifyPropertyChanged, т. е. ты либо реализуешь это интерфейс самостоятельно, либо используешь уже готовые классы, например, ObservableCollection, BindingList и т. п.
>Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Почитал. Вопросы ака "Есть input "Hui, hizda", должен быть output "adzih ,iu" или "Pizda, hui". Вопросы с встраиванием плееров, кодеков, драйверов - зашквар, ибо решетки - интерпрайз язык (чуть более, чем весь). Так что можешь сказать своему преподу, что не решил лабу, т.к. послали нахуй на борде и не осилил гугл.
Тебе и задают самые острые вопросы, как видишь. Собственно, в шапке ответы на совсем ньюфажные вопросы + список литературы для вката, что как бы должно тебе намекать какая ЦА у треда.
Да, ЦА - вкатывальщики, которые задают вопросы относящиеся к языку и тому, что в литературе им не совсем понятно. При чём здесь студенты с лабой1? Которые не могут встроить плеер, не нашли кодек и т. п., потому что им лень гуглить и шарп им нахуй не всрался, их в шараге заставили на нём хуйню писать.
помимо ЦА сидят по фану вкатыши и помогают (иногда ебучим объезьянам, гугля за них). По остальному - true
>>74265
такие вопросы гугляться, а отвечать на это зашквар впринципе. С такими вопросами любой (адекватный) ментор пошлет нахуй гуглить. Ответить на вопрос про особенности архитектуры/технологии, выбор между А и Б, какой то свежак в технологии - для этого имо тред.
Возможно я перегибаю и мне просто нехуй делать на РАБоте, раз пишу все это, но блять, зачем приучать даунов есть с ложки? У меня вообще каждый раз горит, когда помогают решить даунские вопросы (ЗОЧЕМ???77)
>Странное у тебя разделение вкатавальщиков
Блять да потому, что вкатывальщик - это тот, кому это интересно, а не тот, кто будет задавать вопрос, чтобы скопипиздить и забыть
Я вкатываюс.
Прям как в том преколе: "Паскаль лучше Си тем, что на Си вы можете написать так: ... На Паскале вы этого сделать НЕ можете".
или вскрылся или дали оффер. Обещал тут записать свой факап и пропал, вот же мудила
Шарпик поприятнее в плане написания кода. То что на жаве занимает 10к строк, на шарпике можно в 1к уместить. Плюс теперь не так привязан к M$. Да и многие штуки что предоставляет .Net/.Net Core можно без всяких фреймворков брать и использовать, в джаве же помимо самой стандартной джавы еще и куча фреймворков, которые не особо лучше PHP и JS зоопарка. А, ну и конкуренция поменьше, при сопоставимых ЗП.
Ты меня немного не понял. Сейчас объясню кодом.
Есть вьюшка с каким-нибудь текстблоком, привязанным к проперти вьюмодели.
<TextBlock Text="{Binding SomeText}" />
Есть вьюмодель с этой пропертью, ссылающейся на поле в модели. INotify... естественно реализован.
private MyModel _mymodel;
public SomeText
{
.get => _mymodel.modelText;
.set
.{
.._mymodel.modelText = value;
..OnPropertyChanged(nameof(SomeText));
.}
}
При этом если я меняю значение проперти напрямую SomeText = "123";, то все нормально обновляется, что очевидно.
Но если я присваиваю модели другой объект, где значение modelText другое _mymodel = someOtherModel;, то ничего не обновляется.
Я понимаю почему оно не работает, но я не знаю как сделать чтобы оно заработало.
>>74184 дополню
Ты меня немного не понял. Сейчас объясню кодом.
Есть вьюшка с каким-нибудь текстблоком, привязанным к проперти вьюмодели.
<TextBlock Text="{Binding SomeText}" />
Есть вьюмодель с этой пропертью, ссылающейся на поле в модели. INotify... естественно реализован.
private MyModel _mymodel;
public SomeText
{
.get => _mymodel.modelText;
.set
.{
.._mymodel.modelText = value;
..OnPropertyChanged(nameof(SomeText));
.}
}
При этом если я меняю значение проперти напрямую SomeText = "123";, то все нормально обновляется, что очевидно.
Но если я присваиваю модели другой объект, где значение modelText другое _mymodel = someOtherModel;, то ничего не обновляется.
Я понимаю почему оно не работает, но я не знаю как сделать чтобы оно заработало.
>>74184 дополню
Правильно ли я понимаю, что если я решу юзать SOA, то для общения между сервисами я должен запиливать еще один сервис к которому будут обращаться сервесы выполняющие работу? Скажем, вот у меня есть сервис который служит для взаимодействия с БД, есть сервис который от пользователя читает ввод, и чтобы записать в БД правильным решением будет отправить сообщение сервису что пишет в БД, либо же это неправильно с точки зрения SOA?
Срсли, сидишь и охуеваешь тупо от ебли с нугет-пакетами. Особенно охуенно, когда тебе нужна библиотека, она есть в коробке, но ее нужно включить в настройках нугетов, и при этом ОНА ПО-ДРУГОМУ НАЗЫВАЕТСЯ. То есть, блять, вот как я должен догадаться?
Почему в пистоне я тупо ставлю пипом через батник либу и сразу начинаю с ней работать, а тут какое-то блядство натуральное? Проект, блять, только создал, уже миллион каких-то говнофайлов создалось.
Против одного, ОДНОГО py-файла.
Вообще охуеть.
Твоя таска СДОХНЕТ В МУКАХ, если токен заканселится.
> какие обязанности у C# джуна
Ебать мозги ментору, писать тесты, фиксить баги, учиться.
> какие обязанности у C# мидла
Ебать мозги аналитикам, пму, тестировщикам, Аллаху; писать код.
В шарпе тоже можно много значений возвращать. Вэлью тапл, ёбана.
Так-то в петухоне тоже куча всякой хуйни создается, если ты проект в пайчарме создаешь. С другой стороны тебя никто не заставляет создавать проект в сишарпе, можешь создавать отдельные файлы и вручную компилировать.
На счет библиотек ++++. Просто пиздец какой-то, почему нельзя былт по-человечески сделать.
тоже щупаю сишарп после питухона
Ну сделай _mymodel свойством, при назначении которого SomeText будет меняться на value.modelText.
Но у тебя какая-то херня получается всё равно.
Добрался до этой задачи(никогда не заводите себе тянку, аноны, все время сжирают) реализовал как тут подсказано, действительно так удобнее. Но не понял один момент: как ты сделал List<ITask>? Я заменил абастрактный класс на интерфейс, но каим образом сделать чтобы List<ITask> хранил string значения?
Потому что решётка всех переиграла.
Спешите видеть, ебобо не может вместо пипа использовать нюгет, которые блядь вообще одинаковые нахуй.
Срсли, нахуй ты такой тупой? Учил питон, знаю шарпы, никаких сложностей нет вообще. Хер знает как ты умудрился в чистом поле найти дерево и уебаться об него головой.
Твой вариант подходит если проперть SomeText одна. Но их же много, и вручную перебирать их как-то не комильфо. К тому же, если, в теории, потом еще дополнять модель другими полями, то их надо будет туда же в проперть прописывать, а это тоже какие-то там принципы ломает, в общем НЕПРАВИЛЬНО получается. А я хочу наоборот.
Так у тебя изначально хуёвая архитектура получается, раз тебе нужно модель каждый раз менять. И почему у тебя привязка идёт к отдельному свойству, а не сразу к модели?
Запости те, что тащат. ЧСХ, попытка подъебнуть в анскилльности довольно уныло смотрится с учетом того, что я сразу же написал, что в области разбираюсь чуть более, чем никак.
Спасибо
Короче, у моего TCP сервера довольно странная проблема: Принимает клиентов он быстро, памяти жрет мало, НО, когда клиент отключается, почему-то выделяется примерно 25МБ и отключаются сессии довольно медленно, т.е. если 5к клиентов создается за 1 секунду, то отключаются они где-то секунд 40, при этом вроде как все асинхронно. И это не то чтобы проблема, просто я не понимаю в чем дело.
Да, 25МБ не на каждого клиента, а всего +-25МБ, но этот скачек удивляет. Я вижу в дебагере что почему-то создаются потоки, но хуй знает почему, я же просто когда вываливается эксепшн - убиваю сокет, закрываю его и удаляю из словарика активных сессий.
Как создать переменную/массив/объект с именем которое содержится в переменной?
Например я ввожу в консоли слово "xyina" и вот мне нужно создать масcив xyina. Как это сделать?
Ну вот хотелось бы знать о такой функции, как это сделать.
По сути незачем конечно.
Но вот например для такой хуйни как создать много масивов в цикле
for (int i = 0; i < 1000; i++)
{
int[] (list+i) = new int[10000];
}
И типо дохуя массивов list1 list2 list3 list4 и тд
но хз как сделать
В общем, есть ли какой-то профит в том, чтобы не самых ресурсоемких объектов создавть пул этих самых объектов заранее? В каких случаях это может быть полезно? Просто я только один сценарий придумал, это какие-то ограничения, скажем NPС в игре, нам не нужно будет тратить время на создание, мы просто достаем из пула объект, инициализируем его новыми данными, и пользуемся этими NPC, пока игрок в зоне находится, потом игрок далеко убежал, мы NPC что за зоной обработки находятся почистили и положили в пул. Но это же детский пример. Как в реальных проектах, если исключить пул потоков, используются эти самые пулы объектов? Когда их надо использовать, а когда правильнее создать новый объект?
Глупо, ибо не смошеь етим пользоваться.
Открой для себя двумерные массивы, вкатыш
>И почему у тебя привязка идёт к отдельному свойству, а не сразу к модели?
Так потому что MVVM же. VM идет как прослойка, вот туда и вяжусь.
>Так у тебя изначально хуёвая архитектура получается
Ну вот я и спрашиваю как сделать ее нормальной.
Я могу сделать через жесткую привязку - в конструктор запихивать классы, а не интерфейсы, но это не подходит, т.к. в любой момент реализация может поменяться.
Выпилить этот обобщенный интерфейс? Так добавится с 30+ дополнительных интерфейсов с одинаковой сигнатурой.
Как быть то блять? Нужен код - могу залить github.
Теперь я решаю сделать аналогичную фиговину под линукс, net core это, вроде как, позволяет по крайней мере если верить статьям. Ну так вот, все классы что исполняют эти задачи у меня есть, но в этот раз я хочу не полностью запуск и прочее мутить, а воспользоваться IHostBuilder'ом. Ну так вот, я выделил интерфейсы, внедрил скопы, как теперь мне запускать это? Не делать же имплементацию IHostedService? Просто если пользоваться IHostedService, получается какая-то залупа, типа я уже внедрил зависимости в билдер, потом передаю их в свою имплементацию и она просто используется для того чтобы стартануть другие классы, которые работой занимались, мне кажется это какое-то уродство и наверняка как-то иначе нужно делать. Только вот как?
> как это все собрать в одну структуру, чтобы обратившись к одному HEAD (условно так назовем) интерфейсу можно было пройти по иерархии и выбрать интерфейс, который мне нужен?
Что значит "пройти по иерархии"? Ты можешь просто проверить с помощью рефлексии какие интерфейсы имплементируются классом же.
Учу я сишарп ентот ваш, со скрипом, но продвигаюсь. Но есть проблема - мне не хватает практики.
То, что читаю в литературе не закрепляется в голове, потому что примеров очень мало, в основном лишь сухая выжимка и я не понимаю как и зачем мне использовать те или иные фичи языка, кроме базовых. В видосах вообще пиздос какой-то, либо хуйня для совсем даунов, где по часу размусоливают чем int от float отличается, либо какие-то индусы задры в 30 минутном туториале высирают тысячи строк кода, вообще никак не объясняя почему они делают ту или иную хуйню, а тебе лишь приходится копипастить и реверсинжинирингом заниматься пытаясь понять что и почему.
tldr есть ли что-то типа школьных задачников по математике/физике, где на каждую тему у тебя есть задачи которые надо решить? Если есть, то ткните ебалом или хотя бы дайте направление для гугла
Ещё есть мысль брать проекты на гитхабе и пробовать в них ковыряться, только хз как не скатиться в тупой копипастинг. Тем более, что я не смогу отличить код здорового человека от кода макаки
зачем решил изучать шарп? должны быть какие-то цели наверное кроме абстрактного 300кк/наносек?
Идешь на CodeWars и решаешь задачки.
А вообще, проще придумать свой проект, описать на листочке что ты от него хочешь, скажем:
Hex редактор с подсветкой и выгрузкой по ftp, возможностью загружать файлы размером до 60ГБ, довольно интересная задача, особенно в последнем пункте, вот садишься и делаешь, ловишь грабли, гуглишь и продолжаешь делать, пока все пункты не будут выполнены.
>Что значит "пройти по иерархии"?
Пикча. Мне нужно передать в реализацию один класс-матрешку, через которую получать доступ к любой из реализацией, но есть одно но, корректно ли передавать в интерфейс экземпляры классов в иде свойств?. Вот так:
public interface ISupplyCatalogue
{
ReceiptCatalogue ReceiptCatalogue { get; }
SupplierCatalogue SupplierCatalogue { get; }
WareHouseCatalogue WareHouseCatalugue { get; }
}
Мне интересно погромирование, в идеале хотел бы иметь работу в этой сфере. Если удастся поучаствовать в крупном проекте, вообще круто будет.
Именно деньги меня интересуют в последнюю очередь, лишь бы на пожрат хватало. Хочу заниматься тем, к чему душа лежит. Для меня программирование - как для ребенка конструктор Лего. Создавать что-то сложное, используя простые кирпичики это круто. Ещё из плюсов, кстати, то что за несколько месяцев я подтянул английский лучше чем за 11 лет в школе и 4 годах в вузе, лол
О конкретике же говорить пока сложно, я только в начале пути. Главное же, что я достаточно аутист, чтобы не забросить это всё через неделю или после первой неудачи.
Почему именно сишарп? Так получилось. Сейчас у ньюфага огромный выбор, глаза разбегаются, не знаешь как подступиться. Я просто начал пробовать всё подряд.
PHP, HTML пробовал, в принципе не сказать что слишком сложно, но веб не моё. Питон прикольный, но не покидало ощущение, что это больше дополнительный инструмент.
Вкатываться с нуля в си и кресты отговорили на двоще, попробовал шарп, понравился, на нём и остановился.
>>76948
Спасибо за совет, попробую. Добра и тонны нефти тебе
Давече узнал что в ноябре будет объеденение net framework и net core в net 5.
Вот вопрос не пойдут ли мои старания по изучению языка по пизде через год? Чем вообще грозить это объединение?
>Чем вообще грозить это объединение?
.NET 5 - это четвертая версия .NET Core. В Core нет ASP.NET Web Forms, WCF и это плохо: много легаси говна написано на этих двух технологиях, особенно на последней, и переписывать обычно заказчик не горит желанием, потому будет лок на каком-нибудь Framework 4.5, повезет если 4.8. https://devblogs.microsoft.com/dotnet/introducing-net-5/
VM может содержать другую VM, любое количество, любая вложенность. Для всего говна работы с моделью делаешь отдельную VM, а на основной VM нотифаешь как проперти только обновление ссылки на дополнительную VM.
ISupplyCatalogue - это фасад. Без рефлексии, на основе иерархии интерфейсов, при условии, что одна сущность может реализовать несколько интерфейсов, может разруливаться композицией + паттерн матчингом: https://pastebin.com/40cbzk3r
Точно так же.
Кор - запускает Main.
Фреймворк - через рефлексию ищет начальную точку: наследник HttpApplication, наличие атрибута StartUp, еще какая хуйня.
так как происходит запуск приложения на удаленном сервере, где-то прописывается команда dotnet run или как? или при деплое оно автоматически эту команду выполняет?
В зависимости от типа той хуйни, куда деплоишь: может само прописать run, на виртуалке - самому надо писать или хостить на той же IIS.
А если вместо этого вызывать OnPropertyChanged(null);? Просто VM в VM выглядит как доп. ебля.
спасибо
Дополнительная ебля - это делать как делаешь ты: создать окно ЯМогуВсёИСратьСтояWindow, вместо того, чтобы окно разбить на кастомные контролы или даже окна, каждый из которых будет со своим/своими VM.
Ну вообще нет. У меня несколько страниц, где каждая отвечает за что-то свое. Просто мне непонятен вот именно этот момент, когда апи мне возвращает объект, который у меня является моделью для страницы и если я напрямую его присваиваю, то ничего не обновляется.
>Ну вообще нет.
Да, иначе бы не было проблемы с дублированием кода как выше.
>мне непонятен вот именно этот момент
Непонятен, потому что архитектура приложения у тебя говно: нарушение единственной ответственности + вьюха какого-то хера знает про модель и пытается ее отобразить. Потому декомпозиция - единственное нормальное решение. Нет правильного решения, есть решение, которое подходит в данной ситуации.
>вьюха какого-то хера знает про модель
Да лол, как раз-таки она не знает про модель. Вьюха у меня вяжется на свойство в вм, которое зависит от модели. Конечно, может это и называется "видит модель", тогда я неправ, да.
>Конечно, может это и называется "видит модель", тогда я неправ, да.
>К тому же, если, в теории, потом еще дополнять модель другими полями, то их надо будет туда же в проперть прописывать, а это тоже какие-то там принципы ломает
Изменение модели (добавление полей, переименование) не должно ломать отображение, изменяется только VM при необходимости, т.е. тупо изменяется маппинг данных из модели в VM. Вьюха ничего не знает про модель.
Например, окно состоит из двух частей: список элементов со строкой поиска, отображение и редактирование выбранного элемента. По умолчанию никакой элемент не выбран.
Так вот, в нормальной архитектуре у тебя компонент с элементами - это список из VM. А когда пользователь выбирает элемент из списка, то выбранный VM присваивается к компоненту для отображения/редактирования, или, еще лучше, выполняется бизнес логика, которая по id элемента ищет элемент в базе данных и создает совсем другой тип VM на базе полученной модели, который присваивается компоненту или просто маппит свойства (если ты не в состоянии занотифаить ссылку на VM).
Ага, ну вроде я сообразил, спасибо, хорошо расписал.
У меня, тем временем, еще вопрос появился. Как правильно зашерить дату между страницами, например? Сейчас я просто запилил объект в ресурсах и туда все пихаю, но не уверен что это, опять же, правильно.
Данные шарятся одним источником: база данных, АПИ, общая память, еще какая херня.
Например, в MVVM Light есть Locator (Service Locator), который умеет создавать все типы родительских VM при обращении к его свойствам, используя IoC. Locator существует в одном экземпляре, создается в App.xaml, доступен всем страницам. Чтобы на странице использовать какую-то VM, она достается как свойство из Locator, а данные в VM передаются в конструкторе. Данные для конструктора предоставляются самим IoC (с синглтон лайфтаймом - т.е. жив на протяжении жизни всего приложения) или тупо как приватное поле на какой-то класс в Locator. https://www.c-sharpcorner.com/article/getting-started-with-mvvm-light-with-wpf/
Другой способ: передавать данные из родительского окна в дочерние явно, родительское окно создает VM для дочерних и передает необходимые данные в конструктор VM.
Во, спасибо тебе огромное, анон, пойду переписывать.
*ulearn.me
Как вы учите C#? По видео? По книгам? Каким?
Хардкод + рефлексия: метод View из базового класса, используя дефолтную реализацию WebFormViewEngine, ищет в определенных местах вьюху по имени метода, который вызывает метод View. Движок можно свой написать и искать как и где хочется или передать строку в View, явно указав место.
Чел, в погромировании без английского вообще нехуй ловить. Он тебе нужен будет постоянно. Я уже не помню, когда в последний раз в коде встречал кириллицу
Одна книга от Шилдта в далеком прошлом и всё, всяких Рихтеров, Петцольдов и тому подобных Скоттов или поверхностно просмотрел пару глав и забыл или скачал книгу и забыл о её существовании.
Обычный день сеньёра-помидора:
1. Прочитать таску.
2. Нехуя не понять.
3. Заебать вопросами составителя таски.
4. Оценить, если не оценено, или переоценить.
5. Загуглить "как сделать <хуйня нейм>", обычно кидает на Stack Overflow, пишу-то на инглише.
6. Отчитать 8 часов и пойти домой.
7. Вернуться к пункту 1, пока таска не будет выполнена или, если таска выполнена, заниматься хуйней, чтобы попасть в заранее накрученный эстимейт и потом хвастаться как заебись точно оцениваешь + работа-то почасовая: если работать слишком быстро, то будут вопросы "хули так медленно начал работать" или наваливать еще больше тасков до бесконечности, платя тебе столько же.
Важные навыки по убыванию важности: инглиш не ниже аппера, умение пиздеть по делу и не по делу, пиздеть много и не давать другим вставить слово (пока не закончишь), вешать лапшу на уши, не палить свой монитор другим пограмистам.
Зарплата зависит от прокаченности уровня пиздежа и количеству лычек.
Ты неправильно ставишь вопрос
Где он не нужен?
Документация, гитхаб, стаковерфлоу, индусы на Ютубе, поездки на конференции и семинары, банальное общение с работодателем и т.д. да бля, даже банальное комментирование строк.
Я не собираюсь где либо РАБотать с ним и тем более на какие-то семинары ездить, че за пиздец, лол?
Кстати, ещё один важный момент: обычно таски составляются такими же распиздями на отъебись, т.е. для выяснения деталей таска составитель идёт его выяснять у кого-то ещё, который тоже важен архиважными делами (пинанием хуёв), который так же составлял на отъебись, не зная всех деталей (тоже идёт у кого-то выяснять), и так через несколько кругов "эффективного менеджмента".
Ну, а ты в это время с умным лицом "анализируешь" таску и пинаешь хуи. Забавно, но обычно так должно пройти несколько циклов, когда ты наконец сможешь приступить к выполнению таски.
спасибо, хз как проморгал
Так а нахуя тогда тебе вообще шарп учить? Для того чтобы поиграться тебе и Бейсика хватит
Забавно, но я описал 3 ыврейские и 1 литовскую продуктовые компании, в которых я работал по удалёнке.
Читаю строки из файла .ReadLine()
Файл заканчивается, как мне снова начать их читать с начала и не закрывая поток? Просто переместить так сказать каретку в 0 позицию.
разобрался, в компании по конски все написали, пришлось перелопатить
да там и код показывать не надо, все дело в атрибуте Route было
в бугурт треде зеленый сидит, который пишет, что могут выгонять на мороз гребцов толпами, типо у работодателя есть выбор, кого нанимать (сам проиграл в голос него). И дауненки хавают. Там такое рассписал, что охуеваешь от толстоты - таски по четко регламентному времени даюто, если не успеешь - минус бонус, не успеешь второй раз - нахуй с галеры
Кажется это впервые когда в жаву завозят нужную вещь раньше чем в Шарп, бтв
>Не может найти в Гугле книгу
>Агрессивно высирается на мимоанонов
Ребенок психованный, борда 18+, съеби
Это троллинг тупостью? Тебе уже сказали где нужен будет, не согласен твои проблемы
Где будет нужен вам, а не мне.
Большинство из перечисленных я смогу заебашить в гугл переводчик, либо найти аналоги на русском.
Вопросы?
Тогда жри устаревшее говно и не вякай.
Вот написал пример.
https://ideone.com/uJR03Z
Типа я правильно понимаю, что если у меня есть два(три, четыре...) класса, которые выполняют в фоне разную работу, именно такой сценарий и является наиболее правильным, чтобы обеспечивать общение между ними, не завязывая один на другом я должен буду делать вот такую вот очередь или правильно было бы сделать как-то по другому?
> смогу заебашить в гугл переводчик
заебешься транслейтить, тем более жидко обосрешься на особенностях перевода
Без ангельского в пограммировании делать нехуй (от слова совсем). Не хочешь или не можешь - тред 1С рядом.
на рутрекере лежит, сам буквально пару дней назад скачал
Да мне всё это говно не надо будет, поверь. Если вдруг понадобится, и если вдруг буду РАБотать, то подтяну английский - проблем не будет.
Бляять, я хуею с токсичности этого треда, все так налетели на моё незнание английского, я хуею.
так тебе правду говорят, дебик. Ты когда окунешься в гугление вопросов и сравнишь ответы на ru.stackoverflow и на английском ресурсе - разница огромная. Книги - тоже самое, опенсоурс проекты. Не занимайся самообманом и если пишешь по фанчику для себя (как я когда то), то возможно ангельский и не нужен (больше времени будешь терять на поиск проблем). Все, что дальше - без английского нахуй пошлют.
Тогда у тебя с башкой проблемы, айти не твоё
МЕТАНИТ!
Ой блядь, не приувеличивай. Чтобы копипастить с стэковерфлоу достаточно уровня английского: Ландан из зэ кэпитал оф грэйт британ!
>я хуею с токсичности этого треда
> Чтобы копипастить с стэковерфлоу достаточно уровня английского: Ландан из зэ кэпитал оф грэйт британ!
Пошел нахуй отседова, петушок
Ай, няша, у меня C1 и вообще мимо, я просто поясняю, что ваши выебоны просто смешны. Все что нужно среднему кодеру это уметь когда ошибка выскочила выделить ее и вставить в гугл, а потом копипастнуть со стэковерфлоу, если не заработало то копипастнуть вторую ссылку в гугле и так пока не заработает. А основы можно и на русском почитать, разницы особой для ньюфага не будет.
ты тупой или зеленый, третьему не дано. Так или иначе, тебе путь один - нахуй
>в ссаной жаве рекорды завозят, а Шарп все ещё заставляет писать тонны бойлерплейта
1. Рекорды в шарп хотели завезти еще хуй знает когда, что-то не поделили в синтаксисе - детали не помню.
2. В жабе всё еще нет пропертей.
3. В тырпрайзе ты не увидишь рекордов еще хуеву тучу лет.
4. Жди лагерь болезненных (как вот этот https://habr.com/ru/post/484700/ индивид), которые не понимают разницу между рекордами и алгебраическими типами. Да и вообще не понимают нахуй эти рекорды нужны.
Покупаешь 1 инстанс на Azure или AWS. Потом деплоишь туда своё говно вручную - и реакт, и асп. Ждешь какое-то время. На основе полученных результатов задаешь конкретный вопрос.
>копипастнуть со стэковерфлоу
Мне хватить С1 копипастнуть https://stackoverflow.com/a/1732454 решение?
Вот, я вставил в гугл транслейт и нехуя не понял:
Вы не можете разобрать [X] HTML с регулярным выражением. Потому что HTML не может быть проанализирован с помощью регулярных выражений. Regex - это не инструмент, который можно использовать для правильного разбора HTML. Как я уже много раз отвечал на вопросы HTML-и-регулярных выражений здесь, использование регулярных выражений не позволит вам использовать HTML. Регулярные выражения - это инструмент, который недостаточно сложен, чтобы понимать конструкции, используемые HTML. HTML не является регулярным языком и, следовательно, не может быть проанализирован с помощью регулярных выражений. Запросы Regex не оборудованы для разбиения HTML на его значимые части. так много раз, но это не до меня. Даже расширенные нерегулярные регулярные выражения, используемые Perl, не справляются с задачей анализа HTML. Ты никогда не заставишь меня взломать. HTML - это язык достаточной сложности, который не может быть проанализирован регулярными выражениями. Даже Джон Скит не может анализировать HTML с помощью регулярных выражений. Каждый раз, когда вы пытаетесь разобрать HTML с помощью регулярных выражений, нечестивый ребенок плачет кровью девственниц, а русские хакеры набивают ваше веб-приложение. Разбор HTML с помощью регулярных выражений вызывает испорченные души в мир живых. HTML и регулярные выражения идут вместе, как любовь, брак и ритуальное детоубийство. <Центр> не может удержать это слишком поздно. Сила регулярных выражений и HTML в одном и том же концептуальном пространстве разрушит ваш разум, словно водянистая замазка. Если вы анализируете HTML с помощью регулярных выражений, вы уступаете им и их богохульным путям, которые обрекают нас всех на нечеловеческий труд для Того, чье Имя не может быть выражено на Основном Многоязычном Плане, он придет. HTML-plus-regexp будет разжижать нервы чувствующего, пока вы наблюдаете, как ваша психика увядает от натиска ужаса. HTML-парсеры на основе регулярных выражений - это рак, убивающий StackOverflow. Уже слишком поздно, слишком поздно. Мы не можем спасти переход ребенка, который гарантирует, что регулярное выражение поглотит всю живую ткань (за исключением HTML, которого нет, как предсказывалось ранее), дорогой лорд Помогите нам, как кто-нибудь может выжить в этом бедствии, используя регулярное выражение для анализа HTML, обрекало человечество на вечность ужасных пыток и дыр в безопасности, используя регулярное выражение в качестве инструмента для обработки HTML, устанавливает разрыв между этим миром и ужасной сферой опасных сущностей (таких как объекты SGML). (но еще более испорченный), если взглянуть на мир регулярных парсеров для HTML, он действительно перенесет сознание программиста в мир непрекращающихся криков, он приходит, ядовитая слизистая регулярная выраженная инфекция уничтожит ваш HT ML синтаксический анализатор, приложение и существование на все времена, такие как Visual Basic, только хуже, когда он приходит, он приходит, не думайте, что он - единственное, радикальное излучение, разрушающее все силы, HTML-тэги, которые вы услышите, песня регулярного анализа разбора отклика поглотит голоса мрачного человека из sp здесь, я могу видеть, что вы можете видеть, как это красиво. Он окончательно понюхает ложь человека Все, что я потерял, все, что я потерял пони, он приходит, он приходит, он приходит, или пронизывает все МОЕ ЛИЦО, МОЕ ЛИЦО, боже, нет, НЕТ, НЕТ, О, НЕТ, остановите * gles are n от rèal ZALGΌ IS҉ TOƝȳ THË PO NY HȨ COMȆS
>среднему кодеру
Хвала богам я не средний и не кодер.
>копипастнуть со стэковерфлоу
Мне хватить С1 копипастнуть https://stackoverflow.com/a/1732454 решение?
Вот, я вставил в гугл транслейт и нехуя не понял:
Вы не можете разобрать [X] HTML с регулярным выражением. Потому что HTML не может быть проанализирован с помощью регулярных выражений. Regex - это не инструмент, который можно использовать для правильного разбора HTML. Как я уже много раз отвечал на вопросы HTML-и-регулярных выражений здесь, использование регулярных выражений не позволит вам использовать HTML. Регулярные выражения - это инструмент, который недостаточно сложен, чтобы понимать конструкции, используемые HTML. HTML не является регулярным языком и, следовательно, не может быть проанализирован с помощью регулярных выражений. Запросы Regex не оборудованы для разбиения HTML на его значимые части. так много раз, но это не до меня. Даже расширенные нерегулярные регулярные выражения, используемые Perl, не справляются с задачей анализа HTML. Ты никогда не заставишь меня взломать. HTML - это язык достаточной сложности, который не может быть проанализирован регулярными выражениями. Даже Джон Скит не может анализировать HTML с помощью регулярных выражений. Каждый раз, когда вы пытаетесь разобрать HTML с помощью регулярных выражений, нечестивый ребенок плачет кровью девственниц, а русские хакеры набивают ваше веб-приложение. Разбор HTML с помощью регулярных выражений вызывает испорченные души в мир живых. HTML и регулярные выражения идут вместе, как любовь, брак и ритуальное детоубийство. <Центр> не может удержать это слишком поздно. Сила регулярных выражений и HTML в одном и том же концептуальном пространстве разрушит ваш разум, словно водянистая замазка. Если вы анализируете HTML с помощью регулярных выражений, вы уступаете им и их богохульным путям, которые обрекают нас всех на нечеловеческий труд для Того, чье Имя не может быть выражено на Основном Многоязычном Плане, он придет. HTML-plus-regexp будет разжижать нервы чувствующего, пока вы наблюдаете, как ваша психика увядает от натиска ужаса. HTML-парсеры на основе регулярных выражений - это рак, убивающий StackOverflow. Уже слишком поздно, слишком поздно. Мы не можем спасти переход ребенка, который гарантирует, что регулярное выражение поглотит всю живую ткань (за исключением HTML, которого нет, как предсказывалось ранее), дорогой лорд Помогите нам, как кто-нибудь может выжить в этом бедствии, используя регулярное выражение для анализа HTML, обрекало человечество на вечность ужасных пыток и дыр в безопасности, используя регулярное выражение в качестве инструмента для обработки HTML, устанавливает разрыв между этим миром и ужасной сферой опасных сущностей (таких как объекты SGML). (но еще более испорченный), если взглянуть на мир регулярных парсеров для HTML, он действительно перенесет сознание программиста в мир непрекращающихся криков, он приходит, ядовитая слизистая регулярная выраженная инфекция уничтожит ваш HT ML синтаксический анализатор, приложение и существование на все времена, такие как Visual Basic, только хуже, когда он приходит, он приходит, не думайте, что он - единственное, радикальное излучение, разрушающее все силы, HTML-тэги, которые вы услышите, песня регулярного анализа разбора отклика поглотит голоса мрачного человека из sp здесь, я могу видеть, что вы можете видеть, как это красиво. Он окончательно понюхает ложь человека Все, что я потерял, все, что я потерял пони, он приходит, он приходит, он приходит, или пронизывает все МОЕ ЛИЦО, МОЕ ЛИЦО, боже, нет, НЕТ, НЕТ, О, НЕТ, остановите * gles are n от rèal ZALGΌ IS҉ TOƝȳ THË PO NY HȨ COMȆS
>среднему кодеру
Хвала богам я не средний и не кодер.
>если у меня есть два(три, четыре...) класса, которые выполняют в фоне разную работу
gRPC, орлины, акка...
>правильно понимаю
нет
>именно такой сценарий и является наиболее правильным
Написать ты можешь как хочешь, но по ссылке какое-то говно.
>я должен буду делать вот такую вот очередь
Нет, используешь готовое решение: rabbitmq, zeromq и так далее mq.
>выполняют в фоне разную работу
Я тут подумал ровно нехуя: где здесь работа в фоне? Для такого рода говно можно использовать serverless решения: AWS лямбды/степ функции, Azure функции.
>по твоему?
По моему нет смысла вводить рекорды без всего остального. Будешь сидеть и довольствоваться своими однострочными поко. Или как они в жабе называются? Пожо? Ахаха.
Ой, прости, в жабе же нет велью тайпов.
Я, блядь, студент, сука. Я пишу курсач, который проебал чутка. На кой ляг мне тащить это говно в курсач, где надо сделать TCP-сервер в виде демона на сокетах, который просто принимает сообщения длиной до 1КБ и передает их если нужно другому клиенту(клиентам), а если пришел слишком длинный пакет - шлет отправителя нахуй. Пиздос. Так и представляю, как твой сына спросит как решить квадратное уравнение, а ты предложишь ему на вольфрамальфе вбить либо тащить суперкомпьютер, чтобы он за него все решил. Охуеть вы там в своих тырпрайзах поехали уже с готовыми решениями.
>Я пишу курсач
Так это даже хорошо. Копипастишь хелоуворлд с документации той же акка и в половину курсоча гугл транслейтом вставляешь документацию с официального сайта. Вон, можешь у знатока С1 спросить как гугл транслейтом пользоваться. Потом этот проект мутируешь в бакалаврскую работу с минимум изменений, затем в магистерскую.
>надо сделать TCP-сервер в виде демона на сокетах
А с другой стороны, ты такое не напишешь, потому что знать надо дохуя, реально дохуя. Это только кажется простым. Например можешь почитать про NAT.
Ты, блядь, уебан, сука, тупорылый, а не студент
Ты приходишь в тред за советом, тебе дают, ты начинаешь срать на ответивших что тебе не подходит т.к. задача не в этом и ваще это курсач. Так блядь откуда по твоему анон должен понять что тебе свой велосипед нужен по заданию, имбецил тупой? Опять в твоём ПТУ обоссали, пришел злость вымещать? Пиздуй нахуй с треда, агрочмоня
Я хочу разобраться же. Блин, я же и проебался только потому что решил модно-молодежно следовать всем этим солидам-хуелидам, SOA и прочему говну, из-за этого сейчас у меня прием этих пакетов до 1кб выглядит как:
Слушатель(Хост)
-Сессии
--Стетмашина(проверяет что пришли именно мои байтики а не какие-то левые)
---Хендлеры(парсят если стейтмашина сдетектила пакет, сделал еще свой мидлварь)
----Програмный уровень(сюда уже доходит сообщение в понятном виде, т.е. что за пакет, какое содержимое, вообще и т.д.)
БД
Блядь, 10к строк кода, чтобы принять 1КБ, а могу бы просто не ебаться и в мейне ебануть просто слушателя и пустить по кругу стрим с байтами. Вышло бы строк на 500 от силы.
Вот я и решил уже раз начал, то сделаю чтобы с внедрением зависимостей и модным хостбилдером.
Код неправильный показал:
- лонг раринг таски в асп - плохая затея
- где работа с сокетами? а там самое весёлое: ебля с портами, со стримами (это когда кусок сообщения обрезается, или слипаются сообщения, или всё вместе), с протоколом парсинга сообщений
- ConcurrentQueue - плохой и медленный класс
- ConcurrentQueue<(double, double)> - привет боксинг/анбоксинг и куча мусора в GC
- нет поддержки горизонтального масштабирования
- код обосрётся, если добавить базу данных
И так далее...
>следовать всем этим солидам-хуелидам, SOA и прочему говну
Вроде где-то в самом начале курса должны были сказать, что лепить бездумно эти все эти базворды в приложение, потому что стильно и молодежно - очень плохая идея. Хотя для курсоча сгодится, пофиг какую фигню вешать на уши преподавателю, правильно ведь говорят: не умеешь программировать, иди учить программировать.
> где работа с сокетами?
Работа с сокетами на уровне хоста - там серверный сокет; И на уровне сессии. Там клиентский.
Я решил что нафиг эти стиримы и использую Memory и передаю куски памяти хендлеру, не заметил проблем с таким вот решением.
> ConcurrentQueue - плохой и медленный класс
Понятно. Буду еще пилить свой потокобезопасный сортированный список.
> лонг раринг таски в асп - плохая затея
Почему? Хотя наверное понимаю почему. Как я понял там куча стейтмашин и всех этих эвейтеров создается. Поэтому? И если плохая, то получается лучше с потоками делать? Что тогда лучше - каждой сессии по потоку или пул потоков?
>Работа с сокетами на уровне хоста
Ахахаха, так используй тогда нормальный WebAPI или HTTP, это тоже обертка над TCP. Зачем мозги ебать? Там тебе и лонг раннинг таски не нужны, и всякие Concurrent коллекции.
>не заметил проблем с таким вот решением
Билли, где сокеты?
>TCP-сервер в виде демона на сокетах
>на сокетах
>Буду еще пилить свой потокобезопасный сортированный список.
Зачем? Их в библиотеке дофига на все случаи жизни.
>И если плохая, то получается лучше с потоками делать?
Обычное консольное приложение или библиотека, а не ASP.
>>1578799 (OP)
Это же гениально, когда C# треда нет в ленте и каждый создает свою тему.
Мне кажется у нас расхождение в терминах.
Я под хостом в данном случае понимаю свою личную сущность, что запускается, биндится к порту который передан с конфигм(называю так, потому что в книгах что читал так называли и в примерах кода видел, конечно чаще видел Server, но мне кажется, что сервером лучше все в целом называть а не отдельный класс) и начинает ожидать входящие соединения, попутно ведя статистику полученного-отправленного, и имея торчащие наружу куски для управления подключенными сесиями, типа убить сессию по ID, почистить сессии которые долго ничего не присылали и которым ничего не отправляли, посмотреть список сессий и т.д. Тут как раз и есть серверный сокет, в конструкторе конфигом передаем порт на который биндиться, если порт занят - кидаем эксепшн, если не занят - биндимся и начинаем прием входящих соединений, рожаем клиентов и пихаем их в сессии.
Под сессией - класс который занимается приемом-отправкой клиентских сообщенией. У каждой сессии - клиентский сокет.
Вот и сокеты.
Никаких ASP я и не использовал. Я вроде как и не писал что использовал.
>Никаких ASP я и не использовал
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio
>Я под хостом в данном случае понимаю
>TCP-сервер в виде демона на сокетах
Ну~, я деталей задания не знаю. Но если в задании фигурирует слово "сокет", я бы ожидал, что студент будет ебаться с перекладыванием байтов на самом низком уровне (класс Socket или его производные). А не использовать абстракции более высокого уровня как в статье выше.
Задание покрывает самый обычный ASP.NET. Ведь, о боже, HTTP/2 - это тоже сокеты. Подключения, сессии и так далее уже реализовано из коробки.
Потом, для фоновых задач и коммуникации M$ рекомендует использовать gRPC, вместо почившего WCF, а не вот эту ересь, что ты пытаешься на коленке сделать.
Какой смысл делать так, как делаешь ты? Никакого: как все это работает на низком уровне ты так и не поймешь, как это пишут нормальные люди - тоже не поймешь, так не пишут - это велосипед. Тебе банально знаний и времени не хватит реализовать это правильно (про NAT уже почитал? а ведь это только айсберг). Потому делай так, как считаешь нужным, и вешай лапшу преподу при сдаче курсового.
Но не об этом вопрос. Какую библиотеку лучше всего поюзать? В вакансиях #-web в required пишут VUE/React/Angular/AngularJs. Какой из этих 4 выбрать? И нужен ли jquery в 2к20? Все, что я знаю по этим 4 либам:
1. Vue - много китайской документации, не очень популярна на non-asia;
2. React - пожалуй самая популярная (по моему мнению, влень гуглить топы) либа, где в любой кусок html страницы можно запихнуть целую среду JS кода с отдельными функциями приминимыми к DOM;
3. Angular - пожалуй самая привлекательная (для меня) либа из всех. Почему? TypeScript. Синтаксис очень похож на #, да и все от тех же ребят.
4. AngularJs - MVC библиотека Js-a. Часто обновляется. Когда то читал GetStarted, дальше дело не дошло.
Я знаю, что по JS-у спрашивать в C# треде не ок, но вы то сами знаете рыночек, что без JS-a в вебе делать нечего.
Какие еще советы дадите по вебу для C#? Есть опыт в MVC5, Core2.2, RESP-Api ну и базовый набор верстальщика (последнее не очень зашло).
Спасибо за ответ.
1. jQuery изучается за час, максимум за два часа. Нужен для легаси говна и частичного понимания Angular.
2. React сам по себе примитивен и очень легко и быстро изучается. Проблема в обросшем говне вокруг него, на изучение которого надо проебать дохуя времени. Писатели на React обмазываются функциональным программированием, но на уровне макаки, поэтому базовые понятия знать необходимо.
3. Svelte - это такой себе React 2, где код максимально примитивен, очевиден и императивен. Крайне низкая популярность.
4. Angular - очень похож на C# с его ASP.NET MVC. Знаешь Angular, значит знаешь TypeScript, хотя, при желании, можно писать и без него. TypeScript действительно очень похож на C#, но пока там не начнут появляться костыли языка и замашки функционального программирования, которые могут сорвать мозг обычному обывателю C# без подготовки.
5. AngularJS до 1.5-1.6 - страшное легаси дерьмо, беги, сука, с этого проекта.
6. AngularJS 1.6+ - легаси говно, похожее на Angular. Соглашаться только на большие рейты.
Итого, знать надо Angular или React, чтобы быть востребованной фронтенд макакой. Знать сразу оба не обязательно.
Но так как это дерьмо собирается на Node, его тоже знать надо хоть как-нибудь. К тому же всякие дополнительные сервисы могут быть написаны чисто на Node.
>Я поскролил учебник до середины и понял, что все интуитивно понятно
Ой, зря ты так думаешь, зря-зря. JavaScript - какая-то аномальная индусская хуйня (представь ту картинку, где сравнивают Golang 1 и Golang 2, вот JS - это 2).
Забыл про Vue - что-то среднее между React и Angular. Больше ничего про него можно не знать из-за очень низкой популярности. При желании, все тонкости Vue изучаются за неделю, но это актуально пока не вышла новая версия Vue.
>замашки функционального программирования, которые могут сорвать мозг обычному обывателю C# без подготовки
Например https://ngrx.io/ - это еще что-то приближенно нормальное, что можно встретить в типичном Angular, хотя выглядит как какая-то сложно читаемая хуйня.
Вообще там идея, что Angular пиздит идеи у React, а React - у Angular. Vue пиздит идеи у Angular и React, такой себе мутант.
AngularJS 1.5+ в симбиозе с Angular, используя ng-upgrade (статический или динамический). Охуителен тем, что:
- надо знать AngularJS 1.5+ и Angular
- AngularJS может одновременно использовать и JavaScript, и TypeScript
- компоненты AngularJS и контроллеры AngularJS могут быть в перемешку, контроллеры крайне сложно мигрировать в Angular
- статический или динамический ng-upgrade нахуй меняет весь код
- код Angular в Angular 1.5+ - это новый язык как в html, так и в TypeScript
- код Angular 1.5+ в Angular - это тоже новый язык как в html, так и в JavaScript
- очень много хардкода и строковых литералов
- очень много непонятно как подписанных и как вызванных событий
- глобальные переменные, объявленные непонятно где и изменяющиеся непонятно как
- библиотеки AngularJS не работают в Angular и наоборот, нужно все оборачивать в врапперы
Ладно, я устал, тонкостей очень много. А видел такое не один раз.
> А не использовать абстракции более высокого уровня как в статье выше.
Так я и не использовал их в готовом виде, блин. Создал пустой проект. Объявил интерфейс ITcpHost с методами: StartAccept(), StopAccept(), GetSessing(Guid id), StopSession(Guid id), GetSessionCount(), свойства для чтения SendingBytes, ReceivedBytes и т.д. Имплементировал это ITcpHost в классе TcpHostBase, который принимает ISessionBuilder(Вынес в интерфейс чтобы обеспечить поддержку разных протоколов не меняя сессии, а только стейтмашину и хендлер) в конструкторе, внутри TcpHostBase одно из полей Socket _acceptor, в конструкторе класса передается IConfiguration из которого мы берем порт на котором будем ожидать клиентов. _acceptor методом AcceptAsync() получает сокет клиента, этот сокет передается билдеру и в засисимости от билдера что был передан в конструкторе делаем сессию конкретного типа, сохраняем в конкурентный словарик вида <Guid, ISession>, запускаем процесс сессии, в котором методом ReceiveAsync(Span,SocketFlags) получаем что пришло от клиента, отдаем хендлеру который помещает в стейтмашину то что пришлом и затем с случае если в стейтмашине будет обнаружен пакет подходящий под мой протокол - создаем объект ClientMessage в который помещаем инфу что хендлер извлек во время парсинга пакета моим мидлварем; полученный пакет уже отдаем на уровень приложения, там происходит всякая магия с записами в БД, пересылкой и прочим. Это все внутри библиотеки.
Теперь я хочу это собрать в одну кучу с помощью внедрения зависимостей, чтобы модно-молодежно, для этого создал новый консольный проект, добавил nuget с майкросовтовским IHostBuilder'ом и хочу чтобы сервер из него стартовал.
Почему это не сервер на сокетах-то? Где тут какие-то высокие абстракции, кроме моих?
>Почему это не сервер на сокетах-то?
Вот теперь я вижу сервер на сокетах. Вот только если ты изменяешь те две переменные из разных потоков, то у тебя это не будет работать на многоядерном процессоре в релизе - гуглится "memory barrier c#". И мне не видно как ты обрабатываешь сообщения. Я же сказал, что сообщения умеют обрезаться и склеиваться?
>Теперь я хочу это собрать в одну кучу с помощью внедрения зависимостей, чтобы модно-молодежно
Напиши юнит тесты и попробуй покрыть 80%+ кода, если получится и у тебя не нарушается еще и DRY, значит правильно. Могу сразу сказать, что вижу нарушение SOLID. Внедрение зависимостей нужно для юнит тестов, а не для чистоты кода: код без внедрения выглядит читабельнее, но сложнее поддерживать.
>если ты изменяешь те две переменные из разных потоков
Твой вайл тру на втором и третьем изображении.
Кстати, в диспозе сокета тоже есть особенности, например, надо обрывать сокет с параметром Both, иначе с другой стороны будет висеть мертвый сокет (не дернется метод Receive).
> И мне не видно как ты обрабатываешь сообщения
У хендлера есть стейтмашина с двумя буфером, хендлер передает Action<ReadOnly<byte>>(можно конечно было бы событие использовать но я не люблю их использовать когда получатель только один предполагается), все что приходит добавляется в буффер, когда стейтмашина находит границы пакета она передает у часть у которой задетекчен конец пакета, через делегат, затем из этих байт с помощью обычной реализации конвеера обработки(постил тут пример своей реализации, по сути оказалось что за меня MS это давно придумали и назавали middleware, только у них это для каких-то других целей используется вроде) мы собираем уже нормальный класс сообщения, в котором вместо байт удобные для чтения поля-свойства. Там все опять же байтиками и оффсетами делано. Люблю я побайтойбствовать знаешь ли.
>>79170
Это я знаю. Метод StopReceiving как раз сначала пристреливает сокет в оба направления, потом закрывает его.
Проверяет только в области действия nullable директивы. Проверка - рекомендация компилятору, а не строгая проверка, легко обойти.
>чтобы быть востребованной фронтенд макакой
я себя позиционирую как бэка, но в вакансиях везде нужен фронт, типо фул стэка (чуть более, чем во всех). Вот пример:
— 1+ year experience in .NET software developing
— Excellent knowledge of JS
— Experience with any of ReactJS / AngularJS / VueJS
— Experience in creating Restful API
— Intermediate English communication skills (oral and written)
— Very good problem-solving skills
И это вакансия в разделе .NET (lulwat), особенно доставляет эта строка "Excellent knowledge of JS". Причем Angular даже нет. Я в этом или предыдущем треде спрашивал за применимость Razor в ASP/Core приложениях, хотя по сути везде все пишется через webAPI + js
мутно это все
>>79149
>>79151
>>79160
спасибо за ответы, для себя решил, что буду ковырять палкой React - концептуально мне нравится JS контейнеры для любого куска DOM элемента. Хотя как то это по дебильному блять - учи C#, знай ORB, знай принципы работы (тонкости), знай ООП, знай паттерны, знай ASP.NET MVC5/Core/WebApi. Когда вроде выныриваешь из всего этого, тебе еще под нос html+css+js+еще и блять фреймвок суют. Типо вот еще маст хев. А ну да, еще же ангельский, куда же без него. Пиздец короч
Зато платить будут реально достойно, если не ступишь и не будешь просить мало.
Мимо действующий фронт наслушавшийся от коллеги о дотнетчиках-фронтах-фулстаках
меня сам по себе фронт не очень цепляет - я когда пет на ASP.NET MVC делал, для меня View это был какой то пиздец. Там страница не тянется, там кнопка упала, тут футор не скролится. Мне ближе какие то архитектурные решения, ООП и т.д.
спасибо за совет
relation*
всмысле зачем? А через что ты будешь к БД подключаться? LINQ - это язык запросов (Sql внутри #), а ты должен знать интерфейс взаимодействия с MsSql (хотя бы)
не сталкивался, но по логике - LoadFrom имеет путь к сборке, а Load - нет. Это что ты рефлектишь?
Вначале пытаюсь загрузить через Load, используя имя в директории программы, затем через LoadFrom, указывая путь
я это понял, смотри конфиг Load и default path (если он есть). Я просто не могу понять, зачем тебе это? Какую ты задачу хочешь решить?
Я не понял какой конфиг, но своих не создавал. У меня нет особой задачи, просто изучая язык и платформу наткнулся на эту проблему.
https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.load?view=netframework-4.8
я не вижу перегруженный метод без параметров, вот и есть твоя ошибка.
>просто изучая язык и платформу
через командную строку? Ты рофлишь, что ли?
Там есть вариант перезагрузки со строкой в параметрах, которая является названием сборки без расширения, которая находится в директории ./bin/debag/core3/app/
>There are language specific drivers such as JDBC, ODBC, OLE DB where the driver interface is implemented according to the language specifications
И зачем ты это в .NET тред тянешь? Ок, даже возьмем низший уровень реализации ORM какой ни будь OLE DB от мелкософта - это тоже самое, что создавать самодельную педаль для велосипеда, когда продают уже в готовом виде.
Если такой любитель велосипедов, то нахуя тебе драйвер? Пиши самописный драйвер от БД, к которой будешь обращаться, но на одной БД никогда дело не остановится
-доступ к полю класса внутри класса напрямую
-доступ к полю класса внутри класса через свойство
?
https://pastebin.com/Jc1JAUY4
Причина тупого вопроса - отсутсвие значимых знаний работы CLR, компилятора и т.д.
А вот и напишу как пет-проект. Все эти ваши ORM пиздец как тормозят и глючат в любом языке.
>эти ваши ORM
Ну давай, пиши. Расскажешь потом, как твое говно будет работает быстрее
спойлерю - твои навыки работы с ДБ через "драйвер" нужны чуть более, чуть нигде
Нет, компилятор умеет такое оптимизировать.
>спойлерю - твои навыки работы с ДБ через "драйвер" нужны чуть более, чуть нигде
А вот и мышление корпоративного раба-макакена.
>спойлерю - твои навыки работы с ДБ через "драйвер" нужны чуть более, чуть нигде
Ну давай, манька, запилила мне на ORM хитровыебанный отчет с этими хуитками к завтра на миллионнострочных таблицах:
https://oracle-base.com/articles/misc/rank-dense-rank-first-last-analytic-functions
И что бы без нытья прокупить четырехголовый сервак за стопицот миллиардов и без нытья про "заплатить стопицот миллиардов за амазон"
как? я не знаю как, я не вижу нигде параметра который отдельно задает цвет для текста в таких подсказках!
>хитровыебанный отчет с этими хуитками
манька так порвалась, что забыла определения?
>на миллионнострочных таблицах
это по твоему много?
И что тебя так испугало, DENSE_RANK - расчетное поле в миллионной таблице?
Ты победил всех. А теперь сходи пососи.
Да.
Это нормально видеть жс в шарпе. Это или маленький проект, или распил бабла, т.е. на фулстеках пытаются экономить бабки: средняя вебмакака зарабатывает больше среднего бекендера или фулстека, фулстек зарабатывает ниже среднего мидла.
Я например вижу себя как фулстек: могу спокойно уволиться и найти работу на сеньёра-помидора онли в шарп, angular, angularjs, angular + angularjs, react или node. Так как уебал много времени и было много проектов разной свежести, чтобы все это говно хорошо выучить.
Лучше забить хер на такие вакансии или на собеседовании говорить, что типа "да знаю, но буду писать онли бек, или платите мне минимум х1.5 за жс". Т.е. зп от 4-5к как сеньёру, при этом быть со знанием мидла в каждой технологии.
Если мне не веришь, советую пообщаться с веб макаками. У них знать сразу реакт, ангулар и вью, все равно, что беку знать C#, Java, Python и переключаться между языками между проектами. Знают только одну технологию на фронтенде и только фронт, никаких беков на ноде, при этом зп 3-4к $. А hr, которые лезут со своим ангуларом к реакщику (или наоборот), вежливо посылают нахер.
Razor - поддержка легаси, где тебе не будут даже давать шанс сделать все по красоте. Застрянешь на допотопном фреймворке и будешь страдать от написанного до тебя кода, при этом получая упреки за низкую скорость работы. WebAPI + JS - это только старт нового проекта.
Потому что это тег "a" в html, где ты проперти класса Tovar передаешь через query string. Нехуя не передашь - будет пустой класс, асп под капотом разруливает это за тебя, используя рефлексию.
>Как теперь проверить нормально?
Заваливаешься в аудиторию, где лабы на компах сдают, и втихаря проверяешь перед/на/после пары.
Я же имею ввиду как проверить на необычные случаи, типа той самой склейки пакетов. Не смогу же я из аудитории на домашнюю машину стучаться(потому что IP динамический плюс внутри сети провайдера, а тот большую часть пакетов просто фильтрует, опять же еще и вузовская сеть фильтрует пакеты)
>Я же имею ввиду как проверить на необычные случаи, типа той самой склейки пакетов.
Интеграционные тесты, которые запускаются на 2+ машинах, где теми же thread/task слипами тестировать разные ситуации.
Можно эти тесты и на одной машине запускать, но это будут слишком синтетические тесты.
>я из аудитории на домашнюю машину стучаться
VPN и вообще, достаточно занять 2 машины в аудитории, обычно все машины связаны по сети и есть выход в тырнет.
Хуй знает кто там твои протыклассники, я просто тебе в рот за компанию ссу. Твой любимый энтити фреймворк тоже требует драйвера бд, к слову, стажёр тупорылый
>Razor - поддержка легаси, где тебе не будут даже давать шанс сделать все по красоте. Застрянешь на допотопном фреймворке и будешь страдать от написанного до тебя кода, при этом получая упреки за низкую скорость работы.
Хотя, фронт у таких проектов еще страшнее: ванильный жс, жквери и плагины жквери, работающие хуй пойми как. Там блядь страшно в тот жс лезть и что-то трогать, чтобы все нахер не сломалось.
>любимый
>энтити фреймворк
>стажёр тупорылый
Хуй знает, как то зашкварно после такого вылезать из readonly. Я помнимаю, что тут сидят окатыши и студенты бурс, но блять иногда такую хуету несут. Один через LINQ к бд коннектиться, другой сам провайдеры к драйверу пишет "БЫСТРЕЕ ЧЕМ ЭТИ ВАШИ ORM", третий вообще какое то быдло не осиливший чтение. Сагану пожалуй, что еще делать
я может чего то не понимаю, но не будет ли им - Бэк+фронт? На Пыхах я знаю это нормальная практика, но как обычно что бэк, что фронт - это саппорт какого то говенного проекта или старючего легаси. Чувак знакомый (пхпшник) говорит - сидел на бенче, помогал .NETчикам (хз, что он там помогал правда), а так в порядке вещей что то на WP дописать, что то RANDOM_FRAMEWORK поковырять. Ну и говнище, этот веб
Нормальная практика - это когда есть разделение задач. А не бека заставляют писать фронт и наоборот. Всё остальное - попытки наебать на бабки.
На галерах, если хорошие отношения с прорабом, можешь попробовать спросить сколько за тебя платит заказчик и сравнить с тем, сколько ты получаешь. И не редкость, когда джунов/мидлов такие бодишопы продают как сеньеров, отдуваться все равно не прорабу надо. Или работают под чужими фамилиями.
вот про того пыхаря, за которого я писал берут $40/h. На руки платят 1.5к :)
Вообщем я хуй знает, что это за вакансии такие в разделе .NET, где 80% required связана с JS
И как по тому скриншоту можно было догадаться, что тебе цвет не нравится? Нормально вопросы задавай и нормально будет.
а то что белый текст на белом фоне не видно не очевидно по пикрилу? на пикриле же больше ничего кроме этого факапа ет
Аааа, так там еще и текст, который не видно, но нужно догадаться что он там есть и должен быть виден. Пиздец.
Пиздец я сгорел с этой хуйни, почему майкрософт такие хуесосы блять нормально ничего не могут сделать, ебал я в рот их
с той же хуйней сталкивался (спрашивал не так давно в этом треде) - пришлось ручками хуярить. Но вроде как через решарпер можно порешать, но я им не пользуюсь
Например, у меня идёт
1. - ...
2. - ...
3. - ...
4. - ...
5. - ...
6. - ?
Как перейти с 6 строчки к первой или к следующим? Нигде не нашёл
ctlr+shift+f и солюшн ещё пришлось пересоздать. Пиздос конечно
goto
Пользуйся осторожно, это инструмент богов программирования и в неумелых руках влечет за собой хаос.
В 6 строчке обращение к методу, который находится на первой строчке))))))))))))))))))))000
Каким образом вы освежаете в памяти прочитанную ранее информацию? Я к примеру давно (1-2 года назад) прочитал Шилда, Метанит, MSDN почитывал, но если меня прямо сейчас вызовут на собес - мало что вспомню, нужно хоть раз глазами пробежать.
Перечитывать 1к страниц Шилда влень, какие еще есть варики за 1-2 дня освежить данные в голове?
Жаль нет каких-то простых перенаправлений
>switch case это ведь то же самое, что и оператор if
Принцип тот же - условие-действие
>goto
хуйня, которая никем и нигде не используется в ООП, она нужна функциональщикам. Забудь за нее.
Как избежать в данном случае? Надо чтобы после /admin продолжился код
Что это за говнокод?
Первый if лишний. Достаточно поднять вверх то условие что в while. Вместо goto написать функцию.
Блядь, до чего же ты тупой.
Exit это метка к которой скаканет goto.
Пиздец, выросло поколение интерпразеров, базовые конструкции языка не знают
Ну, можно так, например. Я правда не знаю что у тебя там за код в целом.
Понял, спасибо.
>Которая примет после себя код, который у тебя после метки Exit
Одна функция примет весь код дальнейшей программы? ...
Кто ж знал, что ты долбоеб, который весь код программы в функцию Main суёт, еще и goto подправляет? Разбивай код на функции и классы, их как раз для этого придумали.
> хуйня, которая никем и нигде не используется в ООП
Я использую в работе коменитрую каждый раз либо: "Узнаешь когда пройдешь", либо ")))". На самом деле оч удобно и жалко что нельзя в произвольные точки проекта прыгать, а только внутри области видимости.
>нельзя в произвольные точки проекта прыгать
Вот, у меня есть в двух томах физически, все страницы стали желтые и разлезлась по швам. В конце книги есть листинги, где кунг-фу goto мастер написал игры, где как раз можно прыгать в произвольные места и вызывать асм.
Хуясе порвало
>Блядь, до чего же ты тупой.
ты вообще вкурсе, что твои два if нахуй в твоем говне не вперлись? Твое обоссаное goto (метка Т_Т) заменяется условными операторами. Покажи такую "метку" в интерпрайзе, тебя мочой пометят
И первый if нужен чтобы сразу перейти к админскому коду, а не два раза ненужный код смотреть
А, ну я понял :(
Конечно порвало. Ты, блядь, синтаксиса языка базового не знаешь, а лезешь с советами к человеку который только учится и не поймет, что ты хуйло безмозглое и тебя слушать вредно. Вредитель как он есть, блядь.
>синтаксиса языка базового не знаешь
Я бы тебя спросил за такой базовый синтаксис https://pastebin.com/CZ6sgBUg
Блядь, ты серьезно такой тупой? Притащил обычные функции как пример какого-то необычного синтаксиса. Небось в жизни unsafe код не писал и совсем в осадок выпадешь, когда в аргументах функции увидишь какой-нибудь int*, будешь судорожно гуглить, а потом подумаешь что в шарпе можно куски сишного кода вставлять. Боюсь спорсить, ты хоть знаешь что '<<' делает? Небось при этом из адептов "ВУЗы не нужны! Можно по метаниту выучится!"
Это безопасный код.
Все, отличное от WriteLine и Main, это не функции, а ключевые слова.
>ВУЗы не нужны!
Ну почему же, я умею в опенмп благодаря вузу. Впрочем, когда только вышел с++14, почитал луну и захерачил домик не в лоуполи с анимацией открытия/закрытия дверки по клику, динамическим освещением, тенями и свободной камерой на винфоне 8 в стабильные 60 фпс за полдня.
ыааа))
кста да, 2 года пишу на решетках, первый раз синтаксис goto увидел, т.к. сразу скипаю, когда вижу эту операцию
>а лезешь с советами к человеку который только учится
сразу написал за switch, goto лучше и не знать
>что ты хуйло безмозглое и тебя слушать вредно. Вредитель как он есть, блядь.
такой токсик пиздец, это не ты случайно провайдеры к JDBC писал?
Это не я. Но в шарпе нужен билдер нативных запросов. Хотя бы к сиквел серверу.
Это, блять, в любом языке и это именно что нативно правильно работающая схема организации циклов.
Думаю, они goto оставили просто как винтажный экспонат, видимо дядюшка Гейтс вспоминал те времена, когда впервые сделал шаг к богатству, написав интерпретатор бейсика для альтаира.
Иначе непонятно, зачем они до сих пор тянут VB ради офиса гыы, пайтон же нельзя прикрутить к ворлду, сложна.
Тащемта, встроенный в офис VBA к VB.NET из VS имеет мало отношения, кроме синтаксиса. К VB6 имеет, но кто сейчас помнит про VB6? Поэтому, думаю, что тянут исключительно ради обратной совместимости дохуилиона уже написанных скриптов.
Подскажи пожалуйста, почему может не работать программа после сборки через ilasm ?
Т.е. я сперва делаю ildasm sample.exe
Потом делаю ilasm sample.il
Но программа не запускается, хотя ошибок не выдает при сборке
У него работа c DOM узкое горлышко перфоманса.
++ как и C - пожалуй исключение из правил. Есть еще ряд языков, которые как и ++, с - не пользуються большим спросом и находятся в нише Non-Web. Но рыночек все решает. Завтра будет прорыв связанный с Desktop (к примеру) все быстро перекочуют на него.
Я когда начинал с решеток тоже надеялся, что не буду в вебе, но получилось так, что убил двух зайцев (и повезло)
Но когда я начал читать документацию по ReactJS - у меня почему то привстал. Все эти контейнеры, легкий рендеринг, Babel, сборочка Webpack-ом.
MMMMM, кайф. Обычно после работы, когда возвращаюсь домой я падаю в кресло и начинаю смотреть всякие смешнявочки на ютубе, а тут начал смотреть "Get started ReactJS". В какой то момент я понял, что со мной что то не так, схватил CLR via C# Рихтера и начал читать громко и вслух первую главу про манифесты и сборки, молясь чтобы отпустило. Когда начал вспоминать все то, что было затерто временем по решеткам, мысли про React немного усели. Но утром повторилось тоже самое.
Не знаю теперь что делать. Помогите советом.
Много ли вакансий по васму?
>Зачем майки продвигают электрон на десктопе?
Дешево, справится макака, кроссплатформа.
>А как же .net core?
Декстоп онли на винде, а кроссплатформу менеджмент не знает как писать (с) офф ответ
The feature comparison of IIS web server vs Kestrel web server is:-
Similarity
Both have static files.
Both allow web application compression to some extent.
Differences
IIS web server only supports Windows while kestrel web server supports all platforms.
IIS web servers have HTTP access logs which is not the case in kestrel.
IIS allows port sharing/multiple apps running at the same time while kestrel doesn’t.
IIS has SSL certificates while kestrel only works with internal SSL traffic between the reverse proxy web servers and .Net.
IIS has windows authentication while kestrel doesn’t.
IIS has a management console which isn’t there in kestrel.
Process activation is there in case of IIS web servers while it isn’t there in kestrel.
IIS allows application initialization while kestrel doesn’t.
IIS has configuration API while kestrel doesn’t.
IIS allows request filters and limits while kestrel doesn’t.
IIS has IP and domain limitations while kestrel doesn’t.
IIS follows HTTP redirect rules while kestrel doesn’t.
IIS allows WebSocket protocol while kestrel allows middleware.
IIS does response output caching while kestrel doesn’t.
IIS has FTP servers while kestrel doesn’t.
Это же пиздец какая удобная штука, лепить конечно ее не стоит куда попало но иногда она очень облегчает задачу.
Вот к примеру чек на символ, с goto я сразу понял как сделать, а без него чет туплю.
Console.WriteLine("Введите символ на Английском языке:");
char ch = '0';
link1:
try
{
ch = Convert.ToChar(Console.ReadLine());
}
catch (Exception ex)
{
}
if ((ch >= 65 && ch <= 90)||(ch >= 97 && ch <= 122))
{
Console.WriteLine("Правильный символ ");
}
else {
Console.WriteLine("Хуйню ввел, попробуй еще разок ");
goto link1;
}
Console.ReadLine();
У тебя в коде сразу работа с представлением, валидация, бизнес-логика. Т.е. наговнил. Конечно, с goto лапшу теперь проще разруливать.
Сделаешь декомпозицию этого говна по простым функциям: вместо goto будешь использовать вызов функции.
Вот это сложно пиздец для меня, я делаю парсер подсказок для гугла и чета ваще не врубаюсь куда что писать, просто делаю портянку кода, а потом на следующий день хуй помню что там ваще и как работает(((
Ну не из за него я не помню)
Я раньше делал програмки в ZennoPoster, а сейчас решил перекатится полностью в C#. А в зинке там все табличками для даунов, и стрелочками.
Пикрил корочи
Пизда рулю.
Console.WriteLine("Введите символ на Английском языке:");
char ch = Console.ReadKey().KeyChar;
while (!char.IsLetter(ch) || ch > 0x7f)
{
Console.WriteLine("Хуйню ввел, попробуй еще разок ");
ch = Console.ReadKey().KeyChar;
}
Console.WriteLine("Правильный символ ");
Пиздец какой.
Мы в школе тоже программировали стрелочками в LabVIEW. Ебать, как давно это было, и как ущербно.
Нет, это ReadKey считывает непосредственно последнюю нажатую кнопку. А ReadLine читает строку, что в твоём случае нахуй не надо
Потому что один хуй в древние времена, когда с goto можно было в любое место прыгать, сказал что получается "спагети код", т.к. этот хуй был вроде как уважаем в то время, многие его послушали причем для тех времен это было вполне валидно.
Сейчас, когда goto в 99% нормальных языков ограничивается областью видимости, не используют goto просто потому что ебланы тупые без капли своих мозгов, ведь в середине прошлого века, когда даже IDE не было, один хуй сказал, а раз сказал, давайте в куче вложенных циклов делать метки, давайте для каждого случая пилить стейтмашину и т.д. лишь бы без goto, ведь стейтмашина на 200 строк это намного понятнее и удобнее, сразу посмотрел и понял, не то что if(zalupa) goto Pizda;
По факту, сейчас любой проект без goto и так спагети код. Ты никогда не читаешь его сверху вниз из-за того что все давно перешли на ООП, а компиляторы умеют разбирать код в любом порядке, а не как в какой-нибудь сишечке, где если ты не объявил сверху, то все, пизда, код не откомпилируется, беги в правильном порядке объявления расставлять; он(код проекта) всегда разбит на неймспейсы, файлы, модули и тебе в любом случае придется прыгать по всему коду и пара goto внутри скопа никак не усложняет тебе жизнь.
>Потому что один хуй в древние времена
Может стоит хотя бы понять, почему его послушали? И с появлением структурного программирования, начиная со всяких оберонов/паскалей, нашли и доказали минимальный набор конструкций языка, который полностью исключает необходимость использовать goto. Он остался как наследие, с целью поддержать обратную совместимость с уже написанным кодом.
>когда goto в 99% нормальных языков ограничивается областью видимости
В новых языках нет goto. Даже в расте нет. Наличие goto в новых языках - признак некомпетентности проектировщика (привет голенгу и долбаебам, которые на него дрочат, воистину язык макак для макак).
>когда с goto можно было в любое место прыгать
Охуеть блядь. Ты имел дело с такими программами? Я имел такие программы в рот - ведь так охуенно прягать из середины огромного листинга в начало, а потом в конец. Особенно когда метка только в виде числа. Ведь я, блядь, сплю и вижу как охуенно скроллить километровый листинг туда-сюда, имитируя дрочку. И раз ты такой охуенный, тебе шарп не мешает хуярить все в один метод и использовать goto, нашел проблему в скоупе, ха.
>не используют goto просто потому что ебланы тупые без капли своих мозгов
Он оправдан только если:
- ты у мамы херов оптимизатор, и то ЕСЛИ ты умнее компилятора, который постоянно меняется, в чем я очень сомневаюсь
- автогенерация кода
- в языке нет конструкций, которые позволяют сделать тоже самое без goto, например в асме
>давайте для каждого случая пилить стейтмашину
То-то сегодняшние популярные подходы на хую вертели стейтмашины в пользу неизменяемых структур, потому что код стало проще отлаживать. Хотя откуда тебе знать? Ты у нас хуев оптимизатор, который оптимизирует код, который вообще может на производительность не влиять в силу распределенности системы и издержек коммуникации.
>давайте в куче вложенных циклов делать метки
Сколько видел проектов, очень редко больше 1 цикла, почти никогда, а видел дохуя проектов на разных языках, любой степени уебищности.
>По факту, сейчас любой проект без goto и так спагети код
Нехуя, поскольку это зависит от кривых рук того, кто этот код написал: в продуманном коде тебе не надо лезть в реализацию, а в продуманном языке тебя компилятор еще и палкой бьет, если хуйню напишешь при использовании. Всякие объекты, функции были придуманы для сокрытия реализации, чтобы ты, тупая макака, с нижнего уровня поднималась на уровень выше (или сверху вниз) в манипуляциях между абстракциями. Т.е. не фор в 50 строк, который делает хуй пойми что, а функция "найти сумму логарифмов" в одну строку. Улавливаешь разницу, макака?
>все давно перешли на ООП
Я понимаю, ограниченность ума сказывается, но есть еще кое-что отличное от ООП, что практикуют.
>тебе в любом случае придется прыгать по всему коду
Попрыгай мне по сторонней библиотеке без исходников. Или ты у нас мамкин-все-свое-написатель?
>пара goto внутри скопа никак не усложняет тебе жизнь
Есть положительный момент: открываешь код, видишь goto, понимаешь умственные способности автора, закрываешь код. 200 строк у него, блядь.
>>82524
>Так и не только я скажу.
Нарушение DRY. Легко прослеживается при добавлении еще одного параметра, который надо прочитать.
>Потому что один хуй в древние времена
Может стоит хотя бы понять, почему его послушали? И с появлением структурного программирования, начиная со всяких оберонов/паскалей, нашли и доказали минимальный набор конструкций языка, который полностью исключает необходимость использовать goto. Он остался как наследие, с целью поддержать обратную совместимость с уже написанным кодом.
>когда goto в 99% нормальных языков ограничивается областью видимости
В новых языках нет goto. Даже в расте нет. Наличие goto в новых языках - признак некомпетентности проектировщика (привет голенгу и долбаебам, которые на него дрочат, воистину язык макак для макак).
>когда с goto можно было в любое место прыгать
Охуеть блядь. Ты имел дело с такими программами? Я имел такие программы в рот - ведь так охуенно прягать из середины огромного листинга в начало, а потом в конец. Особенно когда метка только в виде числа. Ведь я, блядь, сплю и вижу как охуенно скроллить километровый листинг туда-сюда, имитируя дрочку. И раз ты такой охуенный, тебе шарп не мешает хуярить все в один метод и использовать goto, нашел проблему в скоупе, ха.
>не используют goto просто потому что ебланы тупые без капли своих мозгов
Он оправдан только если:
- ты у мамы херов оптимизатор, и то ЕСЛИ ты умнее компилятора, который постоянно меняется, в чем я очень сомневаюсь
- автогенерация кода
- в языке нет конструкций, которые позволяют сделать тоже самое без goto, например в асме
>давайте для каждого случая пилить стейтмашину
То-то сегодняшние популярные подходы на хую вертели стейтмашины в пользу неизменяемых структур, потому что код стало проще отлаживать. Хотя откуда тебе знать? Ты у нас хуев оптимизатор, который оптимизирует код, который вообще может на производительность не влиять в силу распределенности системы и издержек коммуникации.
>давайте в куче вложенных циклов делать метки
Сколько видел проектов, очень редко больше 1 цикла, почти никогда, а видел дохуя проектов на разных языках, любой степени уебищности.
>По факту, сейчас любой проект без goto и так спагети код
Нехуя, поскольку это зависит от кривых рук того, кто этот код написал: в продуманном коде тебе не надо лезть в реализацию, а в продуманном языке тебя компилятор еще и палкой бьет, если хуйню напишешь при использовании. Всякие объекты, функции были придуманы для сокрытия реализации, чтобы ты, тупая макака, с нижнего уровня поднималась на уровень выше (или сверху вниз) в манипуляциях между абстракциями. Т.е. не фор в 50 строк, который делает хуй пойми что, а функция "найти сумму логарифмов" в одну строку. Улавливаешь разницу, макака?
>все давно перешли на ООП
Я понимаю, ограниченность ума сказывается, но есть еще кое-что отличное от ООП, что практикуют.
>тебе в любом случае придется прыгать по всему коду
Попрыгай мне по сторонней библиотеке без исходников. Или ты у нас мамкин-все-свое-написатель?
>пара goto внутри скопа никак не усложняет тебе жизнь
Есть положительный момент: открываешь код, видишь goto, понимаешь умственные способности автора, закрываешь код. 200 строк у него, блядь.
>>82524
>Так и не только я скажу.
Нарушение DRY. Легко прослеживается при добавлении еще одного параметра, который надо прочитать.
Подскажите где я налажал, на каком-то сампл тесте выдает true, а у меня false.
Код на пике.
Вот задача: https://www.codewars.com/kata/54da539698b8a2ad76000228/train/csharp
You live in the city of Cartesia where all roads are laid out in a perfect grid. You arrived ten minutes too early to an appointment, so you decided to take the opportunity to go for a short walk. The city provides its citizens with a Walk Generating App on their phones -- everytime you press the button it sends you an array of one-letter strings representing directions to walk (eg. ['n', 's', 'w', 'e']). You always walk only a single block in a direction and you know it takes you one minute to traverse one city block, so create a function that will return true if the walk the app gives you will take you exactly ten minutes (you don't want to be early or late!) and will, of course, return you to your starting point. Return false otherwise.
Note: you will always receive a valid array containing a random assortment of direction letters ('n', 's', 'e', or 'w' only). It will never give you an empty array (that's not a walk, that's standing still!).
Массив map по дефолту весь false, это не плюсы. В свиче какая-то ересь.
Массив map не нужен, возвращаешь true, если длина walk равна 10, x = 4, y = 4.
>Ты точно читал задание?
Не люблю, когда в задаче графомания. Суть же в том, что ты должен через 10 шагов оказаться там, откуда начал?
>Схуяли у меня запад?
Ну не я же на "n" делаю x - 1. Или у тебя x - это движение по вертикале? Ахаха.
>должен через 10 шагов оказаться там, откуда начал
Да и шагов тоже должно быть именно 10.
>Или у тебя x - это движение по вертикале? Ахаха.
Ты толстишь или ты тупой?
Алсо я уже его сделал, там все было правильно, просто я проебался и не сохранял изменения в координатах.
>все было правильно
На том сайте очень легко подобрать сет правильных ответов даже не решая задачу.
двачую адеквата, все четко разложил
>пик 1
Ну а я что написал? Выведи в сонсоле массив 10 на 10 и походи по нему в разные стороны.
>очень легко подобрать сет правильных ответов даже не решая задачу
Задачи и нужно решать чтобы они откладывались в голове. Просто просмотр правильных ответов практически не делает тебя умнее.
>пик 2
Я и не говорю что я пиздато написал, да на пике решение намного лучше.
>Выведи в сонсоле массив 10 на 10 и походи по нему в разные стороны.
https://dotnetfiddle.net/62yCM8
https://dotnetfiddle.net/gFYx5k
Разница в том, что я не использую x для вертикали.
>Задачи и нужно решать чтобы они откладывались в голове.
Сомнительной полезности твои задачи. Программировать ты на них не научишься.
Может пора перекатиться? А то пришлось минуту скроллить до сюда.
Безопасно, поскольку данные надо декриптовать перед сравнением, используя, например, X509Certificate2. А вообще, лучше используй .NET Core.
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/certauth?view=aspnetcore-3.1
Но есть альтернатива: Unity3d, хочу попробовать себя в геймдеве. Дело в том, что моя жена хочет перекатиться в 3d-моделирование, Zbrush, Blender, вот это всё. Сможем вместе погружаться в эту тему.
Но я боюсь, что в геймдеве спрос меньше, больше кранчей, всё такое.
В той самой либе с DbContext при добавлении миграции вываливается эта залупа:
No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. Гуглил - говорят типо конструктор нужен - добавил
public MyContext(DbContextOptions options) : base(options) { }
Добавил так же конструтор без параметров (чтобы можно было использовать этот контекст). Все равно выебывается и пишет ту же ошибку. Я гуглил по SOF и Github - там пишут добавлять в services этот контекст. Но блять, у меня же либа, какой тут нахуй StartUp.
Что я делаю не так?
Я им и пользуюсь. У меня проблема в том, что мне аутентификацию по сертификату нужно прикрутить только к одному контроллеру, а в остальных - аутентификация по паролю или winauth. А по твоей ссылке вроде глобальное решение, но я еще почитаю тщательнее
>добавлять в services этот контекст. Но блять, у меня же либа, какой тут нахуй StartUp.
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(myConnectionString));
Или ты заворачиваешь в промежуточной либе контекст в враппер и намерен его использовать?
бля, вот я дебил
>>83276
>в промежуточной либе контекст в враппер
без враппера, просто сборка отдельная с Entities и соответственно с DbContext (разделение, так сказать). У меня идет 3 сборки:
1. DataLayer (библиотека) - Все сущности, DbContext, Repositories, UOW.
2. BusinessLogicLayer (библиотека) - Из DataLayer идут все базовые CRUD функции для работы с БД, перерабатываются (handler's всякие и внутреняя логика) и передаются дальше в виде врапера над всеми сущностями типа UOW от DLL. Дальше ->
3. WebUI - Обычное Asp.net Core application - Из BLL в контроллеры идет враппер, типо UOW.
Вот у меня сейчас задача - создать миграцию и начать создавать взаимодействие WepAPI (юзера) и базы данных.
Что я делаю не так?
>просто сборка отдельная с Entities и соответственно с DbContext (разделение, так сказать)
Зачем? Почему тогда каждый класс в отдельную сборку не запихнешь?
>Что я делаю не так?
Наворачиваешь все эти нахуй не нужные UOW и репозитории. Плодишь сущности просто потому что какие то индусы на юдеми тебе затирали про то, как паттерны это охуенно и давай мы сейчас вместо ста строк кода сделаем тысячу, которые будут делать ровно то же самое. В EF core бизнес логику обычно держат в сервисах, которые через DI запихивают в контроллеры.
А по поводу миграций - оно всё должно работать так: В Startup'е веб приложения добавляешь services.AddDbContext и подкидываешь свой контекст. В самом контексте добавляешь конструктор с DbContextCreateOptions и сразу :base(options), сам конструктор пустой.
Потом открываешь nuget консоль через alt - v - e - o и вбиваешь ADd-Migration. Всё должно работать.
Бля забыл дописать, в nuget консоли в выпадающем списке сверху выбираешь проект с DbContext
>Зачем? Почему тогда каждый класс в отдельную сборку не запихнешь?
Алсо тут тоже проебался, думал ты DbContext в отдельном от классов модели проекте хранишь.
https://metanit.com/sharp/mvc5/23.7.php
типо такого у меня, казалось (и сейчас кажется), что всему свое место. Доступ к БД? Сборка. Бизнес логика? Сборка. UI? Сборка. Разве не так?
Так. А репозитории и uow тут причем? Ты предполагаешь переезд с EF на другую ОРМ? asp.net имеет свои гайдлайны, чтобы ты таким не заморачивался - инжектируемые сервисы. Классы сервисов храни пожалуйста в отдельном проекте, но репозитории с uow ты сам знаешь зачем тебе?
>uow ты сам знаешь зачем тебе?
Враппер всех сущностей. Разве нет?
Я нашел решение, не знаю подойдет ли - из либы сделать обычный проект и кинуть через него reference к либе BLL и дальше в Web UI.
>Враппер всех сущностей. Разве нет?
Разве да. Но зачем? Просто чтобы было? Какую проблему ты решаешь этим?
>Какую проблему ты решаешь этим?
Собираю в пучек все сущности и могу легко маннипулировать ими через добавление 1 интерфейса в конструктор.
>>77042 - это мой пост, когда то спрашивал. Разве так не удобнее, чем каждый раз жонглировать разными контекстами?
Энивей, пересоздавать DAL, как Core проект, а не либа - это гемор пиздец. Может есть всетки другие способы реализации? Или же можно превратить библиотеку в ASP.NET Core project?
>Собираю в пучек все сущности и могу легко маннипулировать ими через добавление 1 интерфейса в конструктор.
В какой пучок? У тебя уже есть этот пучок - сам твой контекст. Какая разница между DbContext.MyEntities.Add(new MyEntity()) и entitiesRepository.GetEntities<MyEntity>().Create(new MyEntity) если в конечном счёте у тебя всё равно делается ровно то же самое, но за двумя врапперами?
В какой конструктор? В конструктор контроллера?
>Разве так не удобнее, чем каждый раз жонглировать разными контекстами?
На одну БД один контекст. Куда ты ими там жонглировать собрался?
Твой DAL-проект может быть обычной .net standard library.
>Или же можно превратить библиотеку в ASP.NET Core project?
Если сейчас у тебя другой тип - можешь выгрузить проект (vs2017-) или просто в солюшн эксплорере один раз нажать по проекту и в открывшемся текстовом представлении .csproj поменять net472 на netstandard2.0 или как то так, за этим подробнее в гугл, но это точно можно сделать и это точно легко гуглится
>Какая разница
У меня условно есть 4 сущности - склад, финансы, доходы и персонал. Я буду передавать по цепочке или 4 отдельно сущности или 1, как враппер
>В конструктор контроллера?
Да, забыл добавить
>На одну БД один контекст
У меня в UI уже есть один контекст для аутентификации, туда же нужно запихнуть еще один - для логики в ту же БД
>быть обычной .net standard library.
ты имеешь ввиду Class library .net core? Так там нет StartUp, куда service добавлять?
Спасибо за ответы
>Я буду передавать по цепочке или 4 отдельно сущности или 1,
Каво? Куда? Что ты собираешься таким образом передавать?
>ты имеешь ввиду Class library .net core? Так там нет StartUp, куда service добавлять?
Ты под DAL подразумеваешь проект, где твои врапперы дёргают db context, так? Зачем им там в проекте свой StartUp?
>Каво? Куда? Что ты собираешься таким образом передавать?
Цепочка такова - DAL - Передает базовый функционал (CRUD) для работы с БД. Далее - BLL - используя уровень DAL делает всяческого рода проверки - Занесли накладную, количество должно быть больше 0 (типо такого). Далее - Web UI (ASP.NET Core app) - используя BLL передает в контроллер инкапсулируемые бизнес процессы (чтобы контроллер не раздувать и не передавать по 4 контекста). Но не в этом вопрос был.
>Зачем им там в проекте свой StartUp?
Для миграции с БД. DAL уровень должен быть нижней прослойкой для работы с базой данных.
Нужно :Создать программу, которая ищет в указанном каталоге файлы, удовлетворяющие заданной маске, и дата последней модификации которых находится в указанном диапазоне. Поиск производится как в указанном каталоге, так и в его подкаталогах. Результаты поиска сбрасываются в файл отчета.(это все задание)
В общем вроде понятно что делать. Но вот одно но не могу проверить все папки в подпапках что то залип есть кусок кода и там вроде все норм но выдает Exeption подскажите что за херня и как боротся. Таску решать не надо только подсказать с рекурсией где у меня пиздец. Что не так указал весь путь должен E:\Testing\gg\th получается последнюю папку не видит
Предлагаю шарпистам помочь допилить в НАНОБОРДЕ: https://github.com/username1565/nanoboard
сервер для хостинга наноборды в TOR'e.
Как я себе это вижу?
Отдельный сервер поднимается, и при помощи редактирования файла torrc,
пробрасывается на порт 80 onion-домена, сгенерированного програмой Garlic:
https://github.com/Artifact0/Garlic
После этого, наноборда доступна через TorBrowser.
Здесь: http://nboardn46ay6ycdi.onion/
вы можете видеть поднятую в TOR'e наноборду карасика: https://github.com/karasiq/nanoboard
но это не то.
Что там можно, а что нельзя делать на общедоступном сервере?
Можно:
1. Можно постить и подтверждать посты каптчёй, прямо на сервер, заходя по onion-адресу.
2. Можно репортить другие, чужие посты (например вайп), с указанием причины, как здесь.
3. Можно удалять посты локально (для себя) и/или скрывать их (хэш прописывается в LocalStorage).
4. Можно генерировать PNG-контейнеры и паковать посты туда (как случайные, так и избранные).
При этом, для постинга контейнера, должна бы выдаваться только одна ссылка лишь на один из тредов из списка.
Нельзя:
1. Нельзя запускать collect PNG c тредов на других бордах, чтобы не было DDoS'a.
2. Нельзя изменять треды в настройках, а лучше даже не видеть их, а получать одну ссылку, когда сгенерирован контейнер.
Лучше вообще не видеть настройки и не иметь доступ к ним.
3. Нельзя получать доступ к основному серверу по API и дёргать его за методы, окольным путём.
Не знаю что ещё добавить, что убрать, как бы сделать это оптимальным, код открытый и свободный, в общем гляньте сами.
В идеале, хотелось бы перепилить всё это на p2p-борду без мочерации, так как FreeNet не могу запустить на Windows XP.
Предлагаю шарпистам помочь допилить в НАНОБОРДЕ: https://github.com/username1565/nanoboard
сервер для хостинга наноборды в TOR'e.
Как я себе это вижу?
Отдельный сервер поднимается, и при помощи редактирования файла torrc,
пробрасывается на порт 80 onion-домена, сгенерированного програмой Garlic:
https://github.com/Artifact0/Garlic
После этого, наноборда доступна через TorBrowser.
Здесь: http://nboardn46ay6ycdi.onion/
вы можете видеть поднятую в TOR'e наноборду карасика: https://github.com/karasiq/nanoboard
но это не то.
Что там можно, а что нельзя делать на общедоступном сервере?
Можно:
1. Можно постить и подтверждать посты каптчёй, прямо на сервер, заходя по onion-адресу.
2. Можно репортить другие, чужие посты (например вайп), с указанием причины, как здесь.
3. Можно удалять посты локально (для себя) и/или скрывать их (хэш прописывается в LocalStorage).
4. Можно генерировать PNG-контейнеры и паковать посты туда (как случайные, так и избранные).
При этом, для постинга контейнера, должна бы выдаваться только одна ссылка лишь на один из тредов из списка.
Нельзя:
1. Нельзя запускать collect PNG c тредов на других бордах, чтобы не было DDoS'a.
2. Нельзя изменять треды в настройках, а лучше даже не видеть их, а получать одну ссылку, когда сгенерирован контейнер.
Лучше вообще не видеть настройки и не иметь доступ к ним.
3. Нельзя получать доступ к основному серверу по API и дёргать его за методы, окольным путём.
Не знаю что ещё добавить, что убрать, как бы сделать это оптимальным, код открытый и свободный, в общем гляньте сами.
В идеале, хотелось бы перепилить всё это на p2p-борду без мочерации, так как FreeNet не могу запустить на Windows XP.
Жирнота какая.
1. Наноборд карасика - Scala
2. Где сорсы Garlic? Зачем тут кому то запакованная в exe сборка?
3.
>но это не то.
Почему не то? Уже запилили твою идею, ты хочешь переписать под .NET? Возвращаемся к пункту 2.
4. p2p freenet - ага, уже запилил свою борду с блекджеком и запрещенным проном
5.
>код открытый и свободный
Это толстота уровня /pr/? I didn't get...
> но выдает Exeption
UnauthorizedAccessException? Или StackOverflowException? Или YouAreAnIdiotException?
>1. Наноборд карасика - Scala
Я знаю, но выше ссылка на наноборду, на C#.
>2. Где сорсы Garlic? Зачем тут кому то запакованная в exe сборка?
Где-то тут: https://garlic7ravilyupx.onion.ly
>3. >но это не то.
>Почему не то?
Потому что по onion-ссылке там я поднял наноборду карасика, а она на Scala.
>Уже запилили твою идею, ты хочешь переписать под .NET?
Где запилили? Да, хочу.
> Возвращаемся к пункту 2.
Сорцы Garlic я уже дал. Если ты имел в виду пункт 1, то я не знаю Scala, я работаю над бордой на C#.
>4. p2p freenet - ага, уже запилил свою борду с блекджеком и запрещенным проном
А что тебя смущает? Freenet не стаёт у меня, точнее запускается, но не коннектится.
Можно просто вакабу поднять в onion, как тут: http://nichank62kpkrxvg.onion/
>код открытый и свободный
>Это толстота уровня /pr/? I didn't get...
Это значит, что код открытый и свободный, в отличие от копирастических хуйней патентованных.
>>83967
Не нравится идея - просто скрой и нахуй иди.
Или будешь репортить, чтоб удалили скорее, да, подсос мочерской?
Мочерация - явление дегенеративное, так как препятствует протеканию конструктивных дискуссий научных,
ИМХО, это явление должно быть исключено в принципе,
так как цензура и мочерация нарушает основополагающие права человека,
в частности статью 19 "Всеобщей декларации ООН о правах человека":
https://www.un.org/ru/documents/decl_conv/declarations/declhr.shtml
>Статья 19
>Каждый человек имеет право на свободу убеждений и на свободное выражение их;
>это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать,
>получать и распространять информацию и идеи любыми средствами
>и независимо от государственных границ.
Именно поэтому, мудрый анон валит в дарквебы и пилит решения, гарантирующие СВОБОДНОЕ ОБЩЕНИЕ,
вместо того, чтобы сидеть в ссанине с ублюдочной и невменяемой мочерацией.
>1. Наноборд карасика - Scala
Я знаю, но выше ссылка на наноборду, на C#.
>2. Где сорсы Garlic? Зачем тут кому то запакованная в exe сборка?
Где-то тут: https://garlic7ravilyupx.onion.ly
>3. >но это не то.
>Почему не то?
Потому что по onion-ссылке там я поднял наноборду карасика, а она на Scala.
>Уже запилили твою идею, ты хочешь переписать под .NET?
Где запилили? Да, хочу.
> Возвращаемся к пункту 2.
Сорцы Garlic я уже дал. Если ты имел в виду пункт 1, то я не знаю Scala, я работаю над бордой на C#.
>4. p2p freenet - ага, уже запилил свою борду с блекджеком и запрещенным проном
А что тебя смущает? Freenet не стаёт у меня, точнее запускается, но не коннектится.
Можно просто вакабу поднять в onion, как тут: http://nichank62kpkrxvg.onion/
>код открытый и свободный
>Это толстота уровня /pr/? I didn't get...
Это значит, что код открытый и свободный, в отличие от копирастических хуйней патентованных.
>>83967
Не нравится идея - просто скрой и нахуй иди.
Или будешь репортить, чтоб удалили скорее, да, подсос мочерской?
Мочерация - явление дегенеративное, так как препятствует протеканию конструктивных дискуссий научных,
ИМХО, это явление должно быть исключено в принципе,
так как цензура и мочерация нарушает основополагающие права человека,
в частности статью 19 "Всеобщей декларации ООН о правах человека":
https://www.un.org/ru/documents/decl_conv/declarations/declhr.shtml
>Статья 19
>Каждый человек имеет право на свободу убеждений и на свободное выражение их;
>это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать,
>получать и распространять информацию и идеи любыми средствами
>и независимо от государственных границ.
Именно поэтому, мудрый анон валит в дарквебы и пилит решения, гарантирующие СВОБОДНОЕ ОБЩЕНИЕ,
вместо того, чтобы сидеть в ссанине с ублюдочной и невменяемой мочерацией.
>4. p2p freenet - ага, уже запилил свою борду
Да, и ещё, в том же ZeroNet'e можно имиджборду поднять.
>2. Где сорсы Garlic? Зачем тут кому то запакованная в exe сборка?
>Где-то тут: https://garlic7ravilyupx.onion.ly
Там хоть и есть сорцы, но там только x64 версия
>not a valid Win32 application
а по ссылке здесь:
>>83806
x86 exe-шник запускается нормально. Только сорца не нашёл.
1. В геттерах и сеттерах можно прописывать дополнительную логику.
2. Нормальные программисты создают отдельный класс-валидатор. Говнокодеры прописывают валидацию в геттерах/сеттерах или в конструкторе.
Как запустить одновременно два разных HTTPServer'a два привязанных к ним TCPServer'a на разных портах, и начать их прослушку?
Дело в том, что при запуске сервера создаётся новый экземпляр HTTPServer'a,
внутри метода создаётся новый экземляр TCPServer'a, и прослушка происходит в цикле только для одного сервера,
а для второго не происходит, пока цикл не закончится, то есть пока первый сервер не вырубится.
>Предлагаю шарпистам помочь допилить в НАНОБОРДЕ: https://github.com/username1565/nanoboard
>сервер для хостинга наноборды в TOR'e.
Блядь, там столько notif'ов пиздует. Тебя задудосят нахуй запросами, даже через TOR.
Ты Long Polling ещё не запилил?
В общем, я защитил все дела, преподу понравилось, но в процессе защиты произошел маленький обосрамс: Сервер я делал полностью на async, так вот, там был отдельный HttpListener, который нужен был чтобы небольшой интерфейс в браузере отобразить. Ну вот в чем и проблема, когда я запустил перед преподом программку которая эмулировала кучу обращений на регистрацию, регистрация-то шла, но из-за большого числа клиентов(я сразу ебанул 100к обращений единовременно, куча посыпались из-за того что портов не хватило либо истекало время ожидания ответа, из тех кого успел принять за 10 секунд только 1к зарегистрировались) мой запрос из браузера пару раз получал таймаут и только когда я закрыл эмуляцию и все кто успели зарегистрировались удалось отрисовать табличку зарегистрированных.
Собственно в чем вопрос: Как этого избежать-то? Типа как я понимаю, это что-то с потоками связанное, но не совсем понимаю как оно должно работать. Если бы я в классе WebInterface, запихнул Thread и потом после старта приложения, в этот Thread запихнул бы прием и асинхронную обработку HTTP запросов, это было бы нормально и тогда бы не было того обосрамса? Или таки был-бы? Может кому-то не сложно на пальцах объяснить?
>Количество портов ограничено с учётом 16-битной адресации (2^16=65536, начало — «0»).
>Все порты разделены на три диапазона — общеизвестные (или системные, 0—1023),
>зарегистрированные (или пользовательские, 1024—49151)
>и динамические (или частные, 49152—65535).
Ты же ебанул 100к регистраций сразу на одной машине, и ещё удивляешься тому что куча запросов пошла на разных портах?
Ты просто заDDoSил машину с клиентами.
>либо истекало время ожидания ответа
Гугли Long Pooling. Там что-то вроде стека формируется на сервере, и запросы стают в очередь, и повисают, пока сервер не ответит.
Я без задней мысли после месяца триала сразу пересел на лицензионный Rider. Зависимость есть.
Денег нет но я держусь
Как избавиться от всех IFs и получить тот же результат в коде ниже? (switch/case НЕ вариант)
if(s == "car")
{
Writeln("some logic here");
} else if(s == "truck")
{
Writeln("something else here");
} else if(s == "train")
{
Writeln("of course I need more than just Writeln");
}
Меня мысль уводит в сторону dynamic assembly в .net core, но это явно не то, что они имели в виду. Туплю.
where( s == "car").firstOrDefault(); ?
Просто в HTML укажи переадресацию через 3600 секунд, тебе не нужна ежесекундная проверка.
дело в том что по идеи пользователь может закрыть вкладку и открыть позже, или вообще на другом устройстве
кроме того в любом случае я должен посчитать за сколько пользователь справиться, тоесть акакой-то таймер/секундомер нужен
Тогда у твоего теста должен быть уникальный номер сессии, который ты передаешь клиенту при начале теста? Тогда тебе на серверной части надо хранить структуру из
Test
{
TestID: GUID;
TestStartDate: DateTime;
TestExpires: DateTime;
}
при загрузке страницы теста находи в массиве тестов или в базе данных этот тест, и устанавливай редирект через число секунд, которое осталось до TestExpires. Если хочешь проверку по интервалу - тебе нужен ScriptManager и Ajax UpdatePanel, с обновлением по таймеру.
хорошая идея спасибо!
Но это не база данных. Представь себе 3 функции, запускаемые в зависимости от выбранного значения в dropdown list. Их не устраивает if, нужен другой метод. Видимо, намёк на паттерн, вроде strategy pattern, или ещё какую-то хуйню с созданием объекта.
Это вопрос собеседования, к слову, а не практическая задача.
dropdown list это лист, по отношении к нему можно юзать where результат тот же? тот же! ифы используются? нет, условия полностью выполнены? да! а если они иммели ввиду что нибуть другое то это уже их косяк, ты получил задачу и ее выполнил согласно условиям
аа постой, where используется только при присвоении, так что не подходит
Там всего три вопроса, и можно отослать ответ хоть завтра, хоть послезавтра. Но это и правильно, в конце концов так погромист может показать, на что он способен. На два вопроса я ответил, но здесь я тупо не понимаю что от меня хотят.
>>84897
Вот, что получилось.
var transportTypes = new Dictionary<string, Action> {{"car", () => Console.WriteLine("some logic here")}, {"truck", () => Console.WriteLine("something else here")}, {"train", () => Console.WriteLine("of course I need more than just Writeln")}};
var x = transportTypes as Action;
x();
Думаю, это сработает, спасибо!
Ты пытаешься неявно присвоить наллабл значение не наллабл переменной. либо объяви end_time как DateTime?, либо присваивай какое-то значение по умолчанию, если game.end_date == null.
>var x = transportTypes as Action;
>Думаю, это сработает
Нет, не сработает. Как ты вообще додумался идти на собес с нулевыми знаниями?
> Ты же ебанул 100к регистраций сразу на одной машине, и ещё удивляешься тому что куча запросов пошла на разных портах?
Про число портов я знаю.
Я просто надеялся что оно быстро работать будет же. Думал хотя бы 10к успеет принять-обработать-зарегистрировать и послать ответ. Дома больше соединений успевал обработать. Вот.
> Гугли Long Pooling
Погуглил. Спасибо. Хотя я сам что-то подобное придумывал но потом отказался от идеи т.к. думал что и так должно работать нормально будет.
>даже компилятор показывает, что долбоеб делает ненужную хуйню
>долбоеб не понимает и всё равно делает
>называет кого-то тупым
Проиграл. Объясни, нам тупым, зачем Action приводить к Action?
Ты не умеешь пользоваться макабой. А зачем ты Action приводишь к Action, умный ты наш?
Ты сейчас порвёшься.
Блядь, оказывается индексатор в словарях умеет создавать новый элемент? Лол. Я думал тут как с массивом, типа если попробуешь обратиться по ключу, которого нет, выкинет эксепшни. Пиздец, 3й год работаю дотнетчиком и каждый раз пользовался Add(key, value).
> Я слишком тупой и не понимаю.
> Потому что ты кастишь к дикшинари к экшону. У тебя там всегда налл будет.
Сравни твой изначальный код и то что ты потом написал и заскринил, тупиздень
Так нахуй с нулевыми знаниями куда-то идти? Нравится в штаны срать прилюдно?
Кстати, обязательно сломают твой код, передав несуществующий ключ. Кстати, пошел нахуй.
Юбилейный 1024-ый пост в сисярп треде можно было и как-то оригинальнее, чтоле, написать.
Следующий/предыдущий/первый выделяет, последний нет.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
const int Iter = 2000;
Console.Write("Введите начальное значение аргумента: ");
double Xn = double.Parse(Console.ReadLine());
Console.Write("Введите конечное значение аргумента: ");
double Xk = double.Parse(Console.ReadLine());
Console.Write("Введите шаг dx: ");
double dx = double.Parse(Console.ReadLine());
Console.Write("Введите точность: ");
double eps = double.Parse(Console.ReadLine());
double ch, Pr, yn, y;
Console.WriteLine("| X\t| Y\t| Pr\t| Кол-во\t|");
Console.WriteLine("+---------------+---------------+---------------+---------------+");
int b;
for (double x = Xn; x <= Xk; x += dx)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
const int Iter = 2000;
Console.Write("Введите начальное значение аргумента: ");
double Xn = double.Parse(Console.ReadLine());
Console.Write("Введите конечное значение аргумента: ");
double Xk = double.Parse(Console.ReadLine());
Console.Write("Введите шаг dx: ");
double dx = double.Parse(Console.ReadLine());
Console.Write("Введите точность: ");
double eps = double.Parse(Console.ReadLine());
double ch, Pr, yn, y;
Console.WriteLine("| X\t| Y\t| Pr\t| Кол-во\t|");
Console.WriteLine("+---------------+---------------+---------------+---------------+");
int b;
for (double x = Xn; x <= Xk; x += dx)
На верхней, в шаге от богов.
пхп пидоры проходят мимо, вопрос не вам
сук не то окно, делейт нахуй
Ну если прочитаешь полностью, то можешь на мидла сразу резюме кидать. На джуна хватило б четырех глав и двух видео на ютубе.
Не сидится в джава-треде?
Это все знают.
>Антоны
на месте
>Я установил Монодевелоп на Линукс
а я JVM в стиралку
>Какую книгу взять
Таненбаума, Кнута
>Можно Троелсена?
Что за ноунейм?
>Кто пишет на линуксе?
люди
>а я JVM в стиралку
Ты считаешь, что писать в Линукс на Шарпе это порнография?
>Таненбаума, Кнута
Знаю про них. Танненбаум в смысле ОС, Архитектуры или Сетей?
>Кто пишет на линуксе?
>люди
что ты хотел этим сказать?
codeabbey.com
БАМП
чё
Зачем тебе LINQ? Мертвая технология. Все нормальные люди в цикле перебирают, и ты так делай.
Есть Dictionary с комментами для картинок:
>var comments = new Dictionary<string, List<strings>>(); //hash картинки, список с комментами.
Задача, отсортировать его по количеству комментов в списках.
КАК?
Спасибо, работает. С типами разобрался уже, и привёл результат c с типа OrderedEnumerable - снова к Dictionary.
А то там разные типы. Вот тут - наглядно: https://rextester.com/YDIGVV28057
ПЕРЕКАТ БУДЕТ?
>>86005
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030
ПЕРЕКАТ: >>1586030
>>86005
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: https://2ch.hk/pr/res/1586030.html (М)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030 (OP)
ПЕРЕКАТ: >>1586030
ПЕРЕКАТ: >>1586030
Это копия, сохраненная 29 февраля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.