Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
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 - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
9. Что почитать? - The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода. - C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином - C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой - C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха. - C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал - C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. - Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили. - CLR via C# (Jeffrey Richter) - это классика, это знать надо.
11. Хочу еще хардкорней - C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. - Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. - .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF Из более-менее актуального можно выделить пару книг: - Pro WPF 4.5 in C# (Matthew MacDonald) - Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET - Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson) - Pro ASP.NET MVC 5 Platform (Adam Freeman) - Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому - Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции - Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная - Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать? На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду? - SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper - Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick - Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун - Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках - Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы - Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST - Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
Короче, это снова я. В общем, я вчера(а может быть не вчера) жаловался на производительность своего супер-сервера и записей в БД, но сегодня лень было студию включать, я решил в VSCode чутка поправить, ну соответственно и запускал его во время проверок, не сломал ли я чего, без отладчика. Так вот, скорость возросла в разы, а эксепшены с тем что истекло время ожидания запроса к БД за час ее насилования ни разу не возникли(с дебагером через 5 минут начинались и все руинили, если ебануть безостановочную запись-апдейт) и вообще, еще и ни разу не тормознуло. Почему так? Почему с отладчиком и ошибки странные из EF, и тормоза, и внезапно начинаются скачки потребления ресурсов, а на голую - летает и нигде не падает?
Перенесу сюда свой вопрос. Кто что думает насчет книги Герберта Шилдта "C# 4.0: полное руководство"? Насколько актуальна и полна книга? Не увидел её в списке литературы для изучения, хотя мои университетские преподы усиленно советовали её, пока учился.
>>1555789 Блядь, там отличий-то почти нихуя нет, при этом обратная совместимость во все поля. Это же не блядский С++, где между первыми версиями и последними отличий столько что мать ебал, тут же все попроще в плане изменений.
упец, шарпашы. Зырьте какое тестовое дали на джунскую должность
Программа будет использоваться для поиска файлов на диске
Пользователь следующие критерии и они должны быть сохранены при перезапуске программы:
1. Стартовая директория (с которой начинается поиск)
2. Шаблон имени файла
3. Набор символов, которые могут содержаться в файле
Затем пользователь нажимает кнопку Поиск и программа начинает отображать следующую информацию в режиме реального времени:
Все найденные по критериям файлы в виде дерева (как в левой части проводника). Дерево не должно подвисать, моргать тормозить и т.д. Во время поиска пользователь может ходить по дереву, открывать/закрывать узлы. Какой файл обрабатывается в данный момент Количество обработанных файлов Прошедшее от начала запуска поиска время
Пользователь должен иметь возможность остановить поиск в любой момент и затем либо продолжить его либо начать новый поиск.
>>1555948 >Дерево не должно моргать В WinForms делаешь DoubleBuffered = true, а в WPF двойная буферизация по дефолту используется, нужно всего лишь оптимальный ивент/луп для перерисовки написать. А к чистому WinAPI ручками бы пришлось прикручивать, да.
>>1555984 Не ивент луп, а ивент или луп, специально же слэш поставил. Я не знаю, какая у него/тебя архитектура программы, и как организована перерисовка - по какому-то условному ивенту (например, нахождение ещё не отрисованного каталога высокого уровня) или в лупе (каждые n миллисекунд). Имелось ввиду, что требуется только оптимальное написание вот этой части кода, а каких-либо телодвижений для прикручивания двойной буферизации в WPF совершать не нужно.
Шарпач, я к вам с неткодом. На одном компьютере у меня работает тестовое приложение, и даже на двух компах в локалке удалось запустить, а вот одолеть NAT не получилось. Вернее, проблема даже не в нате, у меня просто пакеты не проходят через роутер. Пробросил порты, но это не помогло. В приложении я пробовал сокеты, потом перекатился на UdpClient и TcpClient - оба они не могут из одной сетки в другую перейти. Что может быть не так?
>>1556217 А в формочках этих ебаных никакого замла нету что ли? Как дизайнить формочку, просто контролы тягать мышкой штоле? Где гриды, где все? Что за хуйня?
>>1556224 Я как-то давно их ковырял, потом перешел на впф, год уже примерно. И сейчас вот эта залупа с тестовым заданием. Причем на собес то я в любом случае не пойду, лол.
>>1556250 Я это не пишу, я пытаюсь разобраться в этой параше. У нас стоит купленная софтина, и местами работает не так, как нужно, поэтому приходится править. Я вообще не очень понимаю, зачем так извращаться, если сама софтина написана на джаве. Зачем этот птичий язык было изобретать, может кто-то объяснить ньюфагу?
Мне надо как-то поработать с ORM, у меня есть проект WEB API c MVC, нашёл фреймвор для работы - linq2db, а куда писать код вообще не понял. В моделс создать класс из дб, а в хом контроллере реализовать запросы ? https://github.com/linq2db/linq2db
Работа в КАШЕМИР И ШЕЛК – это неравнодушное отношение к своему делу, сочетание профессионализма с поиском нестандартных решений, движение вперед - несмотря на преграды, и быстрое реагирование на вызовы рынка. Вместе с нашими клиентами коллектив компании образует настоящий клуб единомышленников, частью которого можете стать и Вы. Наш слоган: СЧАСТЬЕ БЫТЬ ВМЕСТЕ.
Напишите правильный, современный стек для .Net Core 3. Нужен ли asp MVC, что такое Razor (это часть MVC? или Отдельно). Что брать для базы данных. Чего нет для веб разработки в net core?
>>1556289 ниже есть Get started. https://linq2db.github.io/ - сходу нашел. Хуй знает, как вы осваиваете язык, если вы даже нагуглить банальных вещей не можете
>>1556463 Чел, ты... Блять, иди в пизду умник ебучий, я в курсе что там написано, поэтому и спросил куда код писать. Покажи мне, где тут написано об этом?
>>1556479 Ты жопой читаешь, уёбок? > у меня есть проект WEB API c MVC, нашёл фреймвор для работы - linq2db, а куда писать код вообще не понял. В моделс создать класс из дб, а в хом контроллере реализовать запросы ?
>>1556446 >молодых оберегаю Лол, я думаю я даже старше тебя.
Поел в свое время говна джавы, скажу с уверенностью - дотнет годная альтернатива для тяжелых многолетних проектов (как минимум выглядит так). Тем более сам си-шарп в разы удобнее как инструмент. А с 5 версии у них вообще все кроссплатформенно будет. Ну я молчу про годные фреймворки поддерживаемые официально. Это крайне удобно и круто. И главное МС в это может реально, в сравнении со всякими эплами и гуглами, которые высерают недо-языки.
Хз что тебе от шарпа бомбит, высри нам свою историю боли, мы послушаем. в замен могу высрать про жабу и пузырь раздутый вокруг сие говна
Ну так себе альтернатива, есличестно, в случае многотабличных интырпрайзных крудов та же херня со вкусом говна, только еще и с испорченным телефоном-балластом в виде команды фронтэнд-макак и девопса, с которыми вместо пяти секунд хуяк-хуяк на JSF+PF нужно совместно фичу делать.
>>1556482 >А с 5 версии у них вообще все кроссплатформенно будет Шел 2к19, в решетках 8 версия, а у тебя все 5. Если ты про кроссплатформенность, то это Core. Энивей, все что ты высрал - твое субъективное мнение, которое != требованиям рынка. Открывай HH, language rate и чекай. ASP.NET 3.0+ я думаю в скором будет поддерживать какой ни будь новомодный язык с динамической типизацией без промежуточной перекомпиляции. Нужно же идти в ногу со временем. intelisense заменяет ошибки компилятора, не то что, как раньше. >>1556480 >а в хом контроллере реализовать запросы >реализовать запросы >в хом контроллере у тебя мать жива? Если все еще да, то после таких вопросов у меня для тебя плохие новости. Твой вопрос был, захуярить ли интерфейс с БД в контроллер или создать отдельный класс? С кем я диалог веду, с табуреткой? Для таких как ты, уебищь тупорылых, сыновей хуйни, делают GetStarted, где ПОШАГОВО расписывают, как применять интерфейс взаимодействия фреймворка к твоей свестелке-перделке. Уровень программирования 2ch/pr, лучше удали нахуй
>>1556747 Воу воу, вот это открытие, открывайте скорее шампанское. Ты думаешь индусятине с корпорации зла нужно было 17 лет, чтобы накатить .NET на Linux? Скорее всего просто WS сливают и IIS вместе с ним
>>1556763 >Тем более сам си-шарп в разы удобнее как инструмент. А с 5 версии у них вообще все кроссплатформенно будет. смотря в каком контексте читать. Я забываю, что двачеры мыслят сумбурно и не только временами не умеют читать, но и перескакивают с мысли на мысль.
Привет парни, поясните неопытному пожалуйста, пишется ли на шарпике ну или что там из технологий .net/Asp.net ??? что-то подобное крудов на джанго? Или веб на шарпе это всегда большие ентерпрайз штуки и микросервисы???
>>1556764 Ну все, пошло обострение, заговоры и прочее.
>корпорации зла Где ты обратное видел вообще? Пора уже вырасти наконец. Любая корпорация творит только ради своей выгоды и симулирует добро, пока пытается где-то рынок откусить. До сих пор вижу шизиков с раздвоенным восприятием, где гугл то у них корпация добра то зла.
Сейчас мелкомягкие решились расширить свое участие на рынке, от чего вкуснятина посыпется на разработчика. Что как бы и не плохо.
Я разобрался как устроить как сделать JWT аутенфикацию-авторизацию в API шном ASP NET приложении, работал с ним вручную через постмана. А как я могу прикрутить её к обычному ASP NET сайту, если в роли клиента у нас выступает браузер. Надо его как то заставить сохранить у себя токен и цеплять к каждому запросу к сайту или что?
>>1556742 мне похуй че там думает какой-то анонизмус с двачей если завтра все эти шарпы-джавы закроются и востребованными станут быдлокодеры на фортране, то я и туда вкачусь лишь бы деньги платили а то мне нужно на что-то путешествовать, игори для плойки покупать и шлюх ебать
Поясните. Вот есть сервак, он принимает сообщения от устройств, что-то пишет в базу что пришло. Нужно сделать SPA чтобы с пришедшими данными что-то делать. Как будет правильнее, добавить уже к этому серваку всякую веб-фигню, либо же запилить отдельным проектом, на базе ASP.Net и просто обращаться к этой же БД, ну и остальные штуки крудовские запилить там?
>>1556788 >ради своей выгоды и симулирует добро Как молод ты и глуп и не видал больших залуп. Как давно ты знаком с продуктами той самой корпорациии? Ты блять историю Windows 95 почитай, про судебные дела, про EE 1.0, про скандал с Xerox >решились расширить сынок, хоть бы не пердел из под парты такую дичь. Мелкомягкие - это монополист условный в IT секторе. Она захотят туда, куда захотят, если это будет приносить профитаныч. Такие наивные блять, как дети >>1556813 >мне похуй че там думает какой-то анонизмус с двачей И тем не менее ты ему отвечаешь >если завтра все эти шарпы-джавы закроются гей-шлюхи предпологаю востребованы, вкатывайся туда >шлюх ебать С этого вообще проиграл. Видимо решетки только инфантилы и студентота задрачивает. Жаль вас.
>>1557190 Тебе то что с этого, ты был директором ксерокса? Я в курсе EEE, но я так же в курсе оракла и какую подлянку гугл делал. И что мне теперь, как дурачок "воевать" с ними, нести святой флаг красноглазых? Просто почитай как делали не айти компании и приятно удивишься, что это такая вот обыденность в мире большого бизнеса.
Этот маня-мирок был прикольным в девяностых и нулевых, когда ты был студентотой, юным и глупым, была идеология противостояния, прям чуть ли не как в звездных войнах (вот тебе империя зла, вот тебе сопротивление). Но сейчас, когда ты большой и взрослый лоб, это кажется идиотизмом (и так оно и есть, потому что мир работает чуточку по другим правилам).
Привет, Мир C# - тред. Прошу анона помочь с такими вопросами: Нужно объяснение на пальцах таких моментов: 1. в чем разница между делегатом и событием в плане использования? Насколько я вижу сейчас - событие всегда можно заменить вызовом делегата, если не так - буду рад увидеть кусок кода с опровержением и пояснениями. Т.е. я как бы понимаю, что делегат - это ссылка на функцию, и клиент может вызывать там что угодно с подходящей сигнатрурой, а события - механизм вызова делегатов, и добавление/удаление событий осуществляется через lock (по умолчанию), но мы можем кастомизировать "геттер" и "сеттер" события через add/remove. В этом вся разница? Как отвечать когла спросят?
2. Dependency Injection Я понимаю принцип, но в до конца в голове никак не уложится. Суть в том, что клиент перестает зависеть от конкретного класса и начинает зависеть от интерфейса/абстрактного класса, что позволяет нам переиспользовать клиент, например, для тестрования, подсовывая ему любую хуйню, лишь бы реализовывала интерфейс? Правильно я понимаю? Был бы рад куску кода с пояснениями. 3.Dependency Inversion - в чем разница с Dependency Injection? В чем проявляется именно inversion
P.S. Также приветсвуются ссылки на related - статьи/гитхабы etc. Заранее благодарен.
>>1557341 > в чем разница между делегатом и событием в плане использования? В плане использования событие может быть вызвано только из класса, содержащего его. >всегда можно заменить вызовом делегата В принципе можно. Просто тебе дали уже готовую реализацию паттерна паблишер/сабскрайбер. >клиент может вызывать там что угодно с подходящей сигнатрурой, Чет коряво. Есть делегат - ссылка на метод, она может ссылаться на метод с подходящей сигнатурой (учитывая ковариантность/контрвариантность). Делегат можно вызвать и будет вызван метод (или группа методов в случае мультикастделегата). >а события - механизм вызова делегатов Механизм вызова делегата, это скорее Invoke, а событие в шарпе, повторюсь, это реализация паблишер/сабскрайбер (основана на делегатах плюс еще чуть-чуть).>>1557341 >добавление/удаление событий осуществляется через lock (по умолчанию), но мы можем кастомизировать "геттер" и "сеттер" события через add/remove. Да Только не через lock, а Interlocked.CompareExchange. >>1557341 >2. Dependency Injection >3. Dependency Inversion Довольно скользкая тема, injection можно считать вариантом реализации inversion. Лучше почитай Боба Мартина «Принципы, паттерны и методики гибкой разработки на языке C#». Там весь солид неплохо разобран, с кодом схемами и прочим. Еще есть классный блог Сергея Теплякова http://sergeyteplyakov.blogspot.com/2014/11/di-vs-dip-vs-ioc.html
>>1557301 посвещать себя мелкомягким технологиям, как показала практика - вырванные годы. У них 2 альтернативы развития и обе агресивные: 1. Создали уникальный продукт - давим по всем фронтам; 2. Не создали уникальный продукт, а создали фейк ему и пытаемся вывести его вперед за счет приятных "плюшек", "сахарка", монотехнологичности Решеточки то все знают, откуда взялись. Насчет войны - это все бул щит в 2к19, когда все в опенсоурсе, даже мелкомягкие начали .NET core на гит выкладывать следовать мировым тенденциям, спустя лет так N-цать, ага И все, что делается у них - это путь стратегии №1 или №2. Выпустили WebAssembly - Мелкомягкие - "Подержите мой Dhal, да у нас же Blazor" Javascript всея, везде - Мелкомягкие - "Да у нас же TypeScript, ребята" Мертвые технологии от мертвых душой продаванов.
>>1557341 >в чем разница между делегатом и событием в плане использования? В том, что event это модификатор, который создает проперти для делегата. То есть это как автоматические проперти с { get; set; } Компилятор генерирует приватное поле с делегатом и 2 метода для добавления и удаления обработчика. Это нужно для инкапсуляции. Если просто сделать публичный делегат, то его может заменить, например, кто угодно. И все подписки проебутся.
>>1557737 >Как быстро вкатиться с крестов в шарп? Также как с ассемблера в кресты. Также как с питона в шарп. Т. е. если с крестами сложностей не было и ты их действительно знаешь, то шарп должен показаться лёгким. >Открыл проект, а там main внутри класса, который внутри пространства имён, я охуел просто А выше идёт еще AppDomain который внутри процесса.
Сап, я только вкатываюсь в C# - объясните пожалуйста простым языком для чего нужны эти строчки: namespace, class и самое непонятное static void Main(string[] args) (пикрил). Не трольте, я просто глупенький новичок (я гуглил, но там слишком заумно). Из верстки хочу вкатиться в шарпы, очень интересным этот язык показался. Всем печенья и хорроров на Юнити.
>>1557743 Да, оно. Pro за счёт того что там рассматривается IL (то во что компилируются языки .Net платформы) и другие подробности, но при этом не детально. В остальном вполне для новичков подходит.
>>1557750 Сиди в своей верстке и жс, зачем тебе тяжеловесный бэкенд-язык энтерпрайза. Аргументы командной строки это аргс, неймспейсы нужны для разрешения конфликтов именования, класс это свалка переменных и функций
>>1557750 >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 Или в свойствах ярлык. В коде ты можешь перебрать этот массив и в зависимости от ключей, выполнить какой-либо код или поставить какие-нибудь флаги.
>>1557341 > чем разница между делегатом и событием в плане использования? Событие удобнее использовать, при этом оно имеет ясный юзеркейс, делегаты же это как бы более общая фигня и использовать их можно по всякому. По сути, событие - сахарок, чтобы тебе в юзеркейсе было удобнее реализовывать штуки. > Dependency Inversion > В чем проявляется именно inversion В том что у тебя класса высокого порядка не зависят от нижестоящих. Инжекшены это вариант инверсии, но ты можешь ее и иначе реализовывать.
Ребятки, узнал про такую штуку как Pipe, ту что в System.IO.Pipelines. Вроде интересно и захотел попробовать, но в туториалах показывается пример, где Socket в методе ReceiveAsync принимает в качестве аргумента Memory, но ведь ни в одной из перегрузок он не принимает Memory. Что за фигня? Или в .net Core несколько сокетов? Где искать тот что нужен, чтобы пайпу опробовать?
>>1557911 Так а где тот взять? Я вот загуглил, таки есть расширение где сокет принимает Memory, вроде как он все равно в неймспейсе System.Net.Sockets, но студия упорно мне говорит, что нет такой перегрузки. Что я делаю не так-то?
>>1557945 Хм... Сейчас в vscode попробовал и все есть, только перед этим я сокеты нугетом подтянул. Но буквально утром в универе не было, хотя там тот же неткор 3.1, правда не вскод, а студия 2019. Странно.
>>1555702 (OP) >Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
Что ж, синтаксис шарпа побогаче, чем в жабке, да. Вот только если джава проверена временем и доказала свою пригодность для энтерпрайза, то про шарп никто ничего не знает. Соответственно, будет сложнее найти ответы на вопросы и более вероятно наткнуться на недоработку платформы. Возможно, когда-нибудь шара взлетит.э, но сейчас перспективы у него ну очень туманные.
>>1558520 Это что, новая мантра жабадаунов перед новым днём разгребания легасидерьма? Жаба никому не нужна, она живёт только потому что на ней написаны тонны дерьма, которые сложно переписать на что-то хорошее, на шарп, например. Переписывается только малая часть, остальная продолжает гнить и обрастать новым говнокодом. Жаба не обновляется, обновляются только фреймворки, которые созданы для разгребания дерьма, такими же рукожопами, которое это дерьмо плодили. Над "сложнее найти ответы" можно только посмеяться, зайдя на постоянно обновляющийся https://docs.microsoft.com/, не говоря о стаковерфлоу и тонны годной литературы сконцентрированной на шарпе.
>>1558543 проигрываю с анонов, которые хватаются за решетки, как утопающий за соломинку Ты посмотри, какие вопросы задают в треде - тут одна студентота и вкатывальщики. Кроме шараг и курсов твои решетки никому не нужны
>>1558558 >одна студентота и вкатывальщики Конечно, потому что все знающие уже давно освоили docs.microsoft и stackoverflow, которые содержат исчерпывающую информацию на все виды вопросов. > хватаются за решетки, как утопающий за соломинку Ага, вакансии с зарплатой 120к+ тому подтверждение, да? Уже 8 версия вышла, а всё еще "утопающий за соломинку" лол.
>>1557706 Что именно тебя интересует? Тонна легаси разных форматов, от самоделок, до EE и выдрюченного магией спринга. Все это низкокачественные продукты многолетней индустрии "хуяк-хуяк и впродакшен". Чтобы там на конференциях тебе не продавали, джава абсолютный кобол. Ничего не развивается, всем насрать. Вечно пытаешься нятнуть одну хрень на другую, все падает или жутко жрет ресурсы (в том числе и твое время).
То что ты еще пытаешь видить в жабе альтернативу - это лишь благодаря андройщикам, которые так громко плескались в луже, что их все еще слышно (пока не пришел котлин и дарт с флаттером). Забавно то, что потонет жаба, потонет и его все прокси языки.
У меня есть в дб куча XML, надо от туда взять дату и количество денег. Как можно десериализовать ХМL, ща читаю про это на метаните, написано что надо создать слишком много вещей, только для того чтобы десериализовать, мне тут 1000 хмл надо отфильтровать, в цикл эти 2 юзинга если запихну, то комп ахуеет. Есть другой способ?
>>1558580 Чому нет? Как бы .net ни был говном, это все равно хоть какая-то платформа с заготовленными педалями Порог входа низкий, придумывать ничего не нужно Некоторым и такого гребства за 120к достаточно
>>1558588 >ни был говном До .NET 3.0 это был ад, уж поверь. >Порог входа низкий относительно чего? Тем более это не критерий успеха языка Никому на рыночке срань мелкософта не нужна
>>1558528 Так-то двачую. Вот буквально недавно на моей галере поручили переписать добро что было на джаве на шарпец, сам-то проектик небольшой, всего 25к строк кода на джаве, только вот на шарпе это вообще вышло в 7к строк, при этом производительность возросла в разы(конечно тут не совсем корректно про это писать, потому что я тупо переписывал на шарп, а просто тот же функционал реализовывал, но все же)
Я на новый рабочий комп поставил новую Visual Studio и понял как она обновилась за два года. На скринах 2017 и 2019. Стоит ли переходить на домашнем компьютере на неё же? Есть какие-то косяки совместимости, какие-то скрытые камни и так далее.
В целом MSVS использую только для одного рабочего проекта, который не запускается под IntelliJ Rider. Также хочу поиграться с Xamarin, не знаю как у него работа с Райдером, возможно придётся писать код в MSVS.
MSVS говно, им нельзя пользоваться после того как попользовался Idea хотя бы недельку. Но она, MSVS, мне всё равно нужно
>>1559358 Nы точно играл в раст? там баг на баге на каждом шагу. Вот другое дело Rimworld, этот Шедевр тоже на юнити сделан, тоже на шарпах(и на них же можно моды к нему пилить).
Блин, чё-то заебался уже. Остановился на вкате после обучения ORM , событий, обобщений. Дальше влом учиться. Дропнуть хочется. Либо я уже близок к вкату и могу найти работу, либо ещё дохуя чего учить. Если второе, то впизду, лучше во фронтенд пойду
>>1559425 жирнота - это писать про процветающие решетки еще и отдельно asp.net указывать - вообще жир >>1559465 >близок к вкату ага, близок нет >лучше во фронтенд пойду можешь начинать учить, без него на решетки все равно не берут >>1559481 двачую адеквата
>>1559548 >Я не знаю что это за ресурс и насколько достоверно он собирает статистику. >Стаковерфлоу >Я не знаю что это за ресурс Пиздец. И это хуйло что-то поясняет в треде кому-то.
>>1559843 >Жаба кодер зарабатывает больше шарписта И реально много там? Надо еще среднее значение по определенному количеству посмотреть, а не только топ "прайсы". Но да,у джависта больше ебли, он заслуживает это. Особенно легаси на джаве, самое токсичное что я видел. Эта работа не стоит никаких надбавок.
>>1559843 > Жаба кодер зарабатывает больше шарписта Это было раньше, когда шарп был приколочен к винде и M$ стеку. На данный момент уже не так. > На жабе написано много библиотек На питоне тоже много библиотек, даже больше чем на джаве, давай будем считать что питон теперь ванлав и вообще в любых задачах всех уделывает. > часть из которых тупо 1 в 1 скомуниздили на шарп Не скомуниздил, а позаимствовал удачные решения. Так-то, вообще смешно это слушать, учитывая историю джавы и M$, когда мелкомягкие вложились в развитие жабы, а та их опрокинула через жопу, вполне имеют моральное право.
>>1559884 >На данный момент уже не так. По результатам опроса 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#.
>>1559926 Спорно, что быстрее. TcpClient и TcpListener - это просто обертки над Socket, с целью упростить работу с TCP сокетами. Класс Socket поддерживает другие протоколы и более тонкую настройку работы.
>>1559939 Ну, как-бы я проверил просто: принимаю клиента, асинхронно читаю и шлю то что пришло обратно, закрываю подключение. На 10к подключений, сокетом смог больше принять-обработать-отослать, чем связкой TcpListener+TcpClient. Правда я в случае с сокетами не делал никакого стрима для чтения, а писал в Memory методом ReceiveAsync, а клиент, как я понимаю, создает стрим, и ему пришлось ReadAsync создавать за кулисами, пусть и получал я в ту же Memory. Так вот, тех кого принять не смог, соответственно не смог создать сессию, у сокета в разы меньше.
Смысл в том, что в реальных проектах, если ты хочешь использовать только Socket, тебе придётся реализовать всё то, что есть в TcpClient+TcpListener и в итоге у тебя либо получится также, либо хуже. Может и лучше получится, но тогда твой инструмент будет направлен на что-то конкретное, в нём не будет универсальности TcpClient+TcpListener.
>>1559996 Ну, такой себе потомок. Ни обратной совместимости с обоими, ни такой же простоты стрельнуть себе в ногу на ровном месте, все обернуто в безопасный код, чтобы словить утечку памяти - нужно постараться. Да даже синтаксис только на первый взгляд похож, при повтором взгляде уже заметно слишком много различий.
Котаны, не могу собрать все сообщения с мыла, что за херня? Я же индексы даже не использую. Использую это ActiveUp.Net.Mail Или посоветуйте, как лучше было бы все собрать с мыла яндекса. Так как вторым способом собирается пиздец долго.
>>1560136 > Я же индексы даже не использую. Откуда ты знаешь что там внутри библиотеки используется? Читай документацию и думай, что у тебя не так пойти могло.
https://youit.pro/map/dotnetweb#csharp нашел тут roadmap. Что скажете? Это реально столько знаний нужно для джуниора? Мне кажется я за всю жизнь и половины этого не изучу.
>>1560188 Выучи всё что со знаком трейни, а остольное учи по мере необходимости. Если ты всё подряд читать будешь, то пока до практики дойдёшь, уже все знания улетучатся, так и попадёшь в вечный цикл чтения и изучения. Без практики никакого смысла в обучении нет.
g.DrawImage(bmp, new Point((int)(resolutionOfArray - bmp.Width) / 2, (int)(resolutionOfArray - bmp.Height) / 2)); Bitmap dd = new Bitmap(150, 150,g); dd.Save("thi.bmp"); Почему сохраняется просто белое изображение? Если сохранять bmp, то все нормально
>>1560196 Чего я точно понял, это то что моих 1-2 часов в день практики и изучения(и не каждый день к тому же) точно недостаточно, нужно уделять намного больше времени.
>>1560212 есть проект, пока реализую его в консольном виде, потом хочу реализовать в виде web приложения и telegram бота, и желательно это все связать между собой.
>>1559556 >>1559843 как же проигрываю со студентов(в лучше случае джунов) рассуждающих о рынке и о том, кто там у кого сосет вы же просто дегенераты ебанные вас на реальной работе за людей считать не будут, если вы слух будете подобные вещи говорить
а если по теме - то джава и шарп это языки близнецы, с + - одинаковыми зарплатами, одинаковыи проектами и одинаковы кол-вом вакансий и оба языка еще очень долгое время будут востребованными на рынке труда
>>1560301 >а если по теме - то джава и шарп это языки близнецы, с + - одинаковыми зарплатами, одинаковыи проектами и одинаковы кол-вом вакансий Если ты так рассуждаешь, то ты вебмакака, которая не чем не лучше студента или джуна.
>>1561026 >А во что из этих двух сортов говна приятнее нырять? Ну в бекенд, наверное. Вакансий больше, конкуренция, я думаю, поменьше относительно геймдев разрабов (но это не точно)
Есть с два десятка разных форматов файлов (Format). Каждый формат читается и записывается по-разному. Логики чтения/записи довольно много, поэтому решил вынести её в отдельные классы (Reader/Writer). Внешний пользователь работает только с классом Format и его производными. Для единообразия апи классов Reader/Writer использованы интерфейсы. Вопрос: оправдано это или нет? Или лучше будет удалить интерфейсы (IReader/IWriter) и использовать паттерн шаблонный метод? Кто бы как реализовал данную задачу?
>>1561534 >А у тебя типичная стратегия Все дело в том, что пользователь не будет на лету заменять реализацию IReader/IWriter. Он даже не будет знать про их существование. Они что-то вроде внутреннего апи получаются. Пока не знаю, будут ли эти классы выходить наружу и использоваться отдельно от класса Format.
Корректно ли спроектированы классы? Или нужно что-то изменить?
я бы попробовал избавиться от производных классов Format, иметь только один формат класс и передавать ему в конструктор IReader & IWriter
далее, я бы попробовал объединить пары Reader и Writer классов в один класс, так как они наверняка будут семантически связаны и проще иметь все эти правила в одном месте
интерфейсы немного поковырять, что бы была понятна разница между парами Reader/Writer и Format
>>1561530 О, это ж Service Locator. Знавал я несколько проектов, пропитанных этой гадостью. Какая же боль поддерживать это говно. Сразу хочется перерезать горло той тваре, которая это говно добавило, особенно, если ещё додумалось сделать его статическим классом аля синглтоном.
Dependency Injection, описанная выше, нормальная (читай привычная) замена, пока конструктор не начнёт принимать огромное число зависимостей. Додумаешься до контекста и сделаешь кое-что страшнее Service Locator. Лет через 5-10 поймёшь, что не надо плодить сущности без надобности, нет универсального решения и существуют подходы, лучше DI, например Dependency Rejection.
>>1561672 FormatFactory - это нехуя не фабрика, а Service Locator, у него есть определенные свойства, которые его сразу выдают. Например, это говно вообще не поддается тестированию в месте использования, в отличии от фабрики. По ссылке одна из его вариаций реализации.
Блять, заебали меня эти ваши параллельности вонючие. Как с ними работать то нормально? Ну есть у меня функция, которая тянет за собой еще штук 5 других, ну создаю я таску, запускаю. Теперь надо остановить ее. Мне нужно передать в эту функцию канцелейшен токен и везде проверять, не изменилось ли значение? Да это же хуйня какая-то. У меня там дохуя функций и в каждой циклы, и исполняться же может в любом месте, когда я нажму на стоп. Т.е. оно может не тормознуть сразу а сделает еще какое-то действие, которое все мне нахуй испортит. Заебало блять.
>>1561743 Не могу исключать такой вероятности. Тогда объясни, если я нахожусь внутри цикла и что-то там делаю и в этот момент хочу остановить таску, что тогда произойдет? Она же сразу не выйдет из цикла, да?
>>1561585 >Вообще это больше к команде чем к стратегии. Это ты относительно IReader и IWriter?
>>1561607 >я бы попробовал избавиться от производных классов Format, иметь только один формат класс У каждого формата свои характеристики, по которым его можно идентифицировать (например, расширение файла), свои условия сохранения и проверки внутреннего содержимого. Поэтому не представляю, как избавиться от производных классов Format.
>и передавать ему в конструктор IReader & IWriter С этим пунктом всё понятно.
>далее, я бы попробовал объединить пары Reader и Writer классов в один класс, так как они наверняка будут семантически связаны и проще иметь все эти правила в одном месте Reader и Writer безусловного связаны семантически, так как действия противоположные друг другу. Класс Format как раз и объдиняет их.
>интерфейсы немного поковырять, что бы была понятна разница между парами Reader/Writer и Format С этим пунктом тоже не очень ясно.
Можешь набросать пример, как ты это видишь?
>>1561607 >О, это ж Service Locator >>1561675 >FormatFactory - это нехуя не фабрика, а Service Locator Самая обычная фабрика. Пробегает по списку форматов и находит тот, который соответствует расширению файла.
>>1560410 Задрот, я через пару лет стану твоим менеджером-начальником и буду ебашить тебя кнутом по спине и ебать за проебанные дедлайны. Ты будешь молчать как терпила, а на выходных "изливать боль" на анонимных параша вроде двача или ебаного.ит
>>1561810 Как раз наоборот - большинство нормальных менеджеров которых я встречал были бывшии разрабами, а вот "успешные успехи", никогда кода в жизни не нюхавшие или хотя бы тестировавшие - это поголовный сброд с которым работать неудобно. >>1561792 Люди бывают разные и ситуации тоже. Если сравнивать с другими сферами, то в айти охуенное начальство + у рядового гребца вполне есть возожность самому дорасти до начальника.
>>1561883 По факту, тебе нужно хорошо знать и понимать предметную область в которой будешь работать. Программист в вакууме первый год это одни расходы и берут их на вырост. Если бы бухгалтеры и прочие были чуть более обучаемы, кодеры бы были работодателям не нужны. Т.е. план следующий: Ты изучаешь основы кодинга, т.е. синтаксис, базовые алгоритмы и прочее; затем изучаешь основы ООП, опять же, базовые вещи про инкапсуляцию, наследование, полиморфизм; затем выбираешь область в которой хочешь развиваться, идешь туда обычным работником, работаешь годик, потом говоришь что умеешь кодить и хотел бы в отдел автоматизации пойти и тебя без лишних вопросов туда отправят, если ты со своей работой справляешься нормально. Я сейчас пьян, новый год же, но суть: работодателя не ебет как ты делаешь то что ты делаешь, хочешь хоть на ассемблере ебашь, важно чтобы было в срок и выполняло все требования. Всё. Не больше и не меньше. Если ты понимаешь как предметная область работает изнутри, то с вероятностью 95% тебе не нужно будет объяснять, чего бухгалтер там хочет получить, почему ты сделал хуйню, хотя работал по ТЗ и т.д. и ты сделаешь все нормально. Это то что хочет работодатель, на технологии, архитектуру и прочее он срать хотел с высокой колокольни: Есть бизнес задачи и их нужно решить, если ты знаешь как их решать, то тебе всегда будут рады в любой сфере, если ты просто умеешь писать код, то тебя придется учить -> ты должен конкурировать с кучей других таких же ебланов, которые только код писать умеют.
>>1561898 Понял, спасибо, учту. Я в муниципалочке работаю, я уже писал где-то выше, кодирую хуйню, которая тут никому не нужна. Ну, т.е. и без нее справляются, так что кодирую больше для себя. Только одну хуйню написал, без которой тут никак в силу того, что ввели обязательные онлайн-кассы и в них нужно выгружать инфу по платежам, понятно, не вручную. Зачем-то начал изучать впф, хотя, насколько я понял, сейчас востребованнее асп и всякие ентити фреймворк, вебапи и еще другие хуйни, которых я пока не знаю. Сейчас, вот, решил выдрочить сам язык как следует, а дальше, наверное, полезу в асп, благо работка есть, которая худо-бедно кормит и позволяет что-то изучать.
Сап, шарпач. Поясните, чём с точки зрения разработчика отличается просто дотнет и коре. Я к чему. Хочу вкатиться в asp, но все книги и учебники про старый дотнет.
Есть клиентская форма для заполнения полей. Условно для клиента доступно заполнение 2 необязательных полей и 1 обязательное. Как реализовать метод, через 4 метода, где 1 будет реализован через все 4 заполненных метода, а 3 остальные с комбинациями полей? Или все в один метод с If-else?
На пальцах: 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(); } }
Еще вопрос. Возможно ты >>1562586 знаешь ответ. Есть DAL уровень. В него входят CRUD методы на каждую POCO entity. Но если у меня для UI помимо обычного Create есть еще проверки на другие условия - можно ли это отнести к Business logic? К примеру - приход на склад с проверкой количества больше 0. Или проверка на уже существующее название? Что обычно на уровене DAL, exception, проверки?
>>1562670 dal тонкая обёртка/адаптер над нижележащей персистентностью, будь то sqlserver, dynamodb или завтра вообще .txt файлы реализаций dal-ов в проекте может быть несколько поэтому твои проверки лучше держать в другом месте
>>1562687 понял, спасибо. Еще вопросы, если не влень отвечать. В классах business logic нужно ли делать DI контейнеры на все сервисы, типо automapper, DAL, messageService, loggers? Я по привычке все реализовываю через интерфейсы создаю класс, под него делаю интерфейс и реализовую в классе, потом передаю не класс, а интерфейс. По сути врядли будет подмена другой реализации через интерфейс, но это хорошая практика на сколько я знаю писать на абстрактном уровне. С другой строны - подвязывать кучу зависимостей в Ninject. Что скажешь?
>>1562688 dal, messaging, всякие third party api лучше прятать за интерфейсами и делать DI, иначе например будет сложно писать тесты или экспериментировать с инфраструктурой
>>1562693 у меня всегда болит голова от архитектурных решений. Вот сейчас - только 9 сущностей с половиной функционала, а уже куча DI привязанных и функционал раскидан по сборкам. Еще вопрос, я его уже раньше задавал в треде (этом или 15 не помню). Делаю CRM на Core, где должна проходить регистрация всех действий пользователя. Соответственно в уровень выше от DAL идет реализация методов с входящим параметром ClientDTO. В каждый метод передается интерфейс IMessageService с реализацией MessageService, где есть только 1 метод, который регистрирует класс, в котором происходит изменение, дата и Client Id. Правильно ли это? Или лучше через события как то реализовать? Для наглядности - вот кусок кода:
событие создания нового supplier следует публиковать сразу после того как он сохранён в базе, остальные вызовы убрать logging следует отделить от messageService, в messageService идут только объекты событий которые издаёт supplier/каталог
на картинке [ скобкой обведен возможный баг - логгируешь дважды
> Правильно ли это? Или лучше через события как то реализовать? лучше пока так
>>1562991 >>1562991 > Инкапсулируй логику кажлого блока в отдельных методах, так повысишь читабельность вряд ли будет лучше
> suppier'а своего проверь на null перед тем как обращаться к его свойствам supplier создаётся контроллерем, я так понимаю. поэтому перепроверять на null не нужно
>>1562982 >что внутри messageService? >с реализацией MessageService, где есть только 1 метод, который регистрирует класс, в котором происходит изменение, дата и Client Id. спасибо, пофиксил >Стопиццот иф элс не такая насыщенная бизнес логика, чтобы разбивать на методы (имо). Но насчет If-else - согласен, не удобно читается, тем не менее - нужна проверка
>>1563013 все эти null-проверки это лишний мусор для глаз если каталог вызывается контроллером, то туда не будет передаваться null возможно стоит только проверить что каталог не существует (db.GetById(suppier.SupplierId) == null)
но это всё мелочи, я кажется понял что он делает с clientDto, лол трудно прикинуть как это лучше реализовать не видя остального кода
>>1563052 >если каталог вызывается контроллером, то туда не будет передаваться null Значит нужно как минимум заменить модификатор доступа public на internal. Но всё равно это не безопасно, потому что ты можешь использовать этот метод в другой части кода, там ты не сделаешь проверки на null и в итоге получишь NRE.
>>1563052 C var result - обосрался, это должен быть маппинг сущности ClientDTO в Client >эти null-проверки это лишний мусор Я уже выше спрашивал насчет проверок. Я никогда в реальных проектах не участвовал, поэтому задаюсь вопросом на каком уровне делаеть NRE проверки и Exceptions. >трудно прикинуть как это лучше реализовать не видя остального кода Я скоро выкину весь проект целиком на борду под предлогом опенсорса для всех желающих
>>1563120 Так он и не пройдёт юнит тесты, если в нём не будет проверок на null в таких местах. Anti-Corruption layer это скорее для случаев когда две взаимодействующие системы разрабатываются независимо друг от друга.
в примере выше например, db.GetById(suppier.SupplierId) должна возвращать объект типа 'Supplier?', потому что он действительно может отсутствовать by design тогда мы проверим на null и продолжаем дальше
>>1563122 > на каком уровне делаеть NRE проверки и Exceptions некоторые проверочки - часть "бизнес логики" другие - костыли на случай обосрамса программистов мешать их лучше очень осторожно
>>1563159 >пройдёт, передача null не должна даже компилироваться Вот только проблема в том, что не всё можно предвидеть на этапе компиляции, особенно если у тебя выполняются запросы к бд и другим ресурсам. >C# 8.0 Это ты так пошутил? Или ты всерьез думаешь, что кто-то будет переписывать тонны кода?
>>1563190 ничего не нужно переписывать и да, случаи отсутвия объектов можно предвидеть, nullable ref types как раз для этого во многих функциональных языках уже давно (десятилетия) есть Optional типы (и нет null вообще), option<T> в F#, Maybe в хаскеле и тд
Изменял название солюшена. В пространстве имен до изменения привязанны классы к старому названию которого уже нет. Когда добавляю функционал - добавляет новое название. Как такое фиксить?
и если у меня будет StringField sas1 = new StringField("supA"); StringField sas2 = new StringField("supB"); то я хотел бы, чтобы sas1 = sas2 не перезаписывал параметр name
>>1563256 >>1563572 >>1563577 время охуительных вопросов >4е издание рихтера для вкота Какая хуй разница, какое издание? Книга эта с 4 версии .NET дописывается парой строк. Для вкота - нет, обосрешься причем жидко >то я хотел бы Ты оператор присвоение решил оверлоадить? Ты хоть сам понял, что ты высрал? >С этой книги норм начинать знакомство? В просторах сети есть 2 авторитетных учебника для подзалупных студентов (с переводом и без). Зачем тебе какая то %NONAME% писака косплеящий Шилтда?
>>1563699 открой Рихтера, почитай первую главу и реши сам. Осилишь - флаг в руки и пиздуй куда ни будь, точно не на галеру или собес, тебе еще тонны данных нужно обработать и запомнить
>>1563699 В кратце - если всё поймёшь, то изучай сразу с Рихтера, если нет, то возьми попроще что-нибудь, типа Троелсена или Шилдта, потом Рихтера всё равно лучше изучить.
>>1563699 Рихтера форсит фанат-шизик уровня фаната метанита. Рихтер сильно углубляется, новичок просто не сможет переварить всю эту информацию и усвоит максимум 5-10%. Для новичка лучше подойдет Троелсен, которыйвдается в подробности только там где это нужно и фокусируется на базе, либо Шилдт. Потом уже можно читать Рихтера, и интересней будет, и информации больше усвоишь.
Поясните, что за мода пошла хейтить свойства? Типа кого в интернете не встречу говорят что не нужны и используйте публичные поля. Блядь, а ничего, что я в проперти можно запихнуть проверку какую-то, добавить какую-то логику, вызов событий и т.д., либо просто предоставить удобный интерфейс для получения данных, например у меня в классе время храниться в миллесекундах и каждый раз делить их чтобы получить час - заеб. Нет, блядь, какой-то питух сказал, что не нужны и мы будем за ним повторять как дауны.
Первый параметр конструктора передается через di, а как передать второй параметр? И вот как этот сервис с параметризованным конструктором зарегистрировать?
Это не работает: services.AddScoped<IService>(s => new SomeService(""));
>>1563973 Ты не правильно понял суть DI. Интерфейс передается в класс полем, который конструктром типа инициализируется классом, реализующим этот интерфейс. Будет типо такого: public class SomeService { private readonly IService;
public SomeService(IService service) { IService = service; } }
Под этот IService в конструкторе можно подложить любую его реализацию
>>1563973 я не помню как точно это делать но как минимум, ты можешь взять свой services.AddScoped<IService>(s => new SomeService("")); и зарезолвить db внутри лямбды
что то типа: var serviceProvider = services.BuildServiceProvider(); services.AddScoped<IService>(s => new SomeService(serviceProvider.GetService<AppDbContext>(), "string something"));
>>1563791 ИМХО, часть рихтера еще и НИНУЖНА. То есть нужна конечно - C# вообще бессмысленных конструкций не держит, но эта информация в первое десятилетие работы может не пригодиться, а книгу новичкам советуют...
>>1564058 Зависит от задач. Есть принцип (закон Парето), который гласит, что 20% кода выполняется 80% времени. Т.е. оптимизировать необходимо ТОЛЬКО критические для производительности места в кода, а не всё подряд. Например, нет ничего плохого в том, чтобы написать свою версию урезанного LINQ для таких мест, которая будет работать на массивах и не использовать тормозной IEnumerable, замыкания, лямбды и аллокацию памяти на любой чих. Или использовать уже готовый nuget-пакет, но обычно своё кастомное решение лучше, так как имеет узкую направленность.
С другой стороны, есть области, где это оправдано и используется повсеместно, например, гейдев: https://youtu.be/L_uwDygZe48
>>1564120 В кровавом тырпрайзе обычно используется в качестве вспомогательных утилит к какому-то куску системы. В сообществе есть неосиляторы WPF, потому не редкость встретить и WinForms или, в запущенном случае, сразу обе технологии.
Большая разница между asp.net core 2 и 3 версии? Если буду изучать 3 версию по "ASP.NET Core MVC 2 с примерами на C# для профессионалов" слишком геморно будет?
>>1564410 Потому что оптимальный язык для того чтобы распробовать все это дело. Ведь школьники почему-то дюже не любят консольку и почему-то уверены, что весь серьезный софт должен работать нажиманием кнопочек, чтобы бегал прогрессбар и вот это вот все, а на шарпе ОЧЕНЬ просто сделать оконное приложение, даже не разбираясь что там под капотом, те же винформы это очень легко делать позволяют. В большинстве других языков(не дотнетовских), чтобы то же окошко сделать приходится больше усилий приложить и это очень сильно отталкивает.
бывший школьник, который в школе именно шарпик начал учить
Есть 2 класса задач. Во всех двух классах все методы практически идентичны, заменен только консольный вывод. Для реализации замены вывода я сделал абстрактный класс и от него наследую классы с разными методами. Меня беспокоит то, что здесь слишком много идентичного кода. Каким образом можно реализовать замену только консольного вывода в методе? В голову приходит только реализация отдельных методов для вывода, может вы чего подскажете попроще? И еще, а считается ли нормальным иметь в абстрактном классе не абстрактный метод?
>>1564839 Делаешь массив ["день", "месяц"] и в зависимости от выбора, берешь из него соответствующий индекс, после чего добавляешь данные из массива в консоль.
Что скажете про эту книгу для вката? С одной стороны подача материала со всякими рофлянками меня отталкивает, с другой стороны сами авторы во введении обещают, что книга вполне себе серьезная.
Как можно нормально переписать это код? (++userNumber == randomNumber || (userNumber - 2) == randomNumber) -2 потому что при инкременте число изменяется. Как прибавить или отнять, но только для сравнения, чтобы еще одну переменную не делать?
>>1565070 Проблема в том, что, как обычно, везде у каждого свое мнение о том, что нужно прочитать ньюфагу. А ньюфагу, в свою очередь, хочется выбрать что-то, что позволит изучить язык с минимальными трудозатратами относительно других вариантов.
>The C# Player's Guide >Очень хорошая книг для начинающих. Все изложено в четкой логической последовательности и в том объеме, который необходим. >Абсолютно несогласен, книга - отстой, никому не советую для начала. В сишарп стартер паке ей делать нечего, не тратьте время зря. Классика
>>1565116 >>1565113 Я пока ничего не выбрал. И между прочим книга из вашей шапки. Собственно, если не найду что-то меньшим объемом, то буду читать Троелсена. Его книга, по крайней мере, не устаревшая + есть на русском.
>>1565174 К сожалению, годы существования сайтов не исправляют опечатки и кривость повествования. Он всё также создаёт ощущение поделки студента, который просто попытался пересказать Троелсена, при этом делал это небрежно и с изрядной долей похуизма.
>>1565181 Всё так. Но хейтить его начали недавно по тем помойкам, где я лажу. Этот сайт что 10 лет назад, что сейчас в выдаче гугла может и не появиться вовсе. professorweb очень редко проскакивал, но все же намного чаще метанита. Тот, на котором был майнер одно время.
>>1565213 как для студента, быстро найти что то и сделать по аналогии, годный, но в качестве обучающего ресурса, так себе. Слишком уж в сжатой форме материал.
>>1565321 К слову изначально в шапку я ставил просто C# картинки и шапка состояла из "C# тред", без гайдов и этого всего. Ему это тоже не нравилось, так что просто забей.
>>1565325 получается число из единицы и userNumber и сравнивается с randomNumber. Приоритет выполнения у оператора + выше чем у ==, поэтому сначала произойдёт сложение.
У меня есть интерфейс-маркер (без методов) IResult<T> и классы Success<T> и Error. Хочу реализовать этот интерфейс в обоих классах. Проблема в том что если с конструкцией "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> - тоже не вариант, мне ковариантность нахуй не нужна.
>>1565713 >интерфейс-маркер (без методов) Ужас. >Есть готовые паттерны для таких случаев? А зачем так усложнять? class Result<T> ...bool Successfull {get;} //ну или HasError Если это все крутится внутри проги используй эксепшоны, или try методы: bool TryDoSmthg(out result) А еще лучше описывай решаемую задачу, а не тот способ который ты придумал, может найдутся варианты получше.
>>1565760 > Ужас. Ну можно и абстрактный класс. > А зачем так усложнять? Ошибка - вернули один класс, всё ок - вернули другой, а дальше паттернматчингом разобрали. Нам switch на спидах завезли чтобы мы по старинке всё в один общий класс пихали а потом проверяли его поля? Я просто параллельно фшарп ковыряю и попытался заюзать тип-сумму, но видимо придется действительно по старинке с IsError
>>1565520 зп 300к + (но основные деньги от инвестирования) до жизни очень просто , заметил что вижу как надо делать с первого раза в это включая очень легкую и предполагаемую мутацию системы для бизнеса .
Если приближенно это что то вроде некоторые люди сразу читая условия задачи могут рисовать в sql правильно в нормализованной форме. (даже если задача очень сложная , много разных отношений и ты даже не знаешь в какойто момент что там дальше по задаче и как повлияет на текущий момент)
Молодым очень просто : сделать клон понятной хайлоуд системы. Вроде Ютуб, твитер.
В ASP.NET razor вообще юзают? Мне чего то кажется, что все крутиться от web api и надевается на него фронт под GET/POST requests/response. Кто в реальных проектах на MVC/Core педалил, что скажете?
>>1566046 На легаси пердолил некоторое время не так давно. С какой-нибудь либой расширений (типа Kendo), и для приложений, которым не требуется быть SPA - вообще хорошо живется. Хуяк-хуяк интерфейс за 10 минут и дальше бек пилить.
>>1565639 Мне так нравится как очередной нормис врывается в тред всякий раз когда ктонибудь постит на 100 км отдалённо напоминающее фурятину и такой "Ух какие вы все извращуги, я вот не такой, а вы такие, я вот прям смотрите какой я нитакой как вы. Видите? Я вот не люблю этих вот всех, вот почитайте моё мнение по этому поводу." Какой-то симбиоз вниманиеблядка и пониёба. Никогда этого не понимал. Мне тоже много чего не нравится в интернете, Если бы я каждый раз отвечал в такой духе я 24 на 7 сидел бы в инете без продыху.
>>1566073 я думаю есть такие проекты, которые забили болт на UI и пилят все на ASP.NET. Но мне все же интересна общая тенденция, юзают ли его или все через Web api?
>>1566208 >которые забили болт на UI и пилят все на ASP.NET Спешите видеть, у зумеров все что не спа то "забили болт на UI", лол. > Но мне все же интересна общая тенденция, юзают ли его или все через Web api? Тебе сказали уже, ты какого ответа ждешь, что мы тут с тобой вместе поцокаем языком и порассказываем какой razor говно?
>>1566428 >у зумеров манямир, все кто спрашивают в тред зумеры >все что не спа то "забили болт на UI" я у людей с интепрайза спрашивал, а не у вкатывальщиков или студентоты подзалупной >вместе поцокаем языком нет, только ты и в том месте, откуда начинается разработка View в ASP.NET >какой razor говно Я реально спрашивал, "это" вообще кто то использует? И зачем он вообще нужен, если интерфейс взаимодействия на любой технологии backend-to-frontend это Web api?
У меня походу дела назрел другой вопрос - все .NET-тчики это full-stack? Типо везде пишут в required JS+Framework (vua/react). Типо зачем нанимать фронта, если .NET-тчик все сам сделает?
>>1566504 >Интирпрайз Лол, ты же сам обоссаный вкатыш Энтерпрайз это место наибольшей концентрации легаси, а легаси на асп это почти всегда разор На твой вопрос ответил?
>>1566515 >обоссаный вкатыш >Год стажа >в трёх разных конторах да ты опастный перец хоть бы не позорился такое писать ты пишешь, что razor говно, хотя это всего лишь компилируемая оболочка класса с DOM html страницы. Жаль тебя >Энтерпрайз это место наибольшей концентрации легаси в твоем селе, где нет продуктовых и все на аутсорсе - так и есть
>>1566524 >Ты пишешь что разор говно Ты совсем тупой какой-то >Энтерпрайз где нет продуктовых Ой блядь, ты бы хоть мемы выучил перед тем как быть баттхертом Энтерпрайз у него не продуктовый на автомате, пиздец >В твоём селе Лол блядь, шизоид, скажи мне где тырпрайз НЕ легаси И как раз таки в аутсорсе обычно его меньше Ты вообще значение слов которые пишешь понимаешь?
>>1566535 >ты бы хоть мемы выучил >мемы >выучил Вся суть вопросов в /pr/. Какой то малолетний долбоеб, который вчера только вкатился на галеру засирает ленту. Не знаю даже, нахуя я таким отвечаю
>>1566543 Ясно, это троллинг тупостью. Если не спа то похуй на UI. Если легаси то не энтерпрайз. Если энтерпрайз то не продуктовая контора. Если сказали что разор хорош в смеси с либами расширения, то сказали что разор говно. Действительно хуй знает зачем ты это продолжаешь.
что лучше nlua или neolua? Из требований быстрое создание нового экземпляра стэйта и малый жор оперативы и что бы из луа шарповые функции вызывались как можно быстрее. Особо тяжёлой и замудрённой логики там не будет
>>1566504 >все .NET-тчики это full-stack Как правило да, есть исключения, например, если проект очень большой. В целом же, на большинстве проектов, на одном только бэке делать нечего.
>>1566666 сам себе отвечаю. neolua на базовых вещах просто рвёт nlua т.к. первый это полностью шарповая реализация и единоразовый компил скрипта в дерево выражений
Сап, аноны. Решил вкатиться в программирование и выбрал шарп как первый язык для изучения. Так вот, немного почитав, я узнал, что разработка на шарпе для юнити и разработка на обычном шарпе очень сильно различаются. Поэтому, у меня появился вопрос. Куда, по-вашему, перспективнее и лучше пойти: вебдев/геймдев? Хелпаните плез. Для справки: знаю html и немного css. Недавно изучал, до того как узнал о шарпе. С юнити знаком лишь поверхностно, для сравнения.
>>1567385 сап анон, хуйня это все. Сейчас пашу, что лось ASP.NET full webstack dev-ом. Заебало все - овертаймы, больничный - без оплаты ЗП, 14 (10) дней отпуска. IT в 2к20 это дно, на просторах СНГ - так точно. После работы переучиваюсь на слесаря-автомеханника. Вот это я понимаю работа. Похуй, что в тасоле, зато руками работаю, да и ЗП у хорошего спека не меньше, чем у Senior dev-a. Задумайся лучше над этим.
>>1567507 Да, название называть не буду (подписывал бумажки об конфиденциальности этого бадишопа). Отпуск - 10 дней рабочих (14 календарных), больничные - не гребешь, не платим. Сижу сейчас с соплями и кашлем, без компенсаций, когда выйду - пойдет гора тасков. Ебал короче ваше погромирование, за эти же деньги (мидла так точно) можно найти другую менее напряжную и более развязную работу.
>>1567515 У меня не по rate/hour - ставка месячная. Если берешь отгулы делят на КОЛИЧЕСТВО РАБОЧИХ, НЕ КАЛЕНДАРНЫХ КАРЛ и снимают с ЗП. Сколько с меня получают, я хз, думаю в пределах 20
>>1567519 >в месац ~1.5-2k Для контраста - сменить сайлентблоки, тормозные диски, развал-схождение, ТО - это $500-600, из которых комплектующих если на $250-300 набереться, то это уже дорого. Поэтому маня мир погроммирование трескается тогда, когда узнаешь, что есть полно другой работы, за которую можно получить те же деньги при меньших усилиях. Продаваны, которые не на ставке, а на сделке думаешь 3к не поднимают?
> Слесарь без любви к программированию самому по себе вкатился в говноконтору на хуевые условия, сгорел и теперь жалуется в треде сишарпа о том что кодинг говно, программисты не шарят за рынок Проблема в тебе, не воняй.
Что не так с плеерами? Понадобилось накидать простое приложение-видеоплеер. Сешарп для меня язык вспомогательный, и я мог проебать какие-то нубские моменты. Но не настолько нубские, как тестить производительность в дебаг-сборке или вообще сканпелять под не ту архитектуру. Сначала попробовал дефолтный MediaElement. Всякие мелкие видосы гоняет хорошо, но 1440p@[email protected] заметно подлагивает. Поставил FFME - эта штука использует FFMPEG. Все равно результат такой себе. Ну, конечно, на моей GTX1080 все ОК, но на ноуте с Гиперпнем образца 2016 - боль. Подумал, неужто встройка ноута совсем плоха? Но почему тогда дефолтный виндовый плеер тащит? А потом вспомнил, что в Winforms можно вставить тот самый дефолтный плеер. И вставил. И он тащит! С ним все прекрасно! Что за херня? Ошибка в ДНК, или в Сешарпе и вправду нет нормального видеоплеера, исключая винформовый AxWindowsMediaPlayer?
>>1567830 И что с этим делать? Есть какие-то варианты получить нормальную производительность плеера, не переключаясь на допотопные классы, которые написал еще мой дед в окопах Сталинграда?
>>1568529 нет проблем для легаси-богов кроме ковыряния в говне На самом деле проблема большенства девов, когда смотришь в требования, а там EF, .NET 4.5+, Core 2.2 А по факту приходишь, а тебе дают хуйню хуйни, но т.к. в офере пункта такого нет, то месишь глину, пока не сдохнешь закончится офер
Аноны, вопрос с работой, конечно же. В общем работаю я на технической работе, но она никак не связана с программированием. И образование соответствующее. Но программирование всегда нравилось, и последние лет 7 учил шарп как хобби. Знаю его достаточно неплохо, писал несколько весьма полезных для себя приложений, и даже весьма приличную игру, но не дописал, завис в балансе и рефакторинге. Хотя есть вполне приличная демка. Знаю также на некотором уровне unity, как то начинал учить html, яваскрипт, уверен что без проблем освою любой другой язык. Так получилось, что моя текущая работка загибается. Есть мне шансы вкатиться куда-нибудь на зарплатку мидла? Совсем уж с джуниуров начинать неохота, хотя если там зп будет 100к не в дс, или от 200к в дс - то можно всё таки мне не 20 лет. И может быть посоветуете что делать для этого? Гитхаб не юзаю, хоть и знаком, взять и написать пяток прог и выложить на гитхаб? Или подучить что то ещё?
Короче, решил перекатиться с двух плюсов на четыре, скачал Албахари, начал читать. Если закрыть глаза на излишние пристрастие автора к сахару, книга ультрагодная, без излишне глубокого мозгоебства, но с указанием всяких тонкостей и неочевидных мест. И все шло заебись, пока не наткнулся на вариативность в универсальных интерфейсах и делегатах. Инфы, почему оно так работает дается крайне мало. Просто: "делай так. и будет заебок". Решил глянуть, что по этому поводу говорит Троелсен, вроде он обычно по любому чиху приводит кучу ненужных подробностей и промежуточного кода. А там вообще эта тема не затрагивается. Так вот вопрос, где об этом можно подробно прочитать?
>>1568960 >Албахари >ультрагодная, без излишне глубокого мозгоебства сразу за инвариантность, ковариантность и контрвариантность подумал, хыыыыы >А там вообще эта тема не затрагивается. Тролсен - для щеглов, уровень - begginer. Албахари - Middle/Senior Где искать материал? В интернете не осилившему гугл хороший совет имо >>1568942 >Совсем уж с джуниуров начинать неохота есть дебичи, которые за бесплатно готовы работать, а ты тут выебываешься. Не хочешь быть погромистом что ли? Они же 300к/сек рубят >>1569037 >какие обязанности у C# джуна и мидла? Фиксить баги, допиливать функционал, писать тесты, пить кофе, пиздеть, что сильно загружен и оверхард таски, просить деньги >Насколько сложный код надо писать? Пиздец какой сложный, что то на уровне ракетостроения или даже выше Погугли тему из вопроса про Албахари - ты охуеешь
>>1567831 Так что, опытные шапреры, есть идеи? Я даже попробовал либу, делающую плеер с DirectDraw (пакет WPFmediaKit), и стало лучше, но все равно результат работает тупее, чем ебаный винформовый плеер.
Эй, шарпаны, поясните, как лучше учить ASP.NET. Я немножко знаю сам шарп, а про асп не знаю ничего. С чего начать? Есть ли какое-то онлайн-дрочилово по этой теме? Нужны ли мне будут всякие джаваскрипты? Хтмл и цсс будут нужны полюбому, да? Помогите ньюфагу.
>>1569113 > Где искать материал? В интернете не осилившему гугл хороший совет имо Ну блин, не ужели ты думаешь, что я бы пришел сюда спрашивать, предварительно не погуглив? В большинстве своем там объяснения уровня "вот пример вариативности, вот контрвариативности, запомните и пользуйтесь". Если и есть попытки объяснить это на пальцах, то все их веселые аналогии с животными мгновенно идут по пизде при объяснении контрвариативности, потому что она контринтуитивна. Единственно годное объяснение я нашел в архивном блоге мсдн от разработчика языка. Но оно от 2007 года для 3ей версии шарпа. Там вариативность параметров универсальных делегатов только в планах.
>>1569212 4 года в шараге по 2-3 часа в день в среднем только на шарп тратил. Могу кинуть собственной какахой в монитор только. Буду рад если с книгой будет по-другому
>>1569268 >4 года в шараге по 2-3 часа в день в среднем только на шарп тратил Понял. Я просто в ахуе с челов, которые пишут что за полгода в айти вкатиться можно. Я от этого комплексую, потому что за полгода я совсем базовые вещи только освоил
>>1569272 я где-то так же даже подольше, но вот меня недавно "осенило" поставить зонд-трекер и я охуел: внезапно оказалось что большая часть моего времени тратится на бесполезную херню вроде серфинга двачей и прочего интернета т.е. даже если я на бумаге уделяю, допустим, шесть часов на что-нибудь полезное вроде решеточки, над собственно решеточкой я реально работаю не больше часа, остальное просто сливается в трубу нахер. что с этим делать пока не ясно, но по крайней мере теперь знаю в чем скорее всего заключается проблема моего херового обучения.
>>1569433 Я, как пистонодрочер, оффициально заявляю, что его преимущество в возможности возвращать массив различных типов: def a(): ... -return intValue, strValue, listValue, tupleValue, neboValue, allahValue
Но с другой стороны, в многопользовательском проекте сисярп рулит именно потому, что там как раз-таки наоборот строгая типизация, и ты мгновенно при взгляде на метод понимаешь, какие типы он принимает в качестве аргументов и какой возвращает.
В пистоне приходится костылить это стрелочками справа от параметра.
>>1569545 > Я, как пистонодрочер, оффициально заявляю, что его преимущество в возможности возвращать массив различных типов: > def a(): > ... > -return intValue, strValue, listValue, tupleValue, neboValue, allahValue
Вернуть object[] можно. Да, придётся проверять тип при работе с элементами этого массива, но возможность возвращать массив различных типов существует
>>1569779 Значит выше по коду. Если у тебя где-то есть try { SomeMethod(); } catch { }
При этом в SomeMethod() у тебя есть:
SomeRequest();
Который может вызвать эксепшен, то он пробросится вверх, а если ты сделаешь так: try { SomeRequest(); } catch { } То вверх ничего не пробросится, а проглотится внутри SomeMethod()
>>1569739 А нахуя вникать в ненужное говно, когда за тебя все машина делает? Вот ты страдаешь хуйней, определяешь массив с конкретными типами, а я просто взял и получил с ходу не определенный мною за ненадобностью массив. Ты, наверное, из тех петухов, у которых "Не прогал в ассамблере - не разраб! Не нопесал свой собственный игродвижок - неполноценный геймдев!"
>>1569791 Для того чтобы предоставить больше возможностей. Для того чтобы предотвратить говнокод. Петухонщик не будет думать, а не хуйню ли он делает, возвращая столько разных типов из одного метода, он просто сделает. В то время как программист увидит, что делает хуйню и переделает этот перегруженный метод в несколько. Но если этого сделать нельзя, то использует либо object[], либо кортеж, либо создаст отдельную структуру/класс для этого.
>>1569545 на самом деле, то что ты описал скорее недостаток пайтона, нежели плюс. Когда ты возвращаешь массив различных типов, тем самым ты: 1. Подрываешь механизм строгой типизации; 2. Переполняешь ресурсы возвращая одним методом то, что должно вернуться несколькими; 3. Плодишь кашу в коде, который поддерживает N+ человек. Тут писали про методы из 20к строк, вот как раз возвращать любые типы - это из той оперы. Так или иначе, вернуть массив разных типов в решетках тоже можно используя кортежи или класс-оббертку. Я не фанат решеток и хотя этот язык умирает, он во многом совершенен.
У меня проект (CRM), где нужна полная регистрация действий пользователя. Целесообразно ли добавлять в DAL сущность юзера в каждый метод? Или лучше это сделать на BLL уровне?
>>1571088 Тебе нужно что-то, что будет выводить твою графику. Теоретически можно сразу работать с директ иксом, но ты повесишься, пока разберёшься. Либо выводи через WPF (на нём тоже написано несколько игр, погугли. Там есть встроенная анимация), либо не еби мозги и учи параллельно юнити, как и все делают.
Есть гайд по сертификации приложений? Как то можно делать это бесплатно? Что б если ты написал десктоп прогу - она не отображалась у всех как потенциально опасное приложение.
>>1571483 Да нет, всё запускается отлично, даже экзешник скопированный с папки debug если ты, конечно, с библиотеками и версией шарпа не проебался, но пишет что на ваш страх и риск.
Если нет интернета, значит ты страна третьего мира в которой или сам диктатор отключил своим рабам интернет или это диктатору Белые Бваны Демократии отключили интернет и прямо сейчас бомбят на стелс-истребителях F-35 и гиперзвуковых ракетах его города.
В противном случае не может такого быть что бы не было интернета.
Бля, котаны, завтра меня будут собеседовать по скайпику на должность джуна. Никогда не собеседовался. Так волнуюсь, что коленки трясутся. Ох, чую, обосрусь я завтра, лол. Подбодрите меня.
>>1571579 Волнуешься ты потому что не веришь в то, что обосрёшься. Если бы ты действительно в это верил, то и страха бы не было. Ничего, завтра ты обосрёшься по полной, будешь краснеть и потеть, мямлить что-то невнятное, впадать в минутные паузы после вопросов на которые ты ответить не можешь. Потом всё будет как снежный ком, волнение и стыд не дадут тебе отвечать даже на элементарные вопросы, в итоге собеседующий будет смотреть на тебя как на дерьмо, а также не скрывать презрения, ведь ты потратил его время, которое он мог потратить на достойного кандидата, а не на какого-то придурка, который захотел войтивайти потому что много платят.
>>1571594 Логично что кто уже работает по теме - здесь особо топ ответ не получишь. Да и есть другие места, где можно искать ответы на серьёзные вопросы. Здесь такое вот самое начальное только.
>>1571628 >Нет связи, я так скозал!1 Я доедаю свою пиццу флорентино, пока я параллельно кодю и отвечаю вкатывальщикам, а ты и дальше сиди и перди, неосилятор, возмещающий обиду токсичностью
>>1571612 В абстрактном классе можно реализовать методы и инициализировать поля, интерфейс это всего лишь обложка, схема. Абстрактный класс нужно использовать для создания основы иерархии классов, т. е. если у тебя будут как минимум два класса, которые связаны между собой, то следует всё общее из этих классов вынести в абстрактный класс и наследовать его в этих производных классах. Интерфейс нужно использовать для связывания различных иерархий классов, которые не связаны между собой общим классом, но имеют что-то общее.
>>1571638 >Интерфейс нужно использовать для связывания различных иерархий классов Зачем, если интерфейс это всего лишь обложка? Почему без него нельзя обойтись?
>>1571639 Потому что ты можешь наследовать сразу несколько интерфейсов, но не можешь наследовать сразу несколько классов. При этом, интерфейс обязывает тебя реализовать все свои методы, а класс не обязывает этого делать. Т. е. в случае с интерфейсом, каждый кто его наследует, должен предоставить реализацию методов интерфейса. Это удобно потому что предотвращает путаницу, которая может возникнуть из-за того, что кто-то наследовал класс, реализовал в нём какой-то конкретный метод, а остальные остались неизменными, но при этом для правильной работы эти методы необходимо реализовывать для каждого класса по своему. Т. е. интерфейс используется еще и тогда, когда каждый метод этого интерфейса нужно в классе, который будет его наследовать, реализовать по своему.
>>1571649 Тогда можем вам предложить вакансию в HR отделе. Также, одному из наших топ-менеджеров требуется помощница, но там фигурируют отдельные условия, которые необходимо обговаривать в более приватной обстановке, если вы понимаете о чём я ехидно улыбается
>>1571661 >которая может возникнуть из-за того, что кто-то наследовал класс, реализовал в нём какой-то конкретный метод, а остальные остались неизменными А виртуальными их нельзя в абстрактном классе объявить?
>>1571671 Ну я сегодня-завтра почитаю вопросы к собесу. Ну они мой говно-гитхаб смотрели, поэтому, думаю, знают, что я из себя представляю. Могу из-за волнения начать городить хуйню и даже не ответить на вопросы, на которые знаю ответы.
>>1571594 фо, серьезно? Хм, а как же ты заметил? Может задачи с перестановками строк тебя на это натолкнули? Хм, или какие книжонки почитать? Каждый тред это пишу, пока моча не банит и не тред посты. >>1571596 >особо топ ответ не получишь проиграл с дауна >есть другие места, где можно искать ответы на серьёзные вопросы дважды >>1571649 всем похуй, хуй сосать готова за оффер? Нет? На выход >>1571693 на решетках еще берут джунов? Земля им пухом
Допустим есть MVC приложение, можно ли запихнуть в одно приложение два entity db context с разными схемами? Я знаю, что multi context возможен, и я его юзаю, но мне нужно что бы условный ControllerX1 обращался к Χ1 entity context, а ControllerX2 к Χ2, при чем у Χ1 и Χ2 одна и та же таблица имеет разную схему.
Я тут почитал интернеты, оказывается к собесу надо готовиться. А я думал можно не готовиться. А до завтра я не успею подготовиться. Кажется, меня завтра обоссут.
>>1572015 По твоему люди, которые ходят 3 раза в неделю в зал, не живут? Живут, просто тратят 3 часа в неделю на занятие спортом. Столько же нужно тратить программисту для того чтобы всегда быть готовым к собесу.
С помощью oledbdataAdapter подключаюсь к бд. После добавления ограничений внешнего ключа не могу добавлять новые записи в таблицу(до точно работало все), т.е. прямо в datagridview просто пропадает запись, не попадает в dataset. Как поправить?
>>1572123 Да я на плюсах делаю, но в том треде не любят c++/CLI. Да и код там формируется автоматически из коллекции relations у dataSet, я неправильно ключи что ли задал?
>>1572146 Ну откровенно говоря, да. Просто объясни как правильно настраивать отношения между таблицами, если не трудно. У меня их всего 3, одна с книгами, вторая с читателями, а третья их соотносит в виде учета. Я выставил их родительскими, а третью дочерней, связал по ключам соответствующим, но не работает.
В первой айди первичный, потом имя автора, во второй тодже айди первичный, потом просто название кники, в третьей айди первичный, потом айди автора внешний указывает на первичный в таблице с авторами и айди книги тоже внешний указывает на первичный таблицы с книгами.
>>1572196 Ну я так и делаю по идее. Я все удалил и по-новой им прописал эти свойства, но программа выкидывает исключения при запуске. Я кстати заметил что foreignkey почему-то unique, я думал только primary должен быть уникальным? Там просто есть коллекция relations и еще в коллекции tables можно contraints задавать, может конфликт какой-то происходит если не в том порядке настраивать свойства? Может какой-нибудь мануал/видео есть с простеньким приложением, использующим таблицы со связями?
Привет, ребят, пишу после переката, как можно в асп в конфигах (xml которые) сослаться через configSource на файл, который лежит в директории, которая на уровень выше, чем та, где я храню свой конфиг?
Спасибо за отзывчивость! Я походу понял ошибку, надо заполнять сначала родительские таблицы в обработчике загрузки формы. Вроде теперь работает все. Чувствую себя как пикрелейтед. Еще раз спасибо, аноны. Я вот думаю может в шарп перекатиться и продолжить в студии сидеть, потому что на qt что-то все закручено делать интерфейс графический. А плюсы походу из студии выживают с каждым годом, у меня вижуал студия 2008 и то там повырезаны некоторые возможности, в новой версии я слышал вроде даже winforms шаблона нет по умолчанию для плюсов.
>>1572414 >надо заполнять сначала родительские таблицы в обработчике >вижуал студия 2008 >в шарп перекатиться тут своих обезьян хватает, спасибо не надо
>>1572417 Это должно быть очевидно, да. Но я сначала делал без связей и там было похуй как заполнять dataset, я не обратил поэтому внимание на обработчик, думал дело именно в отношениях/ограничениях. В книжке, по которой я пытался разобраться была вообще одна таблица, а все подводные камни вылезают в процессе как правило. Ну а для шарпа естественно обновил бы студию, хотя для лаб в принципе и старой хватает.
>>1572792 Раз в год с 2010, постоянно с 2016, но сидел в других досках. Вроде мало где так агрессивно себя ведут, если пишешь не про политоту/биопроблемы/тупуюхуйню, а нормально задаешь вопрос.
>>1572862 Это не нормальный, а тупой вопрос. Никто в здравом уме не будет переписывать то, что делалось несколько лет. Очевидно, что цлркоре это тотже цлр только с уклоном на мультиплатформенность.
Вот все эти байтоизвращения с дезинтеграцией ООП по-сути нужны для решения аппаратной байтопроблемы кеш-локальности данных.
То есть по идее - всё это должно решаться evysv коньпелятором, который должен под капотом превращать AoS layout в SoA layout.
И тут я такой смотрю вот эти видосы этого сычевского и, что бы вы думали, ОНИ ЗАПИЛИЛИ СВОЙ КОНЬПЕЛЯТОР, С БЛЕКДЖЕКОМ И ШЛЮХАМИ (Burst compiler, если я правильно понел), но написать в него эту самую кеш-локальность забыли и декапсулированные структуры и процедуры по прежнему надо писать с использованием вот этих вот анальных трюков из вот этих вот видосов.
Есть два стула вопроса: 1. Обработка статус кодов и различного рода ошибок - В каком из слоев приложения хранить? DAL/BLL/UI (asp.net core)? 2. Холиварный вопрос уровня /pr/бугурт тред. Есть HTTP (транспортный протокол). Как обрабатываются статус коды? В моем понимании - если запрос обработан (200 ок), то в зависимости от аутентификации пользователя вывалывать ту или инную стараницу. Или же - запрос обработан, аутентификация упала - 403 forbidden? С меня как обычно мог бы и не чекать, про "нихуя" и сам знаешь
>>1573220 CRM, где каждый пук чих регистрирует действия пользователя. BLL - вытягивает из DAL по UOF паттерну CRUD функции и дальше делает ряд проверок, расчетов и т.д. UI - берет данные из BLL и передает в View через контроллер
>>1573231 если юзер не прошел аутентификацию, должно ему высрать 403 ошибку. Возник вопрос - через 200 статус + View об ошибке, или сразу 403 статус код вывалить?
>>1573245 он то обработает, каким образом это делать? Статус код 200 или 403, если клиент не аутентифицирован? Еще помимо View выход на Web Api (все эндпоины будут писать отдельно)
Это нормально что я не догоняю, что такое WEB API? По мне так это какая-то штука, которая имеет какие-то запросы ( гет пост, пут, делит), обращаться к ней можно из браузера или postmana. Правильно я понял? Но всё равно как-то не очень понимаю зачем это нужно.
>>1574053 Вот есть у тебя мобильная апка, допустим тотже телеграм. Нужно послать или получить сообщение. База в клауде, собственно нужен к ней доступ с моб. девайса. Доступ к базе есть с сервера, клиенту нельзя ибо не секюрно. Сообствено сервер общается с мобилой через http(s) протокол. Также как и браузер, только браузер юзает в основном GET/POST, и получает в еблет html код и показивает юзеру. А вот в слачаее с мобилой не нужен html, а только дата, для етого и есть REST сервиси, только там есть еще методи: PUT, PATCH, DELETE, HEAD.
>>1574130 моча, не могу удержаться запостить такую дичь, когда вижу очередной вопрос по курсовой/лабы. Как не вращение строчек, так кодеки/видеоплееры в решетки тащат, ну что за уебища :(
В прошлом треде уже спрашивал, но чет так толкового ответа не получил, потому спрошу еще раз.
Ковыряю MVVM с WPFом. Подвязываюсь вьюшкой через вьюмодел к модели, все как по учебнику, так сказать. Но проблема в том что при присвоении модели данные на вьюшке не обновляются.
В прошлый раз мне предложили сделать модель пропертью и таким образом уже подвязываться. Но тогда получается что вьюшка видит модель напрямую, а значит ломается сам MVVM если я правильно понимаю.
В общем, как ПРАВИЛЬНО сделать чтобы оно работало? Или у меня вообще подход неверный и модель не должна присваиваться?
Для небольшого контекста - аппка общается с некоторым веб апи посредством рестшарпа, получает Json, который автоматом конвертится в объект, являющийся, по сути, моделью.
>>1574221 >тред для ньюфагов Где это указано? Мне давали очень годные советы, как не щелчку. Почему я должен читать залупню, которая гуглится по счелчку пальца? Или в шапку нужно дописать в инструментарии гугл, а то не могут догадаться?
>>1574184 >Но тогда получается что вьюшка видит модель напрямую, а значит ломается сам MVVM
А как ты по-другому инициализируешь ViewModel? В этом и вся суть, ты инициализируешь ViewModel, как свойство в View, после чего во XAML View в качестве контекста даты указываешь это свойство ViewModel. Далее делаешь всё через команды и биндинги. В итоге получаешь хорошо структурированную модель, которую удобно просматривать, редактировать и дополнять. Можешь даже сделать в одном проекте отдельное окно, которое не реализует паттерн MVVM, а потом через неделю-две, вернутся к этому проекту и сравнить, как быстро ты разберешься в той части что без MVVM и в той части, что с MVVM.
>Но проблема в том что при присвоении модели данные на вьюшке не обновляются.
Чтобы данные обновлялись, нужно чтобы типы этих данных поддерживали интерфейс INotifyPropertyChanged, т. е. ты либо реализуешь это интерфейс самостоятельно, либо используешь уже готовые классы, например, ObservableCollection, BindingList и т. п.
>>1574251 >Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии. Почитал. Вопросы ака "Есть input "Hui, hizda", должен быть output "adzih ,iu" или "Pizda, hui". Вопросы с встраиванием плееров, кодеков, драйверов - зашквар, ибо решетки - интерпрайз язык (чуть более, чем весь). Так что можешь сказать своему преподу, что не решил лабу, т.к. послали нахуй на борде и не осилил гугл.
>>1574263 Тебе и задают самые острые вопросы, как видишь. Собственно, в шапке ответы на совсем ньюфажные вопросы + список литературы для вката, что как бы должно тебе намекать какая ЦА у треда.
>>1574265 Да, ЦА - вкатывальщики, которые задают вопросы относящиеся к языку и тому, что в литературе им не совсем понятно. При чём здесь студенты с лабой1? Которые не могут встроить плеер, не нашли кодек и т. п., потому что им лень гуглить и шарп им нахуй не всрался, их в шараге заставили на нём хуйню писать.
>>1574268 помимо ЦА сидят по фану вкатыши и помогают (иногда ебучим объезьянам, гугля за них). По остальному - true >>1574265 такие вопросы гугляться, а отвечать на это зашквар впринципе. С такими вопросами любой (адекватный) ментор пошлет нахуй гуглить. Ответить на вопрос про особенности архитектуры/технологии, выбор между А и Б, какой то свежак в технологии - для этого имо тред. Возможно я перегибаю и мне просто нехуй делать на РАБоте, раз пишу все это, но блять, зачем приучать даунов есть с ложки? У меня вообще каждый раз горит, когда помогают решить даунские вопросы (ЗОЧЕМ???77)
>>1574278 >Странное у тебя разделение вкатавальщиков Блять да потому, что вкатывальщик - это тот, кому это интересно, а не тот, кто будет задавать вопрос, чтобы скопипиздить и забыть
>>1574419 Шарпик поприятнее в плане написания кода. То что на жаве занимает 10к строк, на шарпике можно в 1к уместить. Плюс теперь не так привязан к M$. Да и многие штуки что предоставляет .Net/.Net Core можно без всяких фреймворков брать и использовать, в джаве же помимо самой стандартной джавы еще и куча фреймворков, которые не особо лучше PHP и JS зоопарка. А, ну и конкуренция поменьше, при сопоставимых ЗП.
Поясните за следующую ситуацию: Правильно ли я понимаю, что если я решу юзать SOA, то для общения между сервисами я должен запиливать еще один сервис к которому будут обращаться сервесы выполняющие работу? Скажем, вот у меня есть сервис который служит для взаимодействия с БД, есть сервис который от пользователя читает ввод, и чтобы записать в БД правильным решением будет отправить сообщение сервису что пишет в БД, либо же это неправильно с точки зрения SOA?
Почему это говно такое безумно сложное после пистона? Срсли, сидишь и охуеваешь тупо от ебли с нугет-пакетами. Особенно охуенно, когда тебе нужна библиотека, она есть в коробке, но ее нужно включить в настройках нугетов, и при этом ОНА ПО-ДРУГОМУ НАЗЫВАЕТСЯ. То есть, блять, вот как я должен догадаться?
Почему в пистоне я тупо ставлю пипом через батник либу и сразу начинаю с ней работать, а тут какое-то блядство натуральное? Проект, блять, только создал, уже миллион каких-то говнофайлов создалось. Против одного, ОДНОГО py-файла. Вообще охуеть.
>>1575115 Так-то в петухоне тоже куча всякой хуйни создается, если ты проект в пайчарме создаешь. С другой стороны тебя никто не заставляет создавать проект в сишарпе, можешь создавать отдельные файлы и вручную компилировать. На счет библиотек ++++. Просто пиздец какой-то, почему нельзя былт по-человечески сделать. тоже щупаю сишарп после питухона
>>1575076 Ну сделай _mymodel свойством, при назначении которого SomeText будет меняться на value.modelText. Но у тебя какая-то херня получается всё равно.
>>1564882 Добрался до этой задачи(никогда не заводите себе тянку, аноны, все время сжирают) реализовал как тут подсказано, действительно так удобнее. Но не понял один момент: как ты сделал List<ITask>? Я заменил абастрактный класс на интерфейс, но каим образом сделать чтобы List<ITask> хранил string значения?
>>1575115 Спешите видеть, ебобо не может вместо пипа использовать нюгет, которые блядь вообще одинаковые нахуй. Срсли, нахуй ты такой тупой? Учил питон, знаю шарпы, никаких сложностей нет вообще. Хер знает как ты умудрился в чистом поле найти дерево и уебаться об него головой.
>>1575264 Твой вариант подходит если проперть SomeText одна. Но их же много, и вручную перебирать их как-то не комильфо. К тому же, если, в теории, потом еще дополнять модель другими полями, то их надо будет туда же в проперть прописывать, а это тоже какие-то там принципы ломает, в общем НЕПРАВИЛЬНО получается. А я хочу наоборот.
>>1575376 Так у тебя изначально хуёвая архитектура получается, раз тебе нужно модель каждый раз менять. И почему у тебя привязка идёт к отдельному свойству, а не сразу к модели?
>>1574130 Запости те, что тащат. ЧСХ, попытка подъебнуть в анскилльности довольно уныло смотрится с учетом того, что я сразу же написал, что в области разбираюсь чуть более, чем никак.
Это снова я. Соскучились? Короче, у моего TCP сервера довольно странная проблема: Принимает клиентов он быстро, памяти жрет мало, НО, когда клиент отключается, почему-то выделяется примерно 25МБ и отключаются сессии довольно медленно, т.е. если 5к клиентов создается за 1 секунду, то отключаются они где-то секунд 40, при этом вроде как все асинхронно. И это не то чтобы проблема, просто я не понимаю в чем дело.
>>1575665 Да, 25МБ не на каждого клиента, а всего +-25МБ, но этот скачек удивляет. Я вижу в дебагере что почему-то создаются потоки, но хуй знает почему, я же просто когда вываливается эксепшн - убиваю сокет, закрываю его и удаляю из словарика активных сессий.
Недавно начал изучать C#, т.к отдел разработки пишет на нём, соотв. путь наименьшего сопротивления для вката. С удалённой работой как дела обстоят? Достаточно заказов на фрилансе?
Двач на тебя вся надежда. Как создать переменную/массив/объект с именем которое содержится в переменной? Например я ввожу в консоли слово "xyina" и вот мне нужно создать масcив xyina. Как это сделать?
>>1575978 Ну вот хотелось бы знать о такой функции, как это сделать. По сути незачем конечно. Но вот например для такой хуйни как создать много масивов в цикле for (int i = 0; i < 1000; i++) { int[] (list+i) = new int[10000];
} И типо дохуя массивов list1 list2 list3 list4 и тд но хз как сделать
Спрошу тут, потому что кодю на шарпе. В общем, есть ли какой-то профит в том, чтобы не самых ресурсоемких объектов создавть пул этих самых объектов заранее? В каких случаях это может быть полезно? Просто я только один сценарий придумал, это какие-то ограничения, скажем NPС в игре, нам не нужно будет тратить время на создание, мы просто достаем из пула объект, инициализируем его новыми данными, и пользуемся этими NPC, пока игрок в зоне находится, потом игрок далеко убежал, мы NPC что за зоной обработки находятся почистили и положили в пул. Но это же детский пример. Как в реальных проектах, если исключить пул потоков, используются эти самые пулы объектов? Когда их надо использовать, а когда правильнее создать новый объект?
>>1575394 >И почему у тебя привязка идёт к отдельному свойству, а не сразу к модели? Так потому что MVVM же. VM идет как прослойка, вот туда и вяжусь. >Так у тебя изначально хуёвая архитектура получается Ну вот я и спрашиваю как сделать ее нормальной.
Хай гёрлзс энд бойс. Кто мне может пояснить по правильной вложенности иерархических объектов? Есть иерархия классов, условно - нижний уровень - это реализации, листья выше - группировка реализаций. Каждую реализацию обязываю реализовывать обобщенные интерфейсы (К примеру, если это CRUD реализация, то интерфейс ICRUD<T>, где T - Entity). Теперь у меня затык - как это все собрать в одну структуру, чтобы обратившись к одному HEAD (условно так назовем) интерфейсу можно было пройти по иерархии и выбрать интерфейс, который мне нужен? Я могу сделать через жесткую привязку - в конструктор запихивать классы, а не интерфейсы, но это не подходит, т.к. в любой момент реализация может поменяться. Выпилить этот обобщенный интерфейс? Так добавится с 30+ дополнительных интерфейсов с одинаковой сигнатурой. Как быть то блять? Нужен код - могу залить github.
Предположим у меня в голове возникла такая задача: Я хочу файлики в папке "Загрузки" сортировать по разным папочкам, в зависимости от расширения. Я написал на старом дотнете программулину, которая с этим справлялась отлично. Все устраивало, кроме того, что необходимо было ее вручную включать периодически. Я почитал и узнал что существует такая штука как сервисы, сделал свой сервис, оторый раз в час смотрел нет ли новых файлов и если они есть - сортировал в фоне. Все отлично - замечательно. Теперь я решаю сделать аналогичную фиговину под линукс, net core это, вроде как, позволяет по крайней мере если верить статьям. Ну так вот, все классы что исполняют эти задачи у меня есть, но в этот раз я хочу не полностью запуск и прочее мутить, а воспользоваться IHostBuilder'ом. Ну так вот, я выделил интерфейсы, внедрил скопы, как теперь мне запускать это? Не делать же имплементацию IHostedService? Просто если пользоваться IHostedService, получается какая-то залупа, типа я уже внедрил зависимости в билдер, потом передаю их в свою имплементацию и она просто используется для того чтобы стартануть другие классы, которые работой занимались, мне кажется это какое-то уродство и наверняка как-то иначе нужно делать. Только вот как?
>>1576491 > как это все собрать в одну структуру, чтобы обратившись к одному HEAD (условно так назовем) интерфейсу можно было пройти по иерархии и выбрать интерфейс, который мне нужен? Что значит "пройти по иерархии"? Ты можешь просто проверить с помощью рефлексии какие интерфейсы имплементируются классом же.
Здорова, пидоры. Учу я сишарп ентот ваш, со скрипом, но продвигаюсь. Но есть проблема - мне не хватает практики. То, что читаю в литературе не закрепляется в голове, потому что примеров очень мало, в основном лишь сухая выжимка и я не понимаю как и зачем мне использовать те или иные фичи языка, кроме базовых. В видосах вообще пиздос какой-то, либо хуйня для совсем даунов, где по часу размусоливают чем int от float отличается, либо какие-то индусы задры в 30 минутном туториале высирают тысячи строк кода, вообще никак не объясняя почему они делают ту или иную хуйню, а тебе лишь приходится копипастить и реверсинжинирингом заниматься пытаясь понять что и почему. tldr есть ли что-то типа школьных задачников по математике/физике, где на каждую тему у тебя есть задачи которые надо решить? Если есть, то ткните ебалом или хотя бы дайте направление для гугла
Ещё есть мысль брать проекты на гитхабе и пробовать в них ковыряться, только хз как не скатиться в тупой копипастинг. Тем более, что я не смогу отличить код здорового человека от кода макаки
>>1576893 Идешь на CodeWars и решаешь задачки. А вообще, проще придумать свой проект, описать на листочке что ты от него хочешь, скажем: Hex редактор с подсветкой и выгрузкой по ftp, возможностью загружать файлы размером до 60ГБ, довольно интересная задача, особенно в последнем пункте, вот садишься и делаешь, ловишь грабли, гуглишь и продолжаешь делать, пока все пункты не будут выполнены.
>>1576851 >Что значит "пройти по иерархии"? Пикча. Мне нужно передать в реализацию один класс-матрешку, через которую получать доступ к любой из реализацией, но есть одно но, корректно ли передавать в интерфейс экземпляры классов в иде свойств?. Вот так:
>>1576940 Мне интересно погромирование, в идеале хотел бы иметь работу в этой сфере. Если удастся поучаствовать в крупном проекте, вообще круто будет. Именно деньги меня интересуют в последнюю очередь, лишь бы на пожрат хватало. Хочу заниматься тем, к чему душа лежит. Для меня программирование - как для ребенка конструктор Лего. Создавать что-то сложное, используя простые кирпичики это круто. Ещё из плюсов, кстати, то что за несколько месяцев я подтянул английский лучше чем за 11 лет в школе и 4 годах в вузе, лол О конкретике же говорить пока сложно, я только в начале пути. Главное же, что я достаточно аутист, чтобы не забросить это всё через неделю или после первой неудачи.
Почему именно сишарп? Так получилось. Сейчас у ньюфага огромный выбор, глаза разбегаются, не знаешь как подступиться. Я просто начал пробовать всё подряд. PHP, HTML пробовал, в принципе не сказать что слишком сложно, но веб не моё. Питон прикольный, но не покидало ощущение, что это больше дополнительный инструмент. Вкатываться с нуля в си и кресты отговорили на двоще, попробовал шарп, понравился, на нём и остановился.
>>1576948 Спасибо за совет, попробую. Добра и тонны нефти тебе
Asp.net core и net core это не одно и тоже? Давече узнал что в ноябре будет объеденение net framework и net core в net 5. Вот вопрос не пойдут ли мои старания по изучению языка по пизде через год? Чем вообще грозить это объединение?
>>1577227 >Чем вообще грозить это объединение? .NET 5 - это четвертая версия .NET Core. В Core нет ASP.NET Web Forms, WCF и это плохо: много легаси говна написано на этих двух технологиях, особенно на последней, и переписывать обычно заказчик не горит желанием, потому будет лок на каком-нибудь Framework 4.5, повезет если 4.8. https://devblogs.microsoft.com/dotnet/introducing-net-5/
>>1577230 VM может содержать другую VM, любое количество, любая вложенность. Для всего говна работы с моделью делаешь отдельную VM, а на основной VM нотифаешь как проперти только обновление ссылки на дополнительную VM.
Такой вопрос, как происходит запуск веб-приложения, например, ASP.NET, на сервере? Вот на локальной машине тупо вызывается метод Main при запуске, а как и когда этот метод вызывается, если приложение куда-то задеплоить, на какой-нибудь Azure там и т д?
>>1577042 ISupplyCatalogue - это фасад. Без рефлексии, на основе иерархии интерфейсов, при условии, что одна сущность может реализовать несколько интерфейсов, может разруливаться композицией + паттерн матчингом: https://pastebin.com/40cbzk3r
>>1577274 Точно так же. Кор - запускает Main. Фреймворк - через рефлексию ищет начальную точку: наследник HttpApplication, наличие атрибута StartUp, еще какая хуйня.
>>1577286 так как происходит запуск приложения на удаленном сервере, где-то прописывается команда dotnet run или как? или при деплое оно автоматически эту команду выполняет?
>>1577300 Дополнительная ебля - это делать как делаешь ты: создать окно ЯМогуВсёИСратьСтояWindow, вместо того, чтобы окно разбить на кастомные контролы или даже окна, каждый из которых будет со своим/своими VM.
>>1577318 Ну вообще нет. У меня несколько страниц, где каждая отвечает за что-то свое. Просто мне непонятен вот именно этот момент, когда апи мне возвращает объект, который у меня является моделью для страницы и если я напрямую его присваиваю, то ничего не обновляется.
>>1577344 >Ну вообще нет. Да, иначе бы не было проблемы с дублированием кода как выше.
>мне непонятен вот именно этот момент Непонятен, потому что архитектура приложения у тебя говно: нарушение единственной ответственности + вьюха какого-то хера знает про модель и пытается ее отобразить. Потому декомпозиция - единственное нормальное решение. Нет правильного решения, есть решение, которое подходит в данной ситуации.
>>1577353 >вьюха какого-то хера знает про модель Да лол, как раз-таки она не знает про модель. Вьюха у меня вяжется на свойство в вм, которое зависит от модели. Конечно, может это и называется "видит модель", тогда я неправ, да.
>>1577358 >Конечно, может это и называется "видит модель", тогда я неправ, да. >К тому же, если, в теории, потом еще дополнять модель другими полями, то их надо будет туда же в проперть прописывать, а это тоже какие-то там принципы ломает Изменение модели (добавление полей, переименование) не должно ломать отображение, изменяется только VM при необходимости, т.е. тупо изменяется маппинг данных из модели в VM. Вьюха ничего не знает про модель.
Например, окно состоит из двух частей: список элементов со строкой поиска, отображение и редактирование выбранного элемента. По умолчанию никакой элемент не выбран.
Так вот, в нормальной архитектуре у тебя компонент с элементами - это список из VM. А когда пользователь выбирает элемент из списка, то выбранный VM присваивается к компоненту для отображения/редактирования, или, еще лучше, выполняется бизнес логика, которая по id элемента ищет элемент в базе данных и создает совсем другой тип VM на базе полученной модели, который присваивается компоненту или просто маппит свойства (если ты не в состоянии занотифаить ссылку на VM).
>>1577376 Ага, ну вроде я сообразил, спасибо, хорошо расписал.
У меня, тем временем, еще вопрос появился. Как правильно зашерить дату между страницами, например? Сейчас я просто запилил объект в ресурсах и туда все пихаю, но не уверен что это, опять же, правильно.
>>1577388 Данные шарятся одним источником: база данных, АПИ, общая память, еще какая херня.
Например, в 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.
>>1577859 Хардкод + рефлексия: метод View из базового класса, используя дефолтную реализацию WebFormViewEngine, ищет в определенных местах вьюху по имени метода, который вызывает метод View. Движок можно свой написать и искать как и где хочется или передать строку в View, явно указав место.
>>1577847 Чел, в погромировании без английского вообще нехуй ловить. Он тебе нужен будет постоянно. Я уже не помню, когда в последний раз в коде встречал кириллицу
>>1577847 Одна книга от Шилдта в далеком прошлом и всё, всяких Рихтеров, Петцольдов и тому подобных Скоттов или поверхностно просмотрел пару глав и забыл или скачал книгу и забыл о её существовании.
Обычный день сеньёра-помидора: 1. Прочитать таску. 2. Нехуя не понять. 3. Заебать вопросами составителя таски. 4. Оценить, если не оценено, или переоценить. 5. Загуглить "как сделать <хуйня нейм>", обычно кидает на Stack Overflow, пишу-то на инглише. 6. Отчитать 8 часов и пойти домой. 7. Вернуться к пункту 1, пока таска не будет выполнена или, если таска выполнена, заниматься хуйней, чтобы попасть в заранее накрученный эстимейт и потом хвастаться как заебись точно оцениваешь + работа-то почасовая: если работать слишком быстро, то будут вопросы "хули так медленно начал работать" или наваливать еще больше тасков до бесконечности, платя тебе столько же.
Важные навыки по убыванию важности: инглиш не ниже аппера, умение пиздеть по делу и не по делу, пиздеть много и не давать другим вставить слово (пока не закончишь), вешать лапшу на уши, не палить свой монитор другим пограмистам.
Зарплата зависит от прокаченности уровня пиздежа и количеству лычек.
>>1577890 Ты неправильно ставишь вопрос Где он не нужен? Документация, гитхаб, стаковерфлоу, индусы на Ютубе, поездки на конференции и семинары, банальное общение с работодателем и т.д. да бля, даже банальное комментирование строк.
>>1577895 Кстати, ещё один важный момент: обычно таски составляются такими же распиздями на отъебись, т.е. для выяснения деталей таска составитель идёт его выяснять у кого-то ещё, который тоже важен архиважными делами (пинанием хуёв), который так же составлял на отъебись, не зная всех деталей (тоже идёт у кого-то выяснять), и так через несколько кругов "эффективного менеджмента".
Ну, а ты в это время с умным лицом "анализируешь" таску и пинаешь хуи. Забавно, но обычно так должно пройти несколько циклов, когда ты наконец сможешь приступить к выполнению таски.
Такое дело: Читаю строки из файла .ReadLine() Файл заканчивается, как мне снова начать их читать с начала и не закрывая поток? Просто переместить так сказать каретку в 0 позицию.
Народ, как, если у меня класс наследуется от одного абстрактного и еще реализует методы интерфейса, di сделать? как не пытаюсь, все время проблема с IMapper и IRepository
>>1577919 в бугурт треде зеленый сидит, который пишет, что могут выгонять на мороз гребцов толпами, типо у работодателя есть выбор, кого нанимать (сам проиграл в голос него). И дауненки хавают. Там такое рассписал, что охуеваешь от толстоты - таски по четко регламентному времени даюто, если не успеешь - минус бонус, не успеешь второй раз - нахуй с галеры
Уже даже в ссаной жаве рекорды завозят, а Шарп все ещё заставляет писать тонны бойлерплейта Кажется это впервые когда в жаву завозят нужную вещь раньше чем в Шарп, бтв
Есть асп нет вебапи приложение и фронт на реакте, поясните что курить за деплой? Чтоб соединить это все и запустить в интернете. Нихуя про это не знаю.
Типа я правильно понимаю, что если у меня есть два(три, четыре...) класса, которые выполняют в фоне разную работу, именно такой сценарий и является наиболее правильным, чтобы обеспечивать общение между ними, не завязывая один на другом я должен буду делать вот такую вот очередь или правильно было бы сделать как-то по другому?
>>1578870 > смогу заебашить в гугл переводчик заебешься транслейтить, тем более жидко обосрешься на особенностях перевода Без ангельского в пограммировании делать нехуй (от слова совсем). Не хочешь или не можешь - тред 1С рядом.
>>1578985 так тебе правду говорят, дебик. Ты когда окунешься в гугление вопросов и сравнишь ответы на ru.stackoverflow и на английском ресурсе - разница огромная. Книги - тоже самое, опенсоурс проекты. Не занимайся самообманом и если пишешь по фанчику для себя (как я когда то), то возможно ангельский и не нужен (больше времени будешь терять на поиск проблем). Все, что дальше - без английского нахуй пошлют.
>>1579017 >я хуею с токсичности этого треда > Чтобы копипастить с стэковерфлоу достаточно уровня английского: Ландан из зэ кэпитал оф грэйт британ! Пошел нахуй отседова, петушок
>>1579027 Ай, няша, у меня C1 и вообще мимо, я просто поясняю, что ваши выебоны просто смешны. Все что нужно среднему кодеру это уметь когда ошибка выскочила выделить ее и вставить в гугл, а потом копипастнуть со стэковерфлоу, если не заработало то копипастнуть вторую ссылку в гугле и так пока не заработает. А основы можно и на русском почитать, разницы особой для ньюфага не будет.
>>1578833 >в ссаной жаве рекорды завозят, а Шарп все ещё заставляет писать тонны бойлерплейта 1. Рекорды в шарп хотели завезти еще хуй знает когда, что-то не поделили в синтаксисе - детали не помню. 2. В жабе всё еще нет пропертей. 3. В тырпрайзе ты не увидишь рекордов еще хуеву тучу лет. 4. Жди лагерь болезненных (как вот этот https://habr.com/ru/post/484700/ индивид), которые не понимают разницу между рекордами и алгебраическими типами. Да и вообще не понимают нахуй эти рекорды нужны.
>>1578911 Покупаешь 1 инстанс на Azure или AWS. Потом деплоишь туда своё говно вручную - и реакт, и асп. Ждешь какое-то время. На основе полученных результатов задаешь конкретный вопрос.
Вы не можете разобрать [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
>среднему кодеру Хвала богам я не средний и не кодер.
>>1578956 >выполняют в фоне разную работу Я тут подумал ровно нехуя: где здесь работа в фоне? Для такого рода говно можно использовать serverless решения: AWS лямбды/степ функции, Azure функции.
>>1579078 >по твоему? По моему нет смысла вводить рекорды без всего остального. Будешь сидеть и довольствоваться своими однострочными поко. Или как они в жабе называются? Пожо? Ахаха.
>>1579065 Я, блядь, студент, сука. Я пишу курсач, который проебал чутка. На кой ляг мне тащить это говно в курсач, где надо сделать TCP-сервер в виде демона на сокетах, который просто принимает сообщения длиной до 1КБ и передает их если нужно другому клиенту(клиентам), а если пришел слишком длинный пакет - шлет отправителя нахуй. Пиздос. Так и представляю, как твой сына спросит как решить квадратное уравнение, а ты предложишь ему на вольфрамальфе вбить либо тащить суперкомпьютер, чтобы он за него все решил. Охуеть вы там в своих тырпрайзах поехали уже с готовыми решениями.
>>1579082 >Я пишу курсач Так это даже хорошо. Копипастишь хелоуворлд с документации той же акка и в половину курсоча гугл транслейтом вставляешь документацию с официального сайта. Вон, можешь у знатока С1 спросить как гугл транслейтом пользоваться. Потом этот проект мутируешь в бакалаврскую работу с минимум изменений, затем в магистерскую.
>>1579082 >надо сделать TCP-сервер в виде демона на сокетах А с другой стороны, ты такое не напишешь, потому что знать надо дохуя, реально дохуя. Это только кажется простым. Например можешь почитать про NAT.
>>1579082 Ты, блядь, уебан, сука, тупорылый, а не студент Ты приходишь в тред за советом, тебе дают, ты начинаешь срать на ответивших что тебе не подходит т.к. задача не в этом и ваще это курсач. Так блядь откуда по твоему анон должен понять что тебе свой велосипед нужен по заданию, имбецил тупой? Опять в твоём ПТУ обоссали, пришел злость вымещать? Пиздуй нахуй с треда, агрочмоня
>>1579084 Я хочу разобраться же. Блин, я же и проебался только потому что решил модно-молодежно следовать всем этим солидам-хуелидам, SOA и прочему говну, из-за этого сейчас у меня прием этих пакетов до 1кб выглядит как: Слушатель(Хост) -Сессии --Стетмашина(проверяет что пришли именно мои байтики а не какие-то левые) ---Хендлеры(парсят если стейтмашина сдетектила пакет, сделал еще свой мидлварь) ----Програмный уровень(сюда уже доходит сообщение в понятном виде, т.е. что за пакет, какое содержимое, вообще и т.д.) БД
Блядь, 10к строк кода, чтобы принять 1КБ, а могу бы просто не ебаться и в мейне ебануть просто слушателя и пустить по кругу стрим с байтами. Вышло бы строк на 500 от силы. Вот я и решил уже раз начал, то сделаю чтобы с внедрением зависимостей и модным хостбилдером.
>>1579091 а зачем ты ему помогаешь? я давно уже скрыл дауненка >>1578833 проигрываю со всяких маня ака C# 8.0 туплы, рекорды etc. Да вас на первой же работе посадят за легаси и вы забудите про все фичи и сахарок в первый день
>>1579098 Код неправильный показал: - лонг раринг таски в асп - плохая затея - где работа с сокетами? а там самое весёлое: ебля с портами, со стримами (это когда кусок сообщения обрезается, или слипаются сообщения, или всё вместе), с протоколом парсинга сообщений - ConcurrentQueue - плохой и медленный класс - ConcurrentQueue<(double, double)> - привет боксинг/анбоксинг и куча мусора в GC - нет поддержки горизонтального масштабирования - код обосрётся, если добавить базу данных И так далее...
>>1579098 >следовать всем этим солидам-хуелидам, SOA и прочему говну Вроде где-то в самом начале курса должны были сказать, что лепить бездумно эти все эти базворды в приложение, потому что стильно и молодежно - очень плохая идея. Хотя для курсоча сгодится, пофиг какую фигню вешать на уши преподавателю, правильно ведь говорят: не умеешь программировать, иди учить программировать.
>>1579101 > где работа с сокетами? Работа с сокетами на уровне хоста - там серверный сокет; И на уровне сессии. Там клиентский. Я решил что нафиг эти стиримы и использую Memory и передаю куски памяти хендлеру, не заметил проблем с таким вот решением. > ConcurrentQueue - плохой и медленный класс Понятно. Буду еще пилить свой потокобезопасный сортированный список. > лонг раринг таски в асп - плохая затея Почему? Хотя наверное понимаю почему. Как я понял там куча стейтмашин и всех этих эвейтеров создается. Поэтому? И если плохая, то получается лучше с потоками делать? Что тогда лучше - каждой сессии по потоку или пул потоков?
>>1579111 >Работа с сокетами на уровне хоста Ахахаха, так используй тогда нормальный WebAPI или HTTP, это тоже обертка над TCP. Зачем мозги ебать? Там тебе и лонг раннинг таски не нужны, и всякие Concurrent коллекции.
>не заметил проблем с таким вот решением Билли, где сокеты? >TCP-сервер в виде демона на сокетах >на сокетах
>Буду еще пилить свой потокобезопасный сортированный список. Зачем? Их в библиотеке дофига на все случаи жизни.
>И если плохая, то получается лучше с потоками делать? Обычное консольное приложение или библиотека, а не ASP.
>>1579113 Мне кажется у нас расхождение в терминах. Я под хостом в данном случае понимаю свою личную сущность, что запускается, биндится к порту который передан с конфигм(называю так, потому что в книгах что читал так называли и в примерах кода видел, конечно чаще видел Server, но мне кажется, что сервером лучше все в целом называть а не отдельный класс) и начинает ожидать входящие соединения, попутно ведя статистику полученного-отправленного, и имея торчащие наружу куски для управления подключенными сесиями, типа убить сессию по ID, почистить сессии которые долго ничего не присылали и которым ничего не отправляли, посмотреть список сессий и т.д. Тут как раз и есть серверный сокет, в конструкторе конфигом передаем порт на который биндиться, если порт занят - кидаем эксепшн, если не занят - биндимся и начинаем прием входящих соединений, рожаем клиентов и пихаем их в сессии. Под сессией - класс который занимается приемом-отправкой клиентских сообщенией. У каждой сессии - клиентский сокет. Вот и сокеты.
Никаких ASP я и не использовал. Я вроде как и не писал что использовал.
>Я под хостом в данном случае понимаю >TCP-сервер в виде демона на сокетах Ну~, я деталей задания не знаю. Но если в задании фигурирует слово "сокет", я бы ожидал, что студент будет ебаться с перекладыванием байтов на самом низком уровне (класс Socket или его производные). А не использовать абстракции более высокого уровня как в статье выше.
Задание покрывает самый обычный ASP.NET. Ведь, о боже, HTTP/2 - это тоже сокеты. Подключения, сессии и так далее уже реализовано из коробки.
Потом, для фоновых задач и коммуникации M$ рекомендует использовать gRPC, вместо почившего WCF, а не вот эту ересь, что ты пытаешься на коленке сделать.
Какой смысл делать так, как делаешь ты? Никакого: как все это работает на низком уровне ты так и не поймешь, как это пишут нормальные люди - тоже не поймешь, так не пишут - это велосипед. Тебе банально знаний и времени не хватит реализовать это правильно (про NAT уже почитал? а ведь это только айсберг). Потому делай так, как считаешь нужным, и вешай лапшу преподу при сдаче курсового.
Виват вкатившимся и работающим. Нужен ваш совет (ведь я знаю, что я по адресу). Пришло время осваивать JS (oh no), а учить чистый js как по мне как то зашкварненько после шарпов. Я поскролил учебник до середины и понял, что все интуитивно понятно (даже такие вещи, которые по мнение JS макак - что то на уровне Высоцкого или даже выше к примеру замыкания). Но не об этом вопрос. Какую библиотеку лучше всего поюзать? В вакансиях #-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 ну и базовый набор верстальщика (последнее не очень зашло). Спасибо за ответ.
>>1579142 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).
>>1579142 Забыл про Vue - что-то среднее между React и Angular. Больше ничего про него можно не знать из-за очень низкой популярности. При желании, все тонкости Vue изучаются за неделю, но это актуально пока не вышла новая версия Vue.
>>1579149 >замашки функционального программирования, которые могут сорвать мозг обычному обывателю 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 и наоборот, нужно все оборачивать в врапперы Ладно, я устал, тонкостей очень много. А видел такое не один раз.
>>1579140 > А не использовать абстракции более высокого уровня как в статье выше. Так я и не использовал их в готовом виде, блин. Создал пустой проект. Объявил интерфейс 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'ом и хочу чтобы сервер из него стартовал. Почему это не сервер на сокетах-то? Где тут какие-то высокие абстракции, кроме моих?
>>1579164 >Почему это не сервер на сокетах-то? Вот теперь я вижу сервер на сокетах. Вот только если ты изменяешь те две переменные из разных потоков, то у тебя это не будет работать на многоядерном процессоре в релизе - гуглится "memory barrier c#". И мне не видно как ты обрабатываешь сообщения. Я же сказал, что сообщения умеют обрезаться и склеиваться?
>Теперь я хочу это собрать в одну кучу с помощью внедрения зависимостей, чтобы модно-молодежно Напиши юнит тесты и попробуй покрыть 80%+ кода, если получится и у тебя не нарушается еще и DRY, значит правильно. Могу сразу сказать, что вижу нарушение SOLID. Внедрение зависимостей нужно для юнит тестов, а не для чистоты кода: код без внедрения выглядит читабельнее, но сложнее поддерживать.
>>1579164 Кстати, в диспозе сокета тоже есть особенности, например, надо обрывать сокет с параметром Both, иначе с другой стороны будет висеть мертвый сокет (не дернется метод Receive).
>>1579165 > И мне не видно как ты обрабатываешь сообщения У хендлера есть стейтмашина с двумя буфером, хендлер передает Action<ReadOnly<byte>>(можно конечно было бы событие использовать но я не люблю их использовать когда получатель только один предполагается), все что приходит добавляется в буффер, когда стейтмашина находит границы пакета она передает у часть у которой задетекчен конец пакета, через делегат, затем из этих байт с помощью обычной реализации конвеера обработки(постил тут пример своей реализации, по сути оказалось что за меня MS это давно придумали и назавали middleware, только у них это для каких-то других целей используется вроде) мы собираем уже нормальный класс сообщения, в котором вместо байт удобные для чтения поля-свойства. Там все опять же байтиками и оффсетами делано. Люблю я побайтойбствовать знаешь ли. >>1579170 Это я знаю. Метод StopReceiving как раз сначала пристреливает сокет в оба направления, потом закрывает его.
>>1579149 >чтобы быть востребованной фронтенд макакой я себя позиционирую как бэка, но в вакансиях везде нужен фронт, типо фул стэка (чуть более, чем во всех). Вот пример: — 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
>>1579160 мутно это все >>1579149 >>1579151 >>1579160 спасибо за ответы, для себя решил, что буду ковырять палкой React - концептуально мне нравится JS контейнеры для любого куска DOM элемента. Хотя как то это по дебильному блять - учи C#, знай ORB, знай принципы работы (тонкости), знай ООП, знай паттерны, знай ASP.NET MVC5/Core/WebApi. Когда вроде выныриваешь из всего этого, тебе еще под нос html+css+js+еще и блять фреймвок суют. Типо вот еще маст хев. А ну да, еще же ангельский, куда же без него. Пиздец короч
>>1579299 меня сам по себе фронт не очень цепляет - я когда пет на ASP.NET MVC делал, для меня View это был какой то пиздец. Там страница не тянется, там кнопка упала, тут футор не скролится. Мне ближе какие то архитектурные решения, ООП и т.д. спасибо за совет
>>1579381 всмысле зачем? А через что ты будешь к БД подключаться? LINQ - это язык запросов (Sql внутри #), а ты должен знать интерфейс взаимодействия с MsSql (хотя бы)
Столкнулся с неприятной проблемой: при использовании Assembly.Load() всегда возникает Exception file not found, при этом Assembly.LoadFrom() работает отлично. Кто-нибудь сталкивался с такой бедой?
>>1579426 Там есть вариант перезагрузки со строкой в параметрах, которая является названием сборки без расширения, которая находится в директории ./bin/debag/core3/app/
>>1579461 >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 от мелкософта - это тоже самое, что создавать самодельную педаль для велосипеда, когда продают уже в готовом виде. Если такой любитель велосипедов, то нахуя тебе драйвер? Пиши самописный драйвер от БД, к которой будешь обращаться, но на одной БД никогда дело не остановится
>>1579505 >эти ваши ORM Ну давай, пиши. Расскажешь потом, как твое говно будет работает быстрее спойлерю - твои навыки работы с ДБ через "драйвер" нужны чуть более, чуть нигде
>>1579570 >хитровыебанный отчет с этими хуитками манька так порвалась, что забыла определения? >на миллионнострочных таблицах это по твоему много? И что тебя так испугало, DENSE_RANK - расчетное поле в миллионной таблице?
Короче, вроде как дописал свой охуенный супер-пупер ТиСиПи сервер, завтра понесу преподу можете открывать шампанское, я больше тут не появлюсь. Как теперь проверить нормально? На локальной же машине не получится как раз все подводные камни потрогать с одной стороны, а с другой сокеты могут закончится же, если и клиент и сервер - на локалхосте висят.
>>1579230 Это нормально видеть жс в шарпе. Это или маленький проект, или распил бабла, т.е. на фулстеках пытаются экономить бабки: средняя вебмакака зарабатывает больше среднего бекендера или фулстека, фулстек зарабатывает ниже среднего мидла.
Я например вижу себя как фулстек: могу спокойно уволиться и найти работу на сеньёра-помидора онли в шарп, angular, angularjs, angular + angularjs, react или node. Так как уебал много времени и было много проектов разной свежести, чтобы все это говно хорошо выучить.
Лучше забить хер на такие вакансии или на собеседовании говорить, что типа "да знаю, но буду писать онли бек, или платите мне минимум х1.5 за жс". Т.е. зп от 4-5к как сеньёру, при этом быть со знанием мидла в каждой технологии.
Если мне не веришь, советую пообщаться с веб макаками. У них знать сразу реакт, ангулар и вью, все равно, что беку знать C#, Java, Python и переключаться между языками между проектами. Знают только одну технологию на фронтенде и только фронт, никаких беков на ноде, при этом зп 3-4к $. А hr, которые лезут со своим ангуларом к реакщику (или наоборот), вежливо посылают нахер.
Razor - поддержка легаси, где тебе не будут даже давать шанс сделать все по красоте. Застрянешь на допотопном фреймворке и будешь страдать от написанного до тебя кода, при этом получая упреки за низкую скорость работы. WebAPI + JS - это только старт нового проекта.
>>1579633 Потому что это тег "a" в html, где ты проперти класса Tovar передаешь через query string. Нехуя не передашь - будет пустой класс, асп под капотом разруливает это за тебя, используя рефлексию.
>>1579925 Я же имею ввиду как проверить на необычные случаи, типа той самой склейки пакетов. Не смогу же я из аудитории на домашнюю машину стучаться(потому что IP динамический плюс внутри сети провайдера, а тот большую часть пакетов просто фильтрует, опять же еще и вузовская сеть фильтрует пакеты)
>>1579939 >Я же имею ввиду как проверить на необычные случаи, типа той самой склейки пакетов. Интеграционные тесты, которые запускаются на 2+ машинах, где теми же thread/task слипами тестировать разные ситуации.
Можно эти тесты и на одной машине запускать, но это будут слишком синтетические тесты.
>я из аудитории на домашнюю машину стучаться VPN и вообще, достаточно занять 2 машины в аудитории, обычно все машины связаны по сети и есть выход в тырнет.
>>1579756 Хуй знает кто там твои протыклассники, я просто тебе в рот за компанию ссу. Твой любимый энтити фреймворк тоже требует драйвера бд, к слову, стажёр тупорылый
>>1579900 >Razor - поддержка легаси, где тебе не будут даже давать шанс сделать все по красоте. Застрянешь на допотопном фреймворке и будешь страдать от написанного до тебя кода, при этом получая упреки за низкую скорость работы. Хотя, фронт у таких проектов еще страшнее: ванильный жс, жквери и плагины жквери, работающие хуй пойми как. Там блядь страшно в тот жс лезть и что-то трогать, чтобы все нахер не сломалось.
>>1580009 >любимый >энтити фреймворк >стажёр тупорылый Хуй знает, как то зашкварно после такого вылезать из readonly. Я помнимаю, что тут сидят окатыши и студенты бурс, но блять иногда такую хуету несут. Один через LINQ к бд коннектиться, другой сам провайдеры к драйверу пишет "БЫСТРЕЕ ЧЕМ ЭТИ ВАШИ ORM", третий вообще какое то быдло не осиливший чтение. Сагану пожалуй, что еще делать
>>1579900 я может чего то не понимаю, но не будет ли им - Бэк+фронт? На Пыхах я знаю это нормальная практика, но как обычно что бэк, что фронт - это саппорт какого то говенного проекта или старючего легаси. Чувак знакомый (пхпшник) говорит - сидел на бенче, помогал .NETчикам (хз, что он там помогал правда), а так в порядке вещей что то на WP дописать, что то RANDOM_FRAMEWORK поковырять. Ну и говнище, этот веб
>>1580177 Нормальная практика - это когда есть разделение задач. А не бека заставляют писать фронт и наоборот. Всё остальное - попытки наебать на бабки.
На галерах, если хорошие отношения с прорабом, можешь попробовать спросить сколько за тебя платит заказчик и сравнить с тем, сколько ты получаешь. И не редкость, когда джунов/мидлов такие бодишопы продают как сеньеров, отдуваться все равно не прорабу надо. Или работают под чужими фамилиями.
>>1580189 вот про того пыхаря, за которого я писал берут $40/h. На руки платят 1.5к :) Вообщем я хуй знает, что это за вакансии такие в разделе .NET, где 80% required связана с JS
Как по нормальному можно переименовать корневую папку в проекте? Если я переименую, то все немспейсы останутся, приходится вручную всё переписывать. Через vs нажал на проект и переименовал, но папка осталась с тем же названием.
>>1580513 с той же хуйней сталкивался (спрашивал не так давно в этом треде) - пришлось ручками хуярить. Но вроде как через решарпер можно порешать, но я им не пользуюсь
Я недавно начал заниматься программированием. Какая есть команда перехода к определённой строчке? Например, у меня идёт 1. - ... 2. - ... 3. - ... 4. - ... 5. - ... 6. - ? Как перейти с 6 строчки к первой или к следующим? Нигде не нашёл
Сап /pr Каким образом вы освежаете в памяти прочитанную ранее информацию? Я к примеру давно (1-2 года назад) прочитал Шилда, Метанит, MSDN почитывал, но если меня прямо сейчас вызовут на собес - мало что вспомню, нужно хоть раз глазами пробежать. Перечитывать 1к страниц Шилда влень, какие еще есть варики за 1-2 дня освежить данные в голове?
>>1580576 >>1580713 >>1580786 >>1580788 switch case это ведь то же самое, что и оператор if, как понял? Только можно сделать goto к предыдущим разделениям?
>>1580826 >switch case это ведь то же самое, что и оператор if Принцип тот же - условие-действие >goto хуйня, которая никем и нигде не используется в ООП, она нужна функциональщикам. Забудь за нее.
>>1580971 Блядь, до чего же ты тупой. Exit это метка к которой скаканет goto. Пиздец, выросло поколение интерпразеров, базовые конструкции языка не знают
>>1580997 Кто ж знал, что ты долбоеб, который весь код программы в функцию Main суёт, еще и goto подправляет? Разбивай код на функции и классы, их как раз для этого придумали.
>>1580831 > хуйня, которая никем и нигде не используется в ООП Я использую в работе коменитрую каждый раз либо: "Узнаешь когда пройдешь", либо ")))". На самом деле оч удобно и жалко что нельзя в произвольные точки проекта прыгать, а только внутри области видимости.
>>1581012 >нельзя в произвольные точки проекта прыгать Вот, у меня есть в двух томах физически, все страницы стали желтые и разлезлась по швам. В конце книги есть листинги, где кунг-фу goto мастер написал игры, где как раз можно прыгать в произвольные места и вызывать асм.
>>1580976 Хуясе порвало >Блядь, до чего же ты тупой. ты вообще вкурсе, что твои два if нахуй в твоем говне не вперлись? Твое обоссаное goto (метка Т_Т) заменяется условными операторами. Покажи такую "метку" в интерпрайзе, тебя мочой пометят
>>1581030 Конечно порвало. Ты, блядь, синтаксиса языка базового не знаешь, а лезешь с советами к человеку который только учится и не поймет, что ты хуйло безмозглое и тебя слушать вредно. Вредитель как он есть, блядь.
>>1581055 Блядь, ты серьезно такой тупой? Притащил обычные функции как пример какого-то необычного синтаксиса. Небось в жизни unsafe код не писал и совсем в осадок выпадешь, когда в аргументах функции увидишь какой-нибудь int*, будешь судорожно гуглить, а потом подумаешь что в шарпе можно куски сишного кода вставлять. Боюсь спорсить, ты хоть знаешь что '<<' делает? Небось при этом из адептов "ВУЗы не нужны! Можно по метаниту выучится!"
>>1581064 >ВУЗы не нужны! Ну почему же, я умею в опенмп благодаря вузу. Впрочем, когда только вышел с++14, почитал луну и захерачил домик не в лоуполи с анимацией открытия/закрытия дверки по клику, динамическим освещением, тенями и свободной камерой на винфоне 8 в стабильные 60 фпс за полдня.
>>1581047 кста да, 2 года пишу на решетках, первый раз синтаксис goto увидел, т.к. сразу скипаю, когда вижу эту операцию >а лезешь с советами к человеку который только учится сразу написал за switch, goto лучше и не знать >что ты хуйло безмозглое и тебя слушать вредно. Вредитель как он есть, блядь. такой токсик пиздец, это не ты случайно провайдеры к JDBC писал?
>>1581266 Думаю, они goto оставили просто как винтажный экспонат, видимо дядюшка Гейтс вспоминал те времена, когда впервые сделал шаг к богатству, написав интерпретатор бейсика для альтаира. Иначе непонятно, зачем они до сих пор тянут VB ради офиса гыы, пайтон же нельзя прикрутить к ворлду, сложна.
>>1581269 Тащемта, встроенный в офис VBA к VB.NET из VS имеет мало отношения, кроме синтаксиса. К VB6 имеет, но кто сейчас помнит про VB6? Поэтому, думаю, что тянут исключительно ради обратной совместимости дохуилиона уже написанных скриптов.
>>1581273 Конечно. И в Office 365 онлайновом - тоже VBA. Вот какой язык надо было выбирать, как писали на нём в 1995, так и в 2020 продолжают.
>>1581276 > VB6 - это не VBA Я знаю, просто имел ввиду то, что к дотнетной херовине с VB-подобным синтаксисом VBA имеет ещё меньше отношения, чем к VB6.
Привет анон. Подскажи пожалуйста, почему может не работать программа после сборки через ilasm ? Т.е. я сперва делаю ildasm sample.exe Потом делаю ilasm sample.il Но программа не запускается, хотя ошибок не выдает при сборке
>>1581372 ++ как и C - пожалуй исключение из правил. Есть еще ряд языков, которые как и ++, с - не пользуються большим спросом и находятся в нише Non-Web. Но рыночек все решает. Завтра будет прорыв связанный с Desktop (к примеру) все быстро перекочуют на него. Я когда начинал с решеток тоже надеялся, что не буду в вебе, но получилось так, что убил двух зайцев (и повезло)
Виват бывалым. У меня проблема, нужен совет по ее решению. Я пишу (довольно продолжительный период времени) всякие pet-project-ы. Недавно взялся за .NET Core и решил не смотреть в сторону Razor-view, а слепить через WebApi (спасибо анонам из постов выше, которые растолковали по этому вопросу). Не буду долго размусоливать, вообщем выбрал ReactJS для визуализации приложения и тут началась проблема. Я раньше когда писал на ASP.NET MVC - для меня View это был страх и ужас. Html+Css я когда то, что то читал, интуитивно разобрался как и что сделать. Но вот адаптивный макет - это был страх и ужас, поэтому Front - для меня был просто страх и ужас. Но когда я начал читать документацию по ReactJS - у меня почему то привстал. Все эти контейнеры, легкий рендеринг, Babel, сборочка Webpack-ом. MMMMM, кайф. Обычно после работы, когда возвращаюсь домой я падаю в кресло и начинаю смотреть всякие смешнявочки на ютубе, а тут начал смотреть "Get started ReactJS". В какой то момент я понял, что со мной что то не так, схватил CLR via C# Рихтера и начал читать громко и вслух первую главу про манифесты и сборки, молясь чтобы отпустило. Когда начал вспоминать все то, что было затерто временем по решеткам, мысли про React немного усели. Но утром повторилось тоже самое. Не знаю теперь что делать. Помогите советом.
Что есть хорошего-годного почитать по архитектуре клиент-серверных приложений, если приложение не ограничивается : принял запрос - послал ответ, попутно записал что-то в БД?
>>1581882 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 считается плохим тоном? Это же пиздец какая удобная штука, лепить конечно ее не стоит куда попало но иногда она очень облегчает задачу. Вот к примеру чек на символ, с 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("Правильный символ ");
>>1582054 Вот это сложно пиздец для меня, я делаю парсер подсказок для гугла и чета ваще не врубаюсь куда что писать, просто делаю портянку кода, а потом на следующий день хуй помню что там ваще и как работает(((
>>1582058 Ну не из за него я не помню) Я раньше делал програмки в ZennoPoster, а сейчас решил перекатится полностью в C#. А в зинке там все табличками для даунов, и стрелочками. Пикрил корочи
Console.WriteLine("Введите символ на Английском языке:"); char ch = Console.ReadKey().KeyChar; while (!char.IsLetter(ch) || ch > 0x7f) { Console.WriteLine("Хуйню ввел, попробуй еще разок "); ch = Console.ReadKey().KeyChar; } Console.WriteLine("Правильный символ ");
>>1582047 Потому что один хуй в древние времена, когда с goto можно было в любое место прыгать, сказал что получается "спагети код", т.к. этот хуй был вроде как уважаем в то время, многие его послушали причем для тех времен это было вполне валидно. Сейчас, когда goto в 99% нормальных языков ограничивается областью видимости, не используют goto просто потому что ебланы тупые без капли своих мозгов, ведь в середине прошлого века, когда даже IDE не было, один хуй сказал, а раз сказал, давайте в куче вложенных циклов делать метки, давайте для каждого случая пилить стейтмашину и т.д. лишь бы без goto, ведь стейтмашина на 200 строк это намного понятнее и удобнее, сразу посмотрел и понял, не то что if(zalupa) goto Pizda; По факту, сейчас любой проект без goto и так спагети код. Ты никогда не читаешь его сверху вниз из-за того что все давно перешли на ООП, а компиляторы умеют разбирать код в любом порядке, а не как в какой-нибудь сишечке, где если ты не объявил сверху, то все, пизда, код не откомпилируется, беги в правильном порядке объявления расставлять; он(код проекта) всегда разбит на неймспейсы, файлы, модули и тебе в любом случае придется прыгать по всему коду и пара goto внутри скопа никак не усложняет тебе жизнь.
>>1582442 Нет, не поэтому. А как раз из-за >>1582047 таких долбоебов никто не рекомендует использовать goto. Эти долбоебы видят goto и начинают лепить там, где он совсем не нужен, превращая свой код в говно.
>>1582458 > А как раз из-за >>1582047 таких долбоебов никто не рекомендует использовать goto. Эти долбоебы видят goto и начинают лепить там, где он совсем не нужен, превращая свой код в говно. А что, ты скажешь что решение >>1582071 лучше?
>>1582442 >Потому что один хуй в древние времена Может стоит хотя бы понять, почему его послушали? И с появлением структурного программирования, начиная со всяких оберонов/паскалей, нашли и доказали минимальный набор конструкций языка, который полностью исключает необходимость использовать goto. Он остался как наследие, с целью поддержать обратную совместимость с уже написанным кодом.
>когда goto в 99% нормальных языков ограничивается областью видимости В новых языках нет goto. Даже в расте нет. Наличие goto в новых языках - признак некомпетентности проектировщика (привет голенгу и долбаебам, которые на него дрочат, воистину язык макак для макак).
>когда с goto можно было в любое место прыгать Охуеть блядь. Ты имел дело с такими программами? Я имел такие программы в рот - ведь так охуенно прягать из середины огромного листинга в начало, а потом в конец. Особенно когда метка только в виде числа. Ведь я, блядь, сплю и вижу как охуенно скроллить километровый листинг туда-сюда, имитируя дрочку. И раз ты такой охуенный, тебе шарп не мешает хуярить все в один метод и использовать goto, нашел проблему в скоупе, ха.
>не используют goto просто потому что ебланы тупые без капли своих мозгов Он оправдан только если: - ты у мамы херов оптимизатор, и то ЕСЛИ ты умнее компилятора, который постоянно меняется, в чем я очень сомневаюсь - автогенерация кода - в языке нет конструкций, которые позволяют сделать тоже самое без goto, например в асме
>давайте для каждого случая пилить стейтмашину То-то сегодняшние популярные подходы на хую вертели стейтмашины в пользу неизменяемых структур, потому что код стало проще отлаживать. Хотя откуда тебе знать? Ты у нас хуев оптимизатор, который оптимизирует код, который вообще может на производительность не влиять в силу распределенности системы и издержек коммуникации.
>давайте в куче вложенных циклов делать метки Сколько видел проектов, очень редко больше 1 цикла, почти никогда, а видел дохуя проектов на разных языках, любой степени уебищности.
>По факту, сейчас любой проект без goto и так спагети код Нехуя, поскольку это зависит от кривых рук того, кто этот код написал: в продуманном коде тебе не надо лезть в реализацию, а в продуманном языке тебя компилятор еще и палкой бьет, если хуйню напишешь при использовании. Всякие объекты, функции были придуманы для сокрытия реализации, чтобы ты, тупая макака, с нижнего уровня поднималась на уровень выше (или сверху вниз) в манипуляциях между абстракциями. Т.е. не фор в 50 строк, который делает хуй пойми что, а функция "найти сумму логарифмов" в одну строку. Улавливаешь разницу, макака?
>все давно перешли на ООП Я понимаю, ограниченность ума сказывается, но есть еще кое-что отличное от ООП, что практикуют.
>тебе в любом случае придется прыгать по всему коду Попрыгай мне по сторонней библиотеке без исходников. Или ты у нас мамкин-все-свое-написатель?
>пара goto внутри скопа никак не усложняет тебе жизнь Есть положительный момент: открываешь код, видишь goto, понимаешь умственные способности автора, закрываешь код. 200 строк у него, блядь.
>>1582524 >Так и не только я скажу. Нарушение 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!).
>>1583021 Массив map по дефолту весь false, это не плюсы. В свиче какая-то ересь. Массив map не нужен, возвращаешь true, если длина walk равна 10, x = 4, y = 4.
>>1583030 >Массив map по дефолту весь false Спасибо. >В свиче какая-то ересь. Я уже увидел, я не менял х, у. >возвращаешь true, если длина walk равна 10, x = 4, y = 4 Ты точно читал задание? >>1583034 >что n - это север, а у тебя запад Схуяли у меня запад? Ты перевернутую карту смотришь?
>>1583038 >должен через 10 шагов оказаться там, откуда начал Да и шагов тоже должно быть именно 10. >Или у тебя x - это движение по вертикале? Ахаха. Ты толстишь или ты тупой? Алсо я уже его сделал, там все было правильно, просто я проебался и не сохранял изменения в координатах.
>>1583042 >пик 1 Ну а я что написал? Выведи в сонсоле массив 10 на 10 и походи по нему в разные стороны. >очень легко подобрать сет правильных ответов даже не решая задачу Задачи и нужно решать чтобы они откладывались в голове. Просто просмотр правильных ответов практически не делает тебя умнее. >пик 2 Я и не говорю что я пиздато написал, да на пике решение намного лучше.
Безопасно/надёжно ли проводить аутентификацию по сертификату, что берётся из Request.ClientCertificate в контроллере путём сверки пришедшего отпечатка с теми, что хранятся в БД, при условии, что реквест приходит только по https? Возможно ли просто подделать реквест и подложить произвольное значение отпечатка?
Может пора перекатиться? А то пришлось минуту скроллить до сюда.
Привет, аноны. Такая дилема. Год назад перекатился в программирование, уже год успешно работаю (очень нравится в сравнении с предыдущей специальностью юриспруденцией), но на старом фреймворке, бэк которого на шарпе, а фронт на JS. В этом году планирую сделать шаг вперёд, задача-минимум: писать на бэк на asp.net, фронт на react.
Но есть альтернатива: Unity3d, хочу попробовать себя в геймдеве. Дело в том, что моя жена хочет перекатиться в 3d-моделирование, Zbrush, Blender, вот это всё. Сможем вместе погружаться в эту тему. Но я боюсь, что в геймдеве спрос меньше, больше кранчей, всё такое.
Поясните за Migration в либе, когда нет StartUp. Все сущности, DbContext - находится в отдельной BLL сборке, которую нужно использовать по цепочке в другую либу, а уже потом в ASP.NET Core. Как такое сделать? Проблемы у меня в следующем: В той самой либе с 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. Что я делаю не так?
>>1583161 Я им и пользуюсь. У меня проблема в том, что мне аутентификацию по сертификату нужно прикрутить только к одному контроллеру, а в остальных - аутентификация по паролю или winauth. А по твоей ссылке вроде глобальное решение, но я еще почитаю тщательнее
>>1583237 >добавлять в services этот контекст. Но блять, у меня же либа, какой тут нахуй StartUp. services.AddDbContext<MyDbContext>(options => options.UseSqlServer(myConnectionString));
Или ты заворачиваешь в промежуточной либе контекст в враппер и намерен его использовать?
>>1583241 бля, вот я дебил >>1583276 >в промежуточной либе контекст в враппер без враппера, просто сборка отдельная с 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 (юзера) и базы данных. Что я делаю не так?
>>1583309 >просто сборка отдельная с Entities и соответственно с DbContext (разделение, так сказать) Зачем? Почему тогда каждый класс в отдельную сборку не запихнешь? >Что я делаю не так? Наворачиваешь все эти нахуй не нужные UOW и репозитории. Плодишь сущности просто потому что какие то индусы на юдеми тебе затирали про то, как паттерны это охуенно и давай мы сейчас вместо ста строк кода сделаем тысячу, которые будут делать ровно то же самое. В EF core бизнес логику обычно держат в сервисах, которые через DI запихивают в контроллеры.
А по поводу миграций - оно всё должно работать так: В Startup'е веб приложения добавляешь services.AddDbContext и подкидываешь свой контекст. В самом контексте добавляешь конструктор с DbContextCreateOptions и сразу :base(options), сам конструктор пустой.
Потом открываешь nuget консоль через alt - v - e - o и вбиваешь ADd-Migration. Всё должно работать.
>>1583337 >Зачем? Почему тогда каждый класс в отдельную сборку не запихнешь? Алсо тут тоже проебался, думал ты DbContext в отдельном от классов модели проекте хранишь.
>>1583353 Так. А репозитории и uow тут причем? Ты предполагаешь переезд с EF на другую ОРМ? asp.net имеет свои гайдлайны, чтобы ты таким не заморачивался - инжектируемые сервисы. Классы сервисов храни пожалуйста в отдельном проекте, но репозитории с uow ты сам знаешь зачем тебе?
>>1583364 >uow ты сам знаешь зачем тебе? Враппер всех сущностей. Разве нет? Я нашел решение, не знаю подойдет ли - из либы сделать обычный проект и кинуть через него reference к либе BLL и дальше в Web UI.
>>1583375 >Какую проблему ты решаешь этим? Собираю в пучек все сущности и могу легко маннипулировать ими через добавление 1 интерфейса в конструктор. >>1577042 - это мой пост, когда то спрашивал. Разве так не удобнее, чем каждый раз жонглировать разными контекстами? Энивей, пересоздавать DAL, как Core проект, а не либа - это гемор пиздец. Может есть всетки другие способы реализации? Или же можно превратить библиотеку в ASP.NET Core project?
>>1583382 >Собираю в пучек все сущности и могу легко маннипулировать ими через добавление 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 или как то так, за этим подробнее в гугл, но это точно можно сделать и это точно легко гуглится
Вкатился пару месяцев назад, вопрос можно ли в консоль вывести сразу все значения массива, а не по одному через цикл? И ещё вопрос в чем проблема, почему нельзя так вывести минимальное и максимально значение?
>>1583388 >Какая разница У меня условно есть 4 сущности - склад, финансы, доходы и персонал. Я буду передавать по цепочке или 4 отдельно сущности или 1, как враппер >В конструктор контроллера? Да, забыл добавить >На одну БД один контекст У меня в UI уже есть один контекст для аутентификации, туда же нужно запихнуть еще один - для логики в ту же БД >быть обычной .net standard library. ты имеешь ввиду Class library .net core? Так там нет StartUp, куда service добавлять? Спасибо за ответы
Как правильно обрабатывать запросы кестрелом? Вот типа я решил что буду им получать не HTTP, а что-то еще. Я добавил свой ConnectionHandler, переопределил метод OnConnectedAsync там цикл который читает байтики из ConnectionContext. Я создаю асинхронный метод, что обрабатывает эти байтики формирует из них объект сообщения в котором содержится информация которую я прочитал. Что делать дальше? И вообще должен ли я в этом классе сообщения хранить ConnectionContext из которого читал байтики, чтобы отправлять ответ или это не правильно? Да, еще, как обрабатывать ситуацию, когда мне отправляют не то что я ожидаю получить?
>>1583407 >Каво? Куда? Что ты собираешься таким образом передавать? Цепочка такова - DAL - Передает базовый функционал (CRUD) для работы с БД. Далее - BLL - используя уровень DAL делает всяческого рода проверки - Занесли накладную, количество должно быть больше 0 (типо такого). Далее - Web UI (ASP.NET Core app) - используя BLL передает в контроллер инкапсулируемые бизнес процессы (чтобы контроллер не раздувать и не передавать по 4 контекста). Но не в этом вопрос был. >Зачем им там в проекте свой StartUp? Для миграции с БД. DAL уровень должен быть нижней прослойкой для работы с базой данных.
Привет товарищи. Делаю задания по шарпам и вот охуел на одном моменте уже второй день не могу понять в чем соль.
Нужно :Создать программу, которая ищет в указанном каталоге файлы, удовлетворяющие заданной маске, и дата последней модификации которых находится в указанном диапазоне. Поиск производится как в указанном каталоге, так и в его подкаталогах. Результаты поиска сбрасываются в файл отчета.(это все задание)
В общем вроде понятно что делать. Но вот одно но не могу проверить все папки в подпапках что то залип есть кусок кода и там вроде все норм но выдает Exeption подскажите что за херня и как боротся. Таску решать не надо только подсказать с рекурсией где у меня пиздец. Что не так указал весь путь должен E:\Testing\gg\th получается последнюю папку не видит
Что там можно, а что нельзя делать на общедоступном сервере?
Можно: 1. Можно постить и подтверждать посты каптчёй, прямо на сервер, заходя по onion-адресу. 2. Можно репортить другие, чужие посты (например вайп), с указанием причины, как здесь. 3. Можно удалять посты локально (для себя) и/или скрывать их (хэш прописывается в LocalStorage). 4. Можно генерировать PNG-контейнеры и паковать посты туда (как случайные, так и избранные). При этом, для постинга контейнера, должна бы выдаваться только одна ссылка лишь на один из тредов из списка.
Нельзя: 1. Нельзя запускать collect PNG c тредов на других бордах, чтобы не было DDoS'a. 2. Нельзя изменять треды в настройках, а лучше даже не видеть их, а получать одну ссылку, когда сгенерирован контейнер. Лучше вообще не видеть настройки и не иметь доступ к ним. 3. Нельзя получать доступ к основному серверу по API и дёргать его за методы, окольным путём.
Не знаю что ещё добавить, что убрать, как бы сделать это оптимальным, код открытый и свободный, в общем гляньте сами. В идеале, хотелось бы перепилить всё это на p2p-борду без мочерации, так как FreeNet не могу запустить на Windows XP.
>>1583806 Жирнота какая. 1. Наноборд карасика - Scala 2. Где сорсы Garlic? Зачем тут кому то запакованная в exe сборка? 3. >но это не то. Почему не то? Уже запилили твою идею, ты хочешь переписать под .NET? Возвращаемся к пункту 2. 4. p2p freenet - ага, уже запилил свою борду с блекджеком и запрещенным проном 5. >код открытый и свободный Это толстота уровня /pr/? I didn't get...
>>1583806 Дополню >>1583964 Я когда жирнил с толпами вкатышей - моча сразу бан отписала, тут же челик хочет в онионе борду без цензуры поднять и кидает гит с экзешником типо - "А ну глянь, что там" - пост висит пол дня. Logic?
>>1583964 >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... Это значит, что код открытый и свободный, в отличие от копирастических хуйней патентованных. >>1583967 Не нравится идея - просто скрой и нахуй иди. Или будешь репортить, чтоб удалили скорее, да, подсос мочерской? Мочерация - явление дегенеративное, так как препятствует протеканию конструктивных дискуссий научных, ИМХО, это явление должно быть исключено в принципе, так как цензура и мочерация нарушает основополагающие права человека, в частности статью 19 "Всеобщей декларации ООН о правах человека": https://www.un.org/ru/documents/decl_conv/declarations/declhr.shtml >Статья 19 >Каждый человек имеет право на свободу убеждений и на свободное выражение их; >это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, >получать и распространять информацию и идеи любыми средствами >и независимо от государственных границ.
Именно поэтому, мудрый анон валит в дарквебы и пилит решения, гарантирующие СВОБОДНОЕ ОБЩЕНИЕ, вместо того, чтобы сидеть в ссанине с ублюдочной и невменяемой мочерацией.
>>1584356 1. В геттерах и сеттерах можно прописывать дополнительную логику. 2. Нормальные программисты создают отдельный класс-валидатор. Говнокодеры прописывают валидацию в геттерах/сеттерах или в конструкторе.
>>1555702 (OP) Как запустить одновременно два разных HTTPServer'a два привязанных к ним TCPServer'a на разных портах, и начать их прослушку? Дело в том, что при запуске сервера создаётся новый экземпляр HTTPServer'a, внутри метода создаётся новый экземляр TCPServer'a, и прослушка происходит в цикле только для одного сервера, а для второго не происходит, пока цикл не закончится, то есть пока первый сервер не вырубится.
>>1583806 >Предлагаю шарпистам помочь допилить в НАНОБОРДЕ: https://github.com/username1565/nanoboard >сервер для хостинга наноборды в TOR'e. Блядь, там столько notif'ов пиздует. Тебя задудосят нахуй запросами, даже через TOR. Ты Long Polling ещё не запилил?
Всем снова здравствуйте. Я говорил что вы больше меня не увидите. Видимо немного соврал. В общем, я защитил все дела, преподу понравилось, но в процессе защиты произошел маленький обосрамс: Сервер я делал полностью на async, так вот, там был отдельный HttpListener, который нужен был чтобы небольшой интерфейс в браузере отобразить. Ну вот в чем и проблема, когда я запустил перед преподом программку которая эмулировала кучу обращений на регистрацию, регистрация-то шла, но из-за большого числа клиентов(я сразу ебанул 100к обращений единовременно, куча посыпались из-за того что портов не хватило либо истекало время ожидания ответа, из тех кого успел принять за 10 секунд только 1к зарегистрировались) мой запрос из браузера пару раз получал таймаут и только когда я закрыл эмуляцию и все кто успели зарегистрировались удалось отрисовать табличку зарегистрированных. Собственно в чем вопрос: Как этого избежать-то? Типа как я понимаю, это что-то с потоками связанное, но не совсем понимаю как оно должно работать. Если бы я в классе WebInterface, запихнул Thread и потом после старта приложения, в этот Thread запихнул бы прием и асинхронную обработку HTTP запросов, это было бы нормально и тогда бы не было того обосрамса? Или таки был-бы? Может кому-то не сложно на пальцах объяснить?
>>1584503 >https://ru.wikipedia.org/wiki/Список_портов_TCP_и_UDP >Количество портов ограничено с учётом 16-битной адресации (2^16=65536, начало — «0»). >Все порты разделены на три диапазона — общеизвестные (или системные, 0—1023), >зарегистрированные (или пользовательские, 1024—49151) >и динамические (или частные, 49152—65535). Ты же ебанул 100к регистраций сразу на одной машине, и ещё удивляешься тому что куча запросов пошла на разных портах? Ты просто заDDoSил машину с клиентами. >либо истекало время ожидания ответа Гугли Long Pooling. Там что-то вроде стека формируется на сервере, и запросы стают в очередь, и повисают, пока сервер не ответит.
предположим у меня есть как-нибудь деятельность, например тест, при загрузки страницы я устанавливаю дату начала теста, как теперь сделать постоянную ежесекундную проверку что бы когда пройдет ровно 60 минут пользователя переадресовало на другую странницу?
>>1584813 Тогда у твоего теста должен быть уникальный номер сессии, который ты передаешь клиенту при начале теста? Тогда тебе на серверной части надо хранить структуру из
Test { TestID: GUID; TestStartDate: DateTime; TestExpires: DateTime; }
при загрузке страницы теста находи в массиве тестов или в базе данных этот тест, и устанавливай редирект через число секунд, которое осталось до TestExpires. Если хочешь проверку по интервалу - тебе нужен ScriptManager и Ajax UpdatePanel, с обновлением по таймеру.
>>1584816 Но это не база данных. Представь себе 3 функции, запускаемые в зависимости от выбранного значения в dropdown list. Их не устраивает if, нужен другой метод. Видимо, намёк на паттерн, вроде strategy pattern, или ещё какую-то хуйню с созданием объекта. Это вопрос собеседования, к слову, а не практическая задача.
>>1584821 dropdown list это лист, по отношении к нему можно юзать where результат тот же? тот же! ифы используются? нет, условия полностью выполнены? да! а если они иммели ввиду что нибуть другое то это уже их косяк, ты получил задачу и ее выполнил согласно условиям
>>1584872 Там всего три вопроса, и можно отослать ответ хоть завтра, хоть послезавтра. Но это и правильно, в конце концов так погромист может показать, на что он способен. На два вопроса я ответил, но здесь я тупо не понимаю что от меня хотят.
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();
>>1584931 Ты пытаешься неявно присвоить наллабл значение не наллабл переменной. либо объяви end_time как DateTime?, либо присваивай какое-то значение по умолчанию, если game.end_date == null.
>>1584523 > Ты же ебанул 100к регистраций сразу на одной машине, и ещё удивляешься тому что куча запросов пошла на разных портах? Про число портов я знаю. Я просто надеялся что оно быстро работать будет же. Думал хотя бы 10к успеет принять-обработать-зарегистрировать и послать ответ. Дома больше соединений успевал обработать. Вот. > Гугли Long Pooling Погуглил. Спасибо. Хотя я сам что-то подобное придумывал но потом отказался от идеи т.к. думал что и так должно работать нормально будет.
>>1585036 Блядь, оказывается индексатор в словарях умеет создавать новый элемент? Лол. Я думал тут как с массивом, типа если попробуешь обратиться по ключу, которого нет, выкинет эксепшни. Пиздец, 3й год работаю дотнетчиком и каждый раз пользовался Add(key, value).
>>1585035 >>1585036 То есть всё работает? Тогда зачем надо было пиздеть, что не работает? Вне зависимости от кастинга, MSIL будет одинаковым. Так что нахуй.
может кто помочь? нужно вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач до 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)
Есть тут кто работает бекенд разрабом на удаленке? Расскажите свою хистори, как нашли первую работу, держитесь ли за свое место, что будите делать если уволят? пхп пидоры проходят мимо, вопрос не вам
>>1585632 >закончил читать C# 4.0 долго ты что то читал >уже могу рассчитывать на работу да, в пятерочку грузчики нужны, с твоими знаниями к ним >>1585638 >пхп пидоры ты охуел мразь? Пыха решеткам на голову ссыт
Везде пишут, что ASP.Net сверх популярен и крут, может ли знающий анон отписать тут про хотя-бы пару крутых и широко известных проектов, бэк которых был написан с использованием ASP.Net. Не поймите неправильно, я без наезда, просто сам пытался гуглить, но ничего не нашел, что очень странно.
>>1585893 >Антоны на месте >Я установил Монодевелоп на Линукс а я JVM в стиралку >Какую книгу взять Таненбаума, Кнута >Можно Троелсена? Что за ноунейм? >Кто пишет на линуксе? люди
>>1585903 >а я JVM в стиралку Ты считаешь, что писать в Линукс на Шарпе это порнография? >Таненбаума, Кнута Знаю про них. Танненбаум в смысле ОС, Архитектуры или Сетей? >Кто пишет на линуксе? >люди что ты хотел этим сказать?
Шарпаны, такой вопрос, сделал свой менеджер паролей, потому что не доверяю всяким пидорам, которые предлагают свои услуги. Так вот, программочка маленькая-консольная на неткоре, без всяких автовводов, просто указываешь логин и название сайте-приложения где пароль нужен, программка его дает, но меня заебывает каждый раз после перезагрузки винды и линупса включать ее, вводить логин-пароль и это все. Я подумал о том, чтобы она была демоном из-за того что демон - охуенно звучит, ну серьезно, моя программа - ебучий демон из ада, классно же. И я чет погуглил-погуглил, для винды есть возможность прикрутить к какую-то херовину, но это какой-то хостбилдер надо использовать, для линупса какой-то системд, что это вообще такое? Может быть можно как-то без них это все организовать, чтобы просто загрузился мой дебиан и оно само включилось, как-то проверило что я один раз уже вошел и сразу заработало?
>>1555702 (OP) Есть Dictionary с комментами для картинок: >var comments = new Dictionary<string, List<strings>>(); //hash картинки, список с комментами. Задача, отсортировать его по количеству комментов в списках. КАК?
>>1585984 Спасибо, работает. С типами разобрался уже, и привёл результат c с типа OrderedEnumerable - снова к Dictionary. А то там разные типы. Вот тут - наглядно: https://rextester.com/YDIGVV28057
сап, архитекторы, помогите недоджуну, вот у нас есть программный стек, везде говорится, что в верхнем фрейме хранятся именно локальные переменные метода, но что насчёт атрибутов класса, в котором этот метод определён? к ним можно получить доступ прямо из метода, не передавая их в качестве параметров, получается, они тоже хранятся в верхнем фрейме?
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: https://pastebin.com/YJFQKsNm
Прошлый тред тонет здесь: