3. WinForms или WPF? Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить? Неправда. C# активно развивается, недавно вышел .NET 5 и С# 9.0. Дотнет стал полностью опенсорсным и кроссплатформенным. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую IDE выбрать? Для Windows самым очевидным вариантом будет Visual Studio ( https://visualstudio.microsoft.com/ru/downloads/ ). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрайз эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений. Кроссплатформенный полуредактор/полуIDE VS Code ( https://code.visualstudio.com/ ). Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана. Также можете взглянуть на кроссплатформенную IDE Rider.
7. Дополнительные инструменты для разработки на C# LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а dotPeek - бесплатный декомпилятор от JetBrains scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
9. Что почитать? - The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода. - C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет. - C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой - Pro C# 8 with .NET Core 3 (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха. - C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал - CLR via C# (Jeffrey Richter) - это классика, это знать надо. - C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. - Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.
11. Хочу еще хардкорней - C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. - Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. - .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF Из более-менее актуального можно выделить пару книг: - Pro WPF 4.5 in C# (Matthew MacDonald) - Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET - Pro ASP.NET Core 3 (Adam Freeman) - Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson) - 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
Хм. Я вот долго думал-думал и вот что придумал(прикриплейд). В общем, что думаете? Зачем придумал? Ну, типа я столкнулся с тем что со всей этой DI дрисней довольно сложно использовать события обычные. Идея в чем: делаем синглтоны INotifier'ов, затем Scoped и Transient объекты получают этого INotifier в конструкторе, делают свои штуки грязные, и когда надо - пингуют методом Notify, те кому это надо - слушают и что-то там делают. Они(слушатели), так же получают этот INotifier в конструкторе, подписываются, в деструкторе - отписываемся. Какие подводные камни? Вообще, я не придумал опять велосипед? А то я это, книг не читаю, только справку по языку на сайте МС читал. Ну и меня очень огорчало что с событиями в современных реалиях очень грустно, а мне так нравились события. Вот, посидев, подумав, придумал такое вот решение. Может быть есть что-то лучше?
Шарпач, как с помощью рефлексии правильно запустить приватный метод из приватного объекта приватного вложенного типа? https://pastebin.com/7k7w8Ujd
Public pub = new Public(); //добываю тип Type hiddenType = typeof(Public).GetNestedType("Nested", BindingFlags.Instance | BindingFlags.NonPublic); //добываю метод MethodInfo hiddenMethod = hiddenType.GetMethod("GetMe", BindingFlags.Instance | BindingFlags.NonPublic); //но как добытое поле привести object hiddenFiled = typeof(MPCharCtrl).GetField("nestedInstance", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(pub); //инвокаю hiddenMethod.Invoke(hiddenFiled, null);
Вот так решил проблему, есть ли более лаконичный вариант?
>>1870619 Прикольно. Только хз подходит ли оно мне. Ну, просто, допустим вот такой вот сценарий. У меня есть апи-контроллер. На этапе разработки я хочу логгировать всякие обращения в этом контроллере, но после того как закончится разработка - это уже не надо будет, а нужно будет что-то другое, например, трафик по разным API чтобы знать где у нас больше всего обращений, чтобы как-то в будущем оптимизировать это все. Так вот, я не хочу передавать логгер напрямую в какой-то контроллер и штуку для подсчета трафика, я бы хотел просто их написать, и чтобы они своими делами сами занимались когда в контроллере происходит событие. В примере я не понимаю как это будет происходить, может быть я просто тупой. В моем решении - лично мне - все понятно, я сделал нужный мне INotifier, сделал слушателей, передаю в контроллер инстанс этого INotifier'а, он пингует, слушатели тоже получают инстанс и делают свои штуки когда получат уведомление.
>>1870604 >что со всей этой DI дрисней довольно сложно использовать события обычные. не совсем верно. Просто внедрив DI jни используются точно так же. Ведь в базисе IoC просто автофабрика Либо обычные события, либо всякие *Listener/Subsciber/Receiver<T> и Subscribe(this) Разница в том, что все, на что нужно подписаться, теперь должно быть по хорошему просунуто в конструктор, а не мы сами за ними ходим. Но и это не проблема, ведь IoC все это сам прокинет за нас.
И если ты считаешь так же, то тогда обычные события и будут доставлять проблем. И вынудят использовать Listener/Subsciber/Receiver<T> (если сам их еще не ввел учитывая побочки обычных событий даже без DI)
Но это решит только момент "подписываемся в конструкторе и отписываемся в диспозере" (не вижу чтобы это решало "нужно подписаться отписаться много раз за время жизни компонента). К тому же раз мы не можем отписаться в диспозере, то тот, кто нас подписал, обязан знать наше время жизни чтобы отписать. А это не вкрутить, если не использовать концепцию lifetime (скоупы в IoC, либо явные lifetime)
Аноны, переговорил с босом на работе, и решил таки перекатываться на MVC (на мой страх и риск), И ТУТ я сразу же словил маслину в задницу, при попытке юзнать создание вида посредством автогенерации (addView) получаю пикрил, я вообще не понимаю чего оно хочет, проект абсолютно пустой и дефолтный за одним исключением, в работе мы используем devexpress, собственно есть подозрения на него, но я не знаю как это фиксить,
Этот пост самое близкое что мне удалось найти по этой теме, но я не понял как он это решил, я не нашел никакого Web Development Tools про который он мог говорить
>>1871178 есть собственно тот самый контроллер на который он ругается, вся соль в том что когда создаешь представление разве создается новый контролер с таким же названием? это же бред
>>1871178 Есть еще одна странность, тот чувак писал что теперь работает обычное представление и представление с devExpress, у меня же есть только одно, с devExpress
>>1870634 Во-первых, дотнет за тебя всю эту инфу собирает по дефолту. Ты можешь подключить какой-нибудь Serilog и отправлять и логи и производительность во всякие лого агрегаторы, типа Kibana, Grafana, Azure App Insights, New Relic, миллионы их. Там тебе будут твои логи красиво групповать, выдавать отчёт по производительности и ошибках.
Во-вторых, уж очень твой юзкейс подходит под эту тулзу: https://github.com/jbogard/MediatR/wiki У него есть IRequest и INotification. Никаких зависимостей, кроме самого медиатра (это вообще паттерн такой) в твоих контроллерах, а дальше твой DI решит в какой конкретно Handler твой запрос отправить. Тот Handler уже будет иметь логер, репо, сервисы и прочее.
>>1871227 Значит ты где-то неправильно настроил конфиг и он пихает выходные файлы под себя. Ищи конфиг. Насколько я помню девэкспресс, у них главная фишка - гибкая настройка в инспекторе без единой строчки кода.
>>1871254 Если ты знаешь ведЕкспрес скажи тогда вот что, почему в демо проекте присутствуют ошибки но не смотря на это он запускается и работает? это что за магия?
>>1871288 >вы упоротые. это папка в папке солюшена. Ага, А ничего что девЕкспрес установлен не на cистемный раздел? Это может быть вызвано таким расположением? девЕкспрес Зависим от локации?
>>1870468 (OP) 9 вакансий на ждуна, так еще и конкурировать с вышкоблядями за миску риса на легаси, ну пиздец. И это в дс. Пока два отказа, ожидаю что с остальными откликами... мимо вкатун из техподдержки
>>1871293 ну мне обычно хватает только удаления .vs остальные кеши у меня на рамдиске и не переживают ребуты. один раз пришлось переставить студию 2 раза решарпер
где именно стоит студия и другой софт - никогда значения не имело.
>>1871319 .net core же работает на Windows server правда? ну он ведь кроссплатформенный, было бы глупо если бы не работал... просто у меня даже их демо не работают, .net framework работает ок, а вот кор нет...
>>1871417 А мы и не доходили, то что я смотрю это демо девекспреса, раньше я на вебформах сидел, мне на дваче объяснили что я не прав и я таки попросился в кор, мне сказали что знаний по кору у меня нихрена поэтому буду пока с вебекспресом работать, а он не работает нихрнеа, фремворк работает а кор нет
За 2 года работы столкнулся с тем что из проекта в проект пишу маленькие методы расширения и уже не представляю как без них писать. Ну, например, оч удобный метод расширения для хоста для "засеевания" базы и миграции, инизиализации всяких синглтонов, либо проверка строки на пустоту, ну и всякие Guard'ы, чтобы можно было валидацию удобно провести. Ну, я из проекта в проект папочку ношу. И тут я задумался. А вдруг я хуйню делаю? Ну, типа вот есть несколько проектов, в одном эта папочка, а перенес в другой проект, в этой папочке добавилось пару новых методов. Перенес в третий там тоже добавилось. Может быть стоило бы это все таки в библиотеку оформить? А то нужно будет вернуться в старый проект, я опять эту папочку потащу. С другой стороны это полностью утилитарная библиотека, там нет классов, нет ООП, все методы это либо расширения, либо статические. С третий, если оформлять как библиотеку, то тут уже нужно будет более ответственно подходить, не менять внутренности под конкретные нужды, чтобы не поломать то что использует библиотеку.
>>1871927 Какая ошибка болезненный, это демо девекса, я пробовал на другой пеке все работает, собственно задал закономерный вопрос, может ли влиять ось
Ясно. Пиши в саппорт девекса. Самое смешное, что ошибка в SampleData, т. е. в данных которые там в качестве примера, но вместо того чтобы посмотреть в код, долбоеб бежит на двач со своими умозаключениями про ОС.
>>1872069 Чел, ты понимаешь что SampleData они тоже сами представляют, оно должно работать с коробки, оно везде работает кроме сервера, разве мой вопрос о совместимости оси не закономерный в таком случае? или ты на полном серьезе хочешь что бы я полез дебажить и править демо пример?
>>1872069 Ну и да, если ты читал предыдущие посты я писал что я этот же проект с ЭТИМИ ЖЕ ДАННИМИ запускал на фремворке, и там проблем не было, то есть проблема именно в кор версии проекта, что я и спросил, а ты рассказываешь мне что я там что-то дебажить в данных должен
>>1870468 (OP) Нахуя нужен core? Есть одно несложное wpf приложение, нужно "портнуть" на asp.net сайт. Я думал что core нужен для кроссплатформености, а мне как раз нужно было бы захостить на линуксе asp.net сайт, но зашел только что и почитал что на апаче есть мод - mono по типу шиндосовского iis, который позволяет захостить проект. Какие подводные и в чем лучше core?
Лучше тем что это полноценное решение, а не какой-то модуль на развитие которого большинству просто похуй. Я написал бэкенд на коре, фронтент на ангуляре, в пару кликов захостил всё на линуксе. Не понятно зачем мне искать какие-то модули и костыли.
>Какие подводные
Не знаю, но беглый взгляд по описанию этого mono нашел на это: >Under high load, mono process consumes a lot of memory, website stops responding >These symptoms have been reported, but their underlying causes are not known. Set the MonoAutoRestartMode, MonoAutoRestartRequests, MonoMaxActiveRequests, and MonoMaxWaitingRequests directives as described earlier to limit the lifetime of the mono process and to restrict the concurrency happening in the server.
>>1872197 кора больше нет, моно больше нет, теперь это всё под одной крышей под названием .NET 5. IIS тоже больше не нужен, теперь всё по умолчанию хостится на Kestrel.
Смотри сюда чтобы узнать как создать проект и запустить его на любой ОС через Kestrel -> >>1870480
>>1872090 Со времён фреймворка куча системных АПИ поменялась. Один и тот же пример не сможет запустится и там и там без изменений. Если ты скачал пример конкретно под какую-то из версий кора, и пример у них под эту конкретную версию кора, и у тебя эта версия установлена, то у них в примере тогда ошибка и скорее всего во входных данных. ОС и дотнет тут вообще не причём. Обращайся в девэкспресс или как их там вообще хз чё это такое
>>1872244 По поводу версии кора, у примера версия 2.1, у другого примера которій работает 2.1, на компе где примеры работают 2.1, и на сервере где нужный мне пример не работает тоже 2.1, почему я думаю что ось ТЕОРЕТИЧЕСКИ может быть причем потому что ошибка типизации, а значит например на оси может использовать другая культура даты, локализация, все это зависит от оси, я правда вот что скажу, один и тот же проект на разных машинах имеет разные хеши, я думаю это не должно так быть
>>1872261 Ну опять всё упирается в этот девэкспресс. У них там какой-то метод с датой, в котором они вполне могли не учесть всякие локализации с форматом даты/времени.
>>1872303 > девэкспресс Что за пунктик на этом девэкспрессе? Насяльнике деньги некуда девать? Пусть он лучше тебе премией их выдаст, а ты сваргань приложуху на авалонии.
>>1872303 Ну так ясно что не в гугл, но вот чем именно вызвана ошибка я это пытался узнать, я тут все таки сравнил исходники и вот что получил, и я просто не понимаю почему данные отличаются в двух одинаковых демках, причем вписаны они нативно, тоесть не культура дат тут виновата, а то что нативно вписано не правильные даты, я просто без понятий
>>1872305 В том что можно нанимать программистов более дешевого класса и один раз заплатил за девексперсс ты экономишь на зарплате программистам, хотя кстати я говорил шефу что да хуй с ним с этим девекспресом я перекачусь на мвс без него, мне ответили что это уже вопрос поддержки ранее сделанных проектов
>>1872309 > можно нанимать программистов более дешевого класса Маркетинговая лапша девекспресса. Поздравь своего насяльнику от меня - он на эту лапшу купился.
>>1872311 А что? ты думаешь нельзя? что бы юзать девекс даже программистом не надо быть, копипаст и презентуешь насальнику с важным видом, хочет девекс пускай будет девекс, я найду куда свободное время потратить
Подскажите позязя по бест практисам, так сказать. Я создаю приложение, которое работает в фоне, выкидывает иконку в трей, из контекстного меню иконки можно показать форму настроек. 1) По инициализации приложения. Есть класс формы, есть класс трея. Сначала я создаю трей, потом создаю окно. Прописываю в событие завершения приложения анонимную функцию, которая прячет трей-иконку. Пробрасываю ссылку на форму в трей (для манипулирования ею из трея). Запускаю майнлуп методом Run приложения. Всё верно делаю? 2) По знаменитому функционалу "сворачивание в трей" возник головняк. Ссылка на форму пробрасывается в трей-объект как Form, то есть, нет никаких дополнительных свойств, которые я нахуевертил. А нахуевертил я свойства bool CanHideInTray, bool CanClose, первое говорит окну, может ли оно вместо минимизации просто исчезнуть, второе говорит ему же, может ли оно при нажатии на крестик минимизироваться, а не закрыться. В сочетании с первым второе работает на исчезновение вместо закрытия. Я бы мог пробросить сабкласс MyConfigForm в инстанс трея, но я планирую несколько формочек, которые будут динамически меняться по ходу развития ситуации, пробрасываться к трей-объекту и он уже действующей формочкой будет манипулировать. Поэтому я сделал интерфейс ITrayedForm, в котором описал все нужные мне флаги, которых я напихал в форму. Затем я прописал форме, что она реализует этот интерфейс. После чего, в трей-объекте я создал два ридонли свойства, первое типа Form, которое отдаёт прилинкованную форму, если есть, второе интерфейса ITrayedForm, которое проверяет, прилинкована ли форма вообще, затем смотрит, форма is TrayedForm и если да, возвращает имеющийся инстанс, скастованный на этот интерфейс. Так вот, потом в коде мне приходится работать с двумя переменными, в первой свойства формы, во второй свойства велосипедного интерфейса. Правильно ли я делаю? Нет ли способа проще?
>>1872616 >Мы любим всё новое. Двачую. Новая циферка (на этот раз даже больше чем у .net framework), более лаконичное название (без кора) — уже классно.
>>1872535 Ну, я хз за бест практис, но я бы делал так: 1 основное приложение - виндовый сервис. 2 ui - обычная форма, из нее при выходе шлёшь сервису сообщение, например, о выключении, ждёшь пока состояние сменится на stopped и закрываешь формочку. Ну и настройки всякие, перезапускаешь сервис и все такое.
Я вот ебанул такой вот велосипед: У меня есть очередь, в которой лежат Func<CancellationToken, Task>. Есть семафорчик, есть работники, они когда в очереди что-то появляется - тащат оттудова. Такой велосипед я придумал чтобы ограничить число одновременных задач, чтобы сервер если куча запросов которые долго выполняются, был доступен для быстрых обращений. Так вот, я боюсь что в реальных условиях всплыват какие-то подводные камни. Потому предложите способ лучше. Суть самого приложения - мониторинг состояния устройств, клиент может отослать запрос на чтение, устройство может ответить, а может и не ответить, потому там есть таймаут на отсет, который казывает клиент. Ну, чтобы в случае если куча клиентов разом читать ломанется, я это фигнию и придумал, потому что даже с стандартной асинхронностью, в случае если на пеке обычной запустить 10 клиентов и послать запрос на чтение всех параметров устройств(а их, в среднем, у устройств в районе 10к), все начинало тормозить, клиент не мог к апишке обратиться и вообще. Как нормальные люди это решают-то?
>>1873059 А нет никакой разницы между вариантами 1 у тебя список фанков и ты следишь за тем, чтобы не больше лимита работнички брали и 2 у тебя нет никаких фанков, но есть семафор и все делают все что им надо, но семафор залимитирует то, что нужно лимитировать - по факту та же очередь, только неявная + семафор
>>1873067 Ну, просто тут в чем проблема. Количество возможных одновременных работ остается либо за мной(я ебану константу), либо за тем кто настраивать сервер будет(я вынес настройку в конфигурацию, одмен может поменять число). Оба варианта мне кажутся говном в этом плане, типа блин, если клиентов не так много, то можно было бы и пожрать больше ресурсов, а если много - пусть задачи на чтение подождут, таки основная цель - смотреть что уже есть, а почитать большую часть параметров можно и в 2 часа ночи, когда нагрузка поменьше должна быть. Вот и я думал, может быть есть какие-то более правильные способы это все делать. Конечно, я могу изъебнуться и свою хреновину для анализа запилить, которая будет в реальном времени ограничивать число работников, а когда ресурсы появляются - создавать новых, но это выйдет долго и сложно, да и не уверен что затраты по времени стоят того чтобы неделю-две ебаться с этим.
>>1873088 да какая разница сколько клиентов. Они упрутся в ограничения тред-пула (которые для I/O), что несомненно много или ты им дашь синхронизацию в которую они упрутся - TaskScheduler (на любителя) или семафор. Не хочешь делить семафор между всеми - пусть они не тащат из твоего "оттудова", а, наоборот, кладут туда свои фанки, чтобы они выполнялись лимитировано и вот там можешь измерять фазы луны (ну а что еще) и на лету менять лимиты.
>>1873059 Зачем тебе семафорчик? Делай все задачи асинхронными, CLR сама распределит ресурсы по мере необходимости. Те которые будут выполнятся долго запускай с опцией TaskCreationOptions.LongRunning.
>>1873092 Пасиб, оч приятно. :3 Рили, я долго с этим пердолился. >>1873102 Изначально, у меня, стоял вопрос в том, как бы - зашифровать трафик в локальной сети, при передаче JSON-постов наноборды, от сервера к клиенту, и на клиенте дешифровать его. Потому что, даже в локальной сети, могут быть натыканы снифферы, жучки, и анальные зонды всякие, а JSON, он же, открытым текстом - он прёт по HTTP. Поэтому, я создал тред о полуанонимной аутентификации, здесь: https://arhivach.net/thread/628790/ и сам же, пришёл к вот такой вот схеме: https://arhivach.net/thread/628790/#1839162 Где юзается RSA.
Поскольку RSА, подразумевает не только шифрование-дешифрование, но и подпись данных, с проверкой пописи, с учётом того, что операции эти эквивалентны (возведение в степень по модулю, но с разными ключами), и поскольку среди этих методов: https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider я не нашёл ни одного, который позволял бы шифровать данные (не их хэш), приватным ключём, и дешифровать публичным, поэтому я и решил запилить это. И на ".js" (клиентская сторона), и на ".cs" (серверная сторона).
А ещё, до этого, вот сюда подумывал всунуть это: https://github.com/username1565/rsaVault/issues/3 Потому что там тоже подпись не пашет нихуя, только шифрование публичным, и дешифрование приватным ключем. Это нихуя не рса.
>>1873168 >я не нашёл ни одного, который позволял бы шифровать данные > приватным ключём, и дешифровать публичным, Вот тут уже стоило задуматься.
>поэтому я и решил запилить это А вот тут понять что ты совершаешь ошибку!
Причина почему этого не существует потому что это бессмысленная операция. С тем же успехом ты можешь шифровать симметрией, даже лучше будет. Темам криптографии уже десятки лет и там уже все предумано передумано, если ты гений математики (а ты явно не он), то сделать в этой сфере что-либо новое ты уже не сможеьш, поэтому просто берешь и используешь готовое, а не выдумываешь свой велосипед, потому что если его нет, то скорее всего (99.999999999999999%) он невозможен или тупой и никому не нужен.
>>1873201 Тащемта, всё гораздо проще... RSA-операция по подписи данных, приватным ключём, эквивалентна шифрованию данных приватным ключем, сообщения, внутрь подписи. Проверка подписи, эквивалентна дешифрованию сообщения, но ключем публичным, извнутри подписи, с последующим сравнением сообщений. Да, это туповатая операция, потому и не испльзуется, ведь байтовая длина подписи равна длине сообщения, поэтому используется хэш от сообщения - он короче. Однако хэш имеет коллизии, и ваша подпись не подпись. А тут таки-подпись. Такие дела.
Чет мне кажется что Fluent - какая-то хуета. Как минимум из-за того что я должен полгаться на то что там никакой магии нехорошей не происходит. Ну, т.е. да, LINQ с ним довольно удобно и все такео, но это майкрософты делали, если они там что-то наворотят, это не моя проблема, я вполне могу использовать и остальные штуки языка. Но когда какой-то чел в своей библиотеке или вообще в проекте делает что-то с Fluent во мне параноик просыпается, вдруг там что-то нахуевертили, вдруг там пересоздание объектов, вдруг еще что-то, я начинаю все равно весь этот Fluent разбивать на отдельные вызовы методов, потому что хуй знает, а так хотя бы увижу строчку где конкретно хуйня начинает происходить. Опять же, некоторые долбоебы проектируя такой интерфейс леняться нормально декомпозировать всю хурму и ты должен вызывать методы в строгом порядке. Короче, не знаю, что думаете обо всех этих Fluent Interface'ах?
>>1873410 Думаю, что ты параноик, а LINQ - хуйня. Почему хуйня? Работает пиздец как медленно, аж в х10 раз, чем старым дедовским способом. Не защищает от долбоебов как ты, которые вместо передачи лямбды в FirstOrDefault, хуевертят Where, а потом пустой FirstOrDefault.
>>1873312 >эквивалентна Нет. Иначе бы результат операции для одинаковых входных данных всегда был бы одинаковым. А подпись данных дает различный результат от раза к разу, хотя результат не уникальный, а закономерный, просто не единичный. То есть 2 разных строки могут быть подписью одних и тех же данных.
А шифрование публичным и дешифровка приватным не используется по причине того что операция небезопасна, если ты кому-то дал приватный ключ, то сообщение сможет расшифровать любой, хоть и не сразу, но это операция становится возможной.
Именно по этой причине существует лишь одна модель безопасной передачи данных. Это передача ключей любого симметричного шифрования с помощью ассиметричного, можно конечно и RSA общаться, но глупо, так как медленно и опять же смысла 0 так как в конечном итоге все хранится на машине пользователя и в обоих случаях доступ к ключу есть только на машинах пользователей.
>>1873491 >>эквивалентна >Нет. Иначе бы результат операции для одинаковых входных данных всегда был бы одинаковым. Так он и есть одинаковый, этот результат (подпись), если данные подписывать именно так, как описано здесь: https://ru.wikipedia.org/wiki/RSA#Цифровая_подпись >s = m^d mod n; где m - подписываемое сообщение, d - секретная экспонента, n - модуль, s - подпись, (d, n) - приватный ключ. Но битовая длина сообщения s получается, порядка битовой длины сообщения m, к тому же и m надо передать в паре (m, s), а это уже - две битовых длины m. Поэтому, оно и непрактично, как-бы, и проще подписать hash(m), а не m.
>А подпись данных дает различный результат от раза к разу, >хотя результат не уникальный, а закономерный, просто не единичный. Тут, я, не совсем понял, что ты хотел сказать. Если менять хэш-функцию, или добавлять какую-то nonce к данным, то да, подпись меняется. А если данные статичные и не меняются, то с чего бы значению подписи изменяться?
>А шифрование публичным и дешифровка приватным не используется Оно используется, и по дефолту, енкриптит - пабом, а декриптит - привом. А вот наоборот - нельзя сделать, заенкриптить привом, и декриптнуть - пабом. >А шифрование публичным и дешифровка приватным не используется >по причине того что операция небезопасна, если ты кому-то дал приватный ключ >то сообщение сможет расшифровать любой Нахуя кому-то дать приватный ключ, если это - ПРИВАТНЫЙ, блять, ключ? >хоть и не сразу, но это операция становится возможной. Может ты имел в виду публичный ключ, а не приватный? Ну да, декрипт возможен, в долгосрочной перспективе, если факторизовать n, на два простых, что сводится к довольно сложной - задаче дискретного логарифмирования в кольце вычетов по простому модулю: https://ru.wikipedia.org/wiki/Дискретное_логарифмирование#В_кольце_вычетов_по_простому_модулю
>Именно по этой причине существует лишь одна модель безопасной передачи данных. >Это передача ключей любого симметричного шифрования с помощью ассиметричного MITM-атакер - может подменить ключи, сначала асимметричные, и как следствие и симметричные.
>можно конечно и RSA общаться, но глупо, так как медленно Именно. Для этого и вхуярены - CRT-методы. Опционально, при генерации ключей, можно сравнивать e и d, и выдавать более короткий e и более длинный d, так как от битовой длины их, зависит скорость операций шифрования-дешифрования. Если d более короткое, и его можно акселлерировать с помощью CRT, то шифрование-дешифрование с длинным e будет требовать больше времени.
>и опять же смысла 0 >так как в конечном итоге >все хранится на машине пользователя >и в обоих случаях доступ к ключу есть только на машинах пользователей. Тут не очень понятно, что ты хотел сказать. Смотри, короче. Есть сервер, он стоит на машине пользователя, там хранится только приватник и данные, скажем - база постов наноборды. Паб, этот сервер - он отдаёт в паблик, расшаривает, этот паб - прешаренный (pre-shared). Рандомный клиент, желающий подключиться к серверу, анонимно, зная pub-сервера, генерирует пару своих ключей, затем - обмениваются по той схеме общим ключём симметричного шифрования, и гонят в обе стороны - шифр. Снифферы - сосут, митмщики - сосут.
Вопрос на про шарп, а про студию. Не смотрите на то что коде делает, это просто пример. В общем, можно ли как-то в студии настроить так, чтобы студия автоматически как в варианте с 'a' форматировала? Просто по дефолту она как b делает, а если я хочу как a - вторую строчку каждый раз вручную приходится пододвигать, дальше уже нормально.
Ну и еще вопрос, как блин сделать чтобы intellisense только если я какую-то клавишу жмакну работал, например tab. Очень странно просто эта фигня себя ведет в лямбдах, я пишу "(x" а он мне каждый раз какую-то хрень вставляет, каждый раз я вынужден это добро отменять. Не то чтобы прямо жить невозможно, но пиздец раздражает.
>>1873552 >Ну и еще вопрос, как блин сделать чтобы intellisense только если я какую-то клавишу жмакну работал, например tab. Называется Toggle suggestion/completion mode, но включать её приходится каждый раз при запуcке Студии, по-другому вообще никак. Не знаю что это за ебанатство такое. Я им в поддержку уже не раз про это писал, игнорят.
Не совсем вопрос по сишарпу но все же. Пытаюсь сделать парсер постов с каналов. И шота сразу затуп. Куда слать то запросы в апи телеграм? Не в бот апи, а именно в атпи телеграм. В бот апи это понятно сразу есть ссылка https://api.telegram.org/bot<token>/METHOD_NAME а в Telegram API в нет нихуя
Чи я просто тупой? Вобщем анончике помогите, куда слать запросы то?
>>1873180 >А HTTPS чем плох? Так его же поднимать надо. Это во-первых. К тому же, этот >>1873314 , может быть вполне себе прав, и нет гарантии того, что CА не наёбут, ведь удостоверяющий центр (Certification authority, CA), может попросту подписать левый сертификат, после чего, возможен будет MITM, с перехватом трафика. Пикрил.
>>1873413 А что хорошего в зондах и дырах от "спецслужб", хрен знает из кого состоящих?
>>1873790 Этот дегенератизм - результат капиталистической централизации, в процессе монополизации рынка. А в децентрализованных сетях, без центров, такая хуйня не канает.
>>1873168 >Изначально, у меня, стоял вопрос в том, как бы - зашифровать трафик в локальной сети, >при передаче JSON-постов наноборды, от сервера к клиенту, и на клиенте дешифровать его.
Короче Linq на производительности особо не отражается. Старый дедовский метод (а скорее всего вообще всякий разный страшный хакинг) надо будет только для хайлоада для узких мест применять.
>>1873552 Я такой опции не нашёл. Даже решарпер не может. Но после того, как ты задашь отступ первой строчке, остальные строчки студия должна сама подстроить. Надо чтобы кто-то такой code style fix запилил.
Хм, а как настроить так чтобы Vue'вский фронтенд отдавался из приложения которое я начал как WebApi. Просто сначала делал их обособленно, и на время доработки Api для фронтенда использовал ноду, в коде запросов просто прописал адрес куда слать. Теперь вот хочу чтобы просто запустил екзешник и, например, сервер на 80 порте висит, я делаю запрос на этот 80 порт, и мне отдавалось то что там на Vue написано, а в коде для фронтенда я бы не полный адрес писал, а типа: 'api/v1/Что-то что мне нужно'. Ангуляровский проект же как-то так делает, но я не сильно разбираюсь и не знаю как сделать так же для vue. Ну, т.е. концептуально я понимаю, я должен как-то прописать чтобы при сборке запускалась и сборка фронтенда, потом я копировал бы то что собралось в папочку, допустим www, и при запросах к сайту я бы отдавал index.html, но вот как это делается ручками я чет не совсем понимаю.
>>1874054 Безобразие. Мне, как серпом по яйцам, когда я вижу, когда приложения с интерфейсом работают как веб-сервис с локальным веб-сервером. Как побороть этот импринтинг, подскажите зумераны? мимо дед-дельфист, формошлёп
Писать или не писать I у интерфейсов? С одной стороны - все пишут. С другой - хуй знает зачем. ИДЕ подсветит, называть интефейс и имплементацию одинаково - дурной тон, и вообще сейчас модно интерфейсы вообще в отдельный неймспейс отправить. Вот и не знаю я. Лично я бы не писал, но все пишут, и я пишу.
>>1874193 Хочешь как в плюсах? 100500 либ с 100500 стилей, круто ведь, когда в проекте 100500 разных стилей из-за либ. И гитхаб не подсвечивает, а код ревьювить надо.
>>1874206 >>1874193 А раньше ещё и у классов Т писали вначале. Потому что тип. Т в дженериках оттуда потянулось. Но сейчас не пишут. Так что, глядишь ещё два-три поколения и I в интерфейсах перестанут писать.
>>1874207 Блин, так ведь правильно же. Почему-то вот сейчас венгерская нотация не считается чем-то хорошим, писать прификсы-суффиксы тоже не поощряется, а вот у интерфейсов осталось.
>>1874718 Тесты для сишарпо кода на фшарпе? И чем оно лучше за тесты на сишарпе? но звучит интересно. Давно хотел попробовать фшарп, так как немного хаскель знаю.
Аноны, говорил только что с клиентов, тот посмотрев мой код сказал что ему не нравиться концепция работы с базой данных через entity framework core, так вот... а что есть другие способы работать с базой в .net core?
>>1874961 Я может сейчас напишу неправильно, ибо знания у меня устаревшие. Пусть более знающие поправят. В целом, классический подход, это использование из комплекта поставки БД-тулкита специального объекта, который олицетворяет запрос в БД. Этому объекту скармливаешь строку вида "SELECT * FROM db_table WHERE foo=bar" после чего объект возвращает датасет. Который мы уже либо скармливаем табличному виджету, либо ещё как с ним работаем.
Есть старинный нешарповый проект, который может быть только 32-разрядным, и он периодически дёргает вызовы из dll, написанной на c++, которая, в свою очередь, обращается к с#-dll которая зовёт через ещё пару прослоек искомый функционал, но это не важно.
Поскольку 32-разрядное говно мамонта должно работать и на 64-разрядной машине используется именной такая цепочка вызовов (разрядность конечной библиотеки должна совпадать с разрядностью ОС, а 32 не может звать 64): мамонт <-> с++ - с# <-> ServiceHost-обёртка для 64-разрядной ОС <-> c# <-> конечная dll, последние 2 пункта поставляются сторонней конторой, считаются рабочими и сделать с ними ничего нельзя.
Выглядит максимально уродливо, но тут 2 решения: поддерживать то, что есть, либо избавиться от мамонта и сделать всё с нуля под .NET, на что, конечно же, нет ресурсов, поэтому только первый вариант.
В общем, есть функция, назовём её bool MyFunc(filepath), внутри неё идёт обращение к сторонней библиотеке на c#. При обновлении сторонних библиотек (c# и конечной, на c++) появилась необходимость заменить вышеупомянутое обращение на новое, подробное руководство прилагается. Заменить - заменил, тесты прогнал и довольный собой пошёл докладывать коллегам, чтобы забрали мои поделки и использовали в нашем ПО с Мамонтом. И тут вдруг выяснялось, что вываливается ошибка на этой самой MyFunc!
При замене обращения к внешней c#-dll на старое Мамонт начинает работать корректно (тесты тоже), при обновлённом вызове Мамонт начинает ругаться, а тесты продолжают проходить (тесты нехитрые - 32-разрядное плюсовое приложение, где вызываются функции из библиотеки). Причём, если Мамонту подсунуть обновлённые c++.dll и c#.dll, оставив старый хост-процесс, то всё продолжает работать корректно.
Подозреваю, я упустил что-то в подключении ресурсов (dll) к собираемым проектам, но в свойствах видны правильные пути до явно новых версий файлов. А когда я попробовал удалить и добавить заново в Хост стороннюю c#.dll, то всё вообще наебнулось. До моей попытки этого действия dll была с синей стрелкой на иконке в обозревателе решений, а теперь без
В чём тут может быть проблема? кроме выбора работы, днк и прочих, связанных со мной неприятностей Как искать её решение?
>>1875035 > старинный нешарповый проект, который может быть только 32-разрядным, и он периодически дёргает вызовы из dll, написанной на c++, которая, в свою очередь, обращается к с#-dll Лол блять. Походу, кто-то у нас здесь работает со взломанным нелицензионным программным комплексом. Без палева так.
>>1875055 Лолблядь, ты ошибся. И с чего ты вообще взял, что тут чего-то взломано? В цепочке, начиная с Мамонта, и заканчивая хост-процессом, всё написано в рамках одной организации, остальная часть (.Net-обёртка для вызовов конечной dll) в рамках другой.
>>1874091 >Старый дедовский способ - обычный фор. Очень полезная расшифровка, без неё точно бы никто не догадался. Я имел ввиду, что когда приходится воевать с производительностью и код писали не любители индусских фильмов, то и старый дедовский не поможет. Там будет куча хаков и хреново читаемый код.
Блин, так давно не видел разорпейджи, и тут нужно было накидать за пару часов фронтенд. Господи, какой же это кайф, просто в HTML ебанул что надо, сверху кинул стилей, пару скриптов и все, охуенно, красиво, быстро. ХЗ почему эта штука не взлетела особо. Каждый раз как приходится каким-нибудь ангуларом, или вью пользоваться, это же пиздец, ты просто чтобы отрисовать простенькую сьраничку хреначишь будто это реальное приложение, хотя по факту - просто шлем запросик - биндим это к элементам, ничего сложного, но нет, JS-еры хотят чувствовать себя настоящими программистами, потому давайте-ка как в нормальных языках заебеним. Короче, хочу чтобы разор ожил, чтобы на нем были нормальные проекты, а не только когда нужно за час-два накидать что-то чтобы показать.
>>1875019 >Господи как сложно... и чем єто лучше EntityFramework?
Почему ты здесь спрашиваешь, скотина тупорылая? Спрашивай у своего заказчика. Может ему EF не нравится потому что в нём некоторые запросы не оптимизированы, тогда можно всё равно использовать EF но писать все запросы в виде чистых SQL, у EF есть такая функция.
>>1875114 Тут такое дело. Тут кэп стучит в окно и орет что как бэ если использовать все запросы как чистые SQL, то НАХЕРА ТОГДА EF, если даже тот же linq2db удобнее будет. Чё кэпу передать?
System.InvalidOperationException: 'No suitable constructor was found for entity type 'ART_Artykuly'. The following constructors had parameters that could not be bound to properties of the entity type: cannot bind 'session' in 'ART_Artykuly(Session session)'.'
>>1875116 Человек уже написал на EF, но заказчику это не понравилось, вместо того чтобы всё переделывать под что-то другое, нужно сначала узнать причину по которой не устраивает EF, если это "хотим чтобы все SQL запросы составлялись без посредников", то переписывать на другой фреймворк смысла, можно просто использовать чистые SQL запросы используя EF для миграций и создания моделей.
>>1875138 Зависит от уровня твоего мастерства. Если хорошо знаешь SQL, то очевидно ты напишешь лучше, чем транспиляция от EF или другого фреймворка. В других случаях эффект может быть отрицательным.
>>1875119 Блядь, если в английский не можешь - выдели ошибку и в гуглтранслейте посмотри. Нет конструктора который бы принимал параметр который ты(фреймворк/либа) забиндить пытаешься.
>>1875013 Двачую. Как можно работать с БД за деньги и не понимать, как это всё работает? Используешь EF - обязан понимать что твой EF делает, иначе у твоих клиентов начнут возникать магические ситуации и тормоза.
>>1874939 Тебе уже сказали, что твой вопрос в принципе твою недоквалификацию показывает. Но клиент - еблан. Он видимо боится того EF, который был костыльным году в 2012. Сейчас он производителен и почти также немногословен, как и Dapper, а где-то даже выигрывает, потому что запросы руками или кодогенераторы писать не надо. EF, кстати, может все исполняемые sql запросы показать, если очень надо. Он также может голый sql запускать и результат маппить к твоим классам/рекордам. Основная его фишка - это не маппинг результата в объекты. Это может любой Даппер. Основная фишка - это миграции, когда ты руками БД вообще не трогаешь, а отдаёшь эту привилегию приложению. Забываешь про многие головняки с работой в БД быстро.
Поясните за экспрешны. Вот написал я поиск гипотенузы по теореме Пифагора, а нахуя непонятно. Где они используются ИРЛ? Вам они пригождались в вашей практике?
>>1875167 На них весь LINQ построен. У тебя есть дерево вызовов, которые надо как-то менеджить и испольнять в какой-то последовательности. Дальше ограничен только фантазией. Можешь кучу примеров на гитхабе найти. В обычных приложениях врят ли понадобится, а вот во всяких утилитах вполне.
>>1875189 Но это и есть основы... и я сейчас эти основы изучаю, иногда я могу где-то завтыкнуть, поэтому я буду очень благодарен если мне укажут на мой завтык или ошибку
>>1875194 Я не виноват, раньше я был на нетФремворке, там был орм от еф, и там все работало с коробки... а тут какие-то пляски с бубном, сессии-хуессии
>>1875200 Core намного проще в обращении, чем старый фреймворк. Сложно сказать, чего тебе там надо сделать, потому как у тебя там десятки, а то и сотни, всяких зависимостей и всё что мы тут пытаемся сделать - это ткнуть палочкой в одну и надеяться что оно заведётся. 1-2 недели потыкай, почитай статьи хорошо, а потом нормальных вопросов принеси (если останутся). Ещё у тебя есть поддержка от девэкспресса, их форум с вопросами/ответами и стэковерфлоу.
>>1875172 >>1875185 Няша, по твоей же ссылке в примере модель наследуется от XPObject, ты делаешь пустой конструктор: public ModelObject(Session session) : base(session) {} Попробуй, я думаю в этом проблема вся.
>>1875207 > Core намного проще в обращении, чем старый фреймворк А вот не сказал бы. Лично мне разобраться было легко, но я-то разбирался уже подрочив паттерны, солиды и покодив в реальных проектах и на джаве и на старом фреймворке. А вот вспоминая себя на первом курсе, я бы увидел эти дженерик хосты, подумал бы что это магия какая-то. А уж про лнику, так вообще говорить не приходится, я когда их увидел - просто повторял как в туториалах, ну и вообще. Короче, чем меньше всего есть из коробки - тем лучше новичку к.м.к. потому я бы наоборот советовал тем кто только разбирается взять какой-нибудь 3.5, а в идеале еще старше, там все как раз просто, и магию ты сам постепенно учишься делать.
>>1875240 Ты просто добавь наследование от XPObject и проверь. Если боишься - сделай локальный коммит перед тем как что-то трогать, если что-то сломается - откати.
>>1875254 Ну блин. Тяжело советовать нормально. Копипастни этот текест: public class ART_Artykuly: XPObject { public ART_Artyculy(Session session) : base(session) }
>>1875258 Блядь. Как же тяжело пытаться соответствовать твоему стилю нейминга public class ART_Artykuly: XPObject { public ART_Artykuly(Session session) : base(session) }
Теперь у нас apsettings.json/yaml, который ты тоже можешь шифровать, как нравится. Но рекомендуемое решение - Vault. Любое хранилище, типа https://www.vaultproject.io. Это хранилище в любом облаке доступно или можно руками доустановить там, где его нет. Даже в контейнере можно.
Все пароли, секреты, строки подключения, сертификаты должны быть в защищённом хранилище и добавляться в твоё приложение через IConfiguration при старте приложения. И потом в самом приложении ты делаешь config["ConnString"] и работаешь.
>>1875366 Уже нет. Иногда имеет смысл для ручного throttling или когда работаешь с ресурсами, к которым мало доверия и приходится по несколько раз запрос повторять, пока правды не добъёшься. Но это какие-то особые ситуации. Проще и производительнее просто взять HttpClient, добавить DelegatingHandler для обработки Auth фигни, настроить сервис и вперёд.
DelegatingHandler может за тебя нужные хэдеры и токены обновить и подставить вместо того, чтобы как по старинке делать запрос и получать 400/401/403, править и потом опять дёргаться. Никаких lock, никаких Retry() и прочей хуйни, которую так любят люди за 40. Этим надо или на пенсию или садиться и учить целый пласт тенхологий, которые развивались за последние 10 лет.
>>1875055 Кекус, в энтерпрайзе и не такие франкенштейны бывают. Там может быть C - C++ - C# - Python в рамках одного рантайм-квазимоды. Ещё видел тысячи строк кода в базе данных через кастомные интерпретаторы - это вообще пушка.
>>1875512 Не считается. Олды бухтят только. Ты всё равно var можешь юзать только как локальные переменные, члены класса изволь объявлять явно. Так что бухтение олдов мимо кассы. Если им нравится, пусть сами вручную дважды пишут что нибудь типа IEnumerable<KeyValuePair<int,KeyValuePair<string, Rect<int, int, long, long>>>>
А теперь мой вопрос. Когда я пишу event += ... не вводит ли меня в заблуждение этот оператор? Хандлеры ивента стакаются же? Стакаются? Прямо в стек? Я могу передавать результат работы хэндлера в следующий?
>>1875512 Явно объявлять нужно только в тех местах в которых нельзя точно определить какой тип возвращает выражение присваивания, т. е. результат правой части.
>>1875561 Спасибо! Я так и подумал. И уже понял, что делал неправильно и отказался от стаканья обработчиков, оказалось был путь проще.
Теперь ещё один вопрос, наверное совсем нубский: Есть солюшен. В нём есть несколько проектов типа exe. Как я могу запускать на исполнение второй экшешник из первого? Наверняка же в дотнете реализовано внутреннее "управляемое" решение. Ну не запускать же мне по старинке через шелл? И вдогонку, я хочу внутри солюшена отдельную dll с общими ресурсами для всех exe. Как к ней обращаться за ресурсами? Вчера налепил навскидку и чот нихуя не заработало, каждый exe ищет ресурсы только у себя.
>>1875590 > process.start Это и есть "по старинке", ИМХО. Я надеялся, что есть способ прямо изнутри вызывать события запуска тех или иных проектов решения. Ну, например, главное приложение и конфигуратор, при запуске главного приложения, если конфиг отсутствует, вызывается конфигуратор. Ну всё равно спасибо. Думаю, ничто не помешает мне сделать из главного ссылку на конфигуратор и просто вызывать публичную форму конфигуратора из приложухи, не запуская процесс вообще. > регестрировать эту длл Эммм, сложно, тупо, неудобно. Буду искать другие решения.
>>1875821 Это для старого ASP.NET (который на .NET Framework), а не ASP.NET Core. У тебя по всей видимости проект на ASP.NET Core, так немного по другому с сессией работают, гугли. Либо если тебе нужен именно ASP.NET MVC 5, то создай правильный проект.
>>1875559 Ещё один. Оно тебе надо знать какой там из тысяч доступных типов сейчас вернулось? Ты их все в голове держишь что ли? Я перепрыгнул на var как только он появился и ни разу не испытывал потребности знать, что там конкретно вернулось из какой-то функции.
Мне нужно знать, что мой код делает, а не как он типы матчит.
var client = CreateHttpClient(params); var user = client.GetUser(id); var comments = user.GetComments(); var commentsToRemove = comments.Where(x => IsTwoYearsOld(x.CreatedOn));
Там же есть ссылка на их гитхаб с примерами. В самой статье тоже примеры есть. Использовать stateful backend для многопользовательских приложений - моветон.
>>1875561 Хм. Хм. Они получают один и тот же объект? Ну, дорустим я в EventArgs передаю ссылку на кусок памяти, вот обычный такой ref Memory<byte>. Вот я такой умный, я знаю для чего оно мне нужно. Вот кто-то через год взял мой код и не знает, для чего это нужно было и подписался в своем хендлере раньше, он берет и этот кусок памяти делает Slice и с полученным куском нехорошие штуки проделывает. Пойдет ли в моем коде все по пизде из-за этого?
Сап сишарпач, наклепал простенькую приложуху которая чекает все доступные tcp и udp порты, так вот, как можно заблокировать нужный мне tcp/udp порт? Чтобы он перестал принимать пакеты и всю хуйню. Просто отключить его. Юзать cmd нельзя
>>1876130 После этого твою приложуху совершенно справедливо прибивает антивирус. На большинстве пользовательских компов, у тебя-то ясно антивирусозонда нетути.
Вечер в хату. Может кто работает в автоматизации на C# подскажите пошагово как запустить через Jenkins выполнение Nunit тестов? Где вообще про это адекватно почитать. А то тесты написал на гит закинул и на этом как то все.
А вообще, такой вопрос. Вот как я понимаю - фабрика это именно та штука, в которой мы примерно следущее делаем: factory.AddZalupa().UsePizda(x=>x.AddHair()).Build(); А я вот в своих залупах обычно делаю класс, который возвращает интерфейс, типа клиент этого класса не знает что и как там билдится, он просто получает интерфейс и пользуется им, вся ответственность за создание - на таком классе. Вот и как правильно такую сущность обзывать? Я, сначала добавлял суффикс Factory, но из-за того что часто под фабриками то что я выше описал подразумевают - начал называть Provider, но блядь, меня смущает этот суффикс, потому что что он там провайдит-то? Просто видел как в некоторых других проектах подобное так называли, вот и стал повторять, но сейчас думаю и кажется что нужно как-то иначе обзывать. Builder? Ну, может быть, но тоже как-то не нравится. Короче, как бы вы назвали класс, который, допустим дает клиенту какой-то класс для шифрования, либо класс который дает репозиторий, например во время разработки - там обычный лист, а в реальном проекте - уже обертка над каким-то провайдером БД.
Единственное там используется какая-то локальная автосгенерированая база, как подставить свою я не понял... в дальнейших статьях я так понял они работают с ней, но мне это не подходит...
>>1876147 Твои скрипты, которые ты будешь запускать в дженкинсе, должны примерно также работать локально. Ты вообще их писать и тестить локально должен, а не тыкаться в слепую через CICD (хоть дженкинс, хоть хуенкинс, тысячи их).
Дотнет тесты умеет запускать через dotnet test. У этой команды есть куча параметров. Для генерации и сбора отчётов могу использоваться дополнительные тулзяки. Но для обычного прогона и креша Jenkins job пойдёт простой dotnet test.
Анон, такой вопрос. Есть код -тут короче, открывается база Access, в ней запускается VBA модуль.. Тут все норм. При этом база должны быть открыта всю работу приложения (глобальные переменные)
А вопрос в следующем - как мне 100% вызвать метод Quit при всех ситуациях?
Ведь, когда оно открывает базу, оно создает процесс Access в диспетчере задач. Если где-то происходит бага с вылетом - я обычно останавливаю работу приложения и смотрю. Или например дебажу метками - дохожу до бряка, смотрю что там, понимаю что надо сделать, останавливаю выполнение.
Но в итоге эти процессы зависают мертвым грузом и мешают дальнейшей работе. Приходится открывать диспетчер задач и удалять руками.
Попробовал запихнуть в деструкторы - толи не понимаю, но не сработало.
Есть какой--нибудь 100% способ вызвать метод при всех вариантах закрытия проги? Вот в С++ такой способ есть
1) Почему в wpf release отжирает автоматом на +100мб больше озу, хотя по логике он ведь должен жрать меньше ресурсов? 2) Можно как-то урезать размер готового .exe?
>>1876305 > останавливаю работу приложения и смотрю Я могу только один вариант в таком случае придумать. Сделать батник, кинуть ярлык на него во внешние инструменты студии / на десктоп / на пинбар. В батнике вызовами taskkill -im "Access.exe" прибивать все экземпляры акцесса.
Но вообще, акцесс дерьмо, я бы перешёл на нормальные СУБД здорового человека при первой возможности
>>1870468 (OP) Как запустить net core проект для windows в линукс? Мне не нужна компиляция или развертывание под линукс, мне нужно чтобы проект разработанный на windows запускался у меня в линуксе.
>>1876269 Так когда через консольку пишу запуск автотестов то все в порядке. А когда через jenkins то гавно какое то. Только изменения кода в гит показывает и все. Может быть из за того что все делаю локально? хотя по идее должно быть всё равно.
Аноны, кто нибудь работал с azure, есть веб-аппликация которая хостится на азуре, и использует базу данных которая тоже размещена на азуре, локально проект работает, соединяется с целевой базой на азуре и работает как предполагается, но при паблише аппликации на азур сайт выдает ошибку An error occurred using the connection to database 'Analizy' on server 'tcp:analizy.database.windows.net,1433'.
>>1876544 проблема решена, удивительно но азур по умолчанию добавляет себя в фаервол... фейсплам, ну или может если есть анон который знает зачем это сделано объяснит
Анон. Я только начинаю изучать C#, начал с книги Библия С#, и в упор не получается разобраться в теме привязки данных, а именно с x:Bind. Есть xaml код следующего содержания:
Компилятор меня убеждает в том, что Bind не существует в пространстве имен и т.д. https://pix.my/TCAeOD Сколько не гуглил - подобное решается объявлением типа xmlns:x=.... но оно сделано. Ссылки вроде бы нужные тоже есть, кажется. В общем, то ли лыжи не едут, то ли я идиот.
>>1876540 >я делаю какую-то фигню, а получается какая-то хуйня damn son, как тебе помочь то, когда ты двух слов связать не можешь? Где хоть что-то, за что можно ухватиться и начать помогать?
Я с дженкинсом знаком с 2014, ставили его локально, на виртуальные машины, в местный дата центр, в AWS. Там же блять всё просто как "раз два три". Правда когда есть возможность альтернативы - перепрыгиваем на неё. Типа Azure DevOps. Дженкинс немного устарел.
>>1876590 Это только для публично доступного сервера. Т.е. его можно пингануть через интернет. Я бы на вашем случае добавил виртуальную сеть (Virtual network) с подсетью (subnet) и настроил фаервол чтобы БД сервер был доступен только из этой подсети и добавил ваш App Service в ту же самую подсеть. Нефиг БД наружу выставлять.
>>1876781 А все разобрался. Спасибо что пытался помочь. А я паниковал и херню писал. Все запустилось и заработало когда в Jenkins написал команды консольные на запуск автотестов и все норма начало работать.
>>1876924 >>1876926 >>1876931 >>1876937 Это или один троль сам с собой разговаривает или несколько тролей или один трольнул, а другим захотелось подбросить саркастических искромётных комментов.
>>1876950 В облаке у тебя точно также крутится какая-то машина с какой-то ОС. Если заведёшь своё произведение локально, то и в облаке также запустится. Хочешь в докере, хочешь в кубернетес, хочешь прям на хосте.
Веб приложению на дотнете пофиг, на какой ОС его запустили. Убунту, Виндовс, Alpine. Можешь вообще на Raspberry PI захостить. Код везде будет ОДИНАКОВЫМ!
Естественно, если ты в коде решил дёрнуть АПИ какой-то ОС на прямую или подключиться к чисто виндовому сервису (AD, Cert Store, Event Storage, etc.), то на Убунте оно рухнет, потому что там таких сервисов нет. Но рухнет тупо на этапе подключению к виндовому сервису.
>>1876757 с Binding не работает, хоть и не выдает ошибку, но это уже другой момент. В книжке черным по белому пишут, мол биндинг прошлый век, щас надо юзать бинд. >>1876759 Учу по книге, но похоже буду искать другой материал. Изначально понравилась подача, а вот то что в примерах не разобраться ибо не работает - косяк. >>1876786 тТут такое дело, что не зная основ оф документация - это как изучать иностранный язык не зная алфавита.
>>1877013 > не зная основ оф документация - это как изучать иностранный язык не зная алфавита Глупости. оф.документация - это как словарик в дополнение к учебнику при изучении языка.
Сап шарпач, есть одно приложение на винформах, датагридом, sqlite'ом, энтитями и картинками в них. Админы говорят что оно начинает лагать после добавления около 100 записей. Я вангую что это из-за энтити контекста. Мне нужно как-то чистить контекст? И реализовать пэйджинг в датагриде? Есть какие-то опенсорс примеры?
Можно ли в енум как-то одному элементу присвоить несколько значений? Я гуглил и нихуя не понял, вроде можно что-то с флагами делать, но получается какая-то дичь. Нужно что-то типа такого enum MyEnum { Element1 = 1, Element2 = 3, Element2 = 10, 11 }
>>1877169 Там миллион возможных причин. Криворукостью можно столько всего наделать. Без нормального анализа кода помогать тебе как в воздух пальцем тыкать. Авось да поможет. DbContext надо по новой на каждый запрос (клик по кнопке) создавать. Или уметь его в ручную менеджить и писать дополнительные сотни строк кода.
>>1877625 > DbContext надо по новой на каждый запрос (клик по кнопке) создавать. Нахуя? Я думал там ленивые загрузки, оптимизация изподкоробки все дела и создаю в скопуе окна/класса. Алсо, это же будет означать что к базе идет новый запрос, а это же нихуя не оптимизация. У меня в sqlite простой vacuum 10 секунд на околонекроте работает. Разве не лучше наоборот выгрузить данные в контекст? > Там миллион возможных причин. Причина в том что когда я делаю изменения в бд я обновляю датагрид и делаю это простым присвоением сурса = контекст.таблицанейм и он походу пытается загрузить всю таблицу.
Может кто сталкивался - WinForm, есть DataGridView в ячейках есть выпадающее меню с списком(коллекция) Проблема в том что при кликах на выпадающее меню оно вызывается минимум с второго раза (первый клик видимо берет ячейку в фокус, а второй уже отрабатывает как и положено) или с третьего если кликать на ячейку а не на саму галочку выпадающего списка Как фиксить? хочу делать одиночный клик
>>1877619 Хоть бы сказал, Razor pages или MVC или чего там? Если не Razor Pages, то надо всегда смотреть контроллеры, а там уже увидишь, куда ссылки ведут.
/Identity route обычно добавляется через services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>();
Если всё это добавлялось не в ручную, а через scaffold, то он тебе сам надобавлял всяких View.
>>1877767 Инициализатор же, анон, ну ты чего, совсем штоле нуб? MyUser user = new MyUser { USR_Foo = Bar, USR_Baz = Hurr, USR_Durr = Derp, USR_Date = DateTime.Now }
>>1878029 В си и его потомках нет и не будет никогда конструкций, наподобие "with" (фууу, мерзость какая, паскалебляцкая). Это принципиально и любой сишник тебе скажет, что твой код на скрине правилен.
>>1878076 Ну когда я в последний раз интересовался, сишники аргументировали, что этот кейворд якобы запутывает кодера относительно того в каком неймспейсе он сейчас находится. Если я правильно понял и/или запомнил.
>>1878077 ... но когда я был молод и кодил в дельфи, этот кейворд был идеальным решением для написания паттерна "адаптер", при условии, что адаптируемые классы имеют разные методы. Но если методы совпадают, просто прописываешь явно класс, напишу пример псевдокодом, чтобы не мучить вас бегин эндами:
ForeignClass obj1; InternalClass obj2;
with (obj1, obj2) { obj2.Name = obj1.Name; Date = CurrentDate; State = ObjectState; Position = Rect.Position; Size = Rect.Size; }
Вот так быстро и красиво происходит адаптация. Происходила.
А вы заметили что комментов 10 пропало? Тут один всех матами крыл, а его отправляли лечиться. Ну и попутно технологии обсуждали. У нас тут модератор есть?
>>1877828 >Да ничего я не городил, проект почти пустой, и рутингы я не трогал Все мы так когда-то отмазывались. Магии не существует. Где-то лежат заветные строчки кода. И лежат они на самом видном месте. Только у тебя знаний нет их прочитать правильно.
>>1878218 О! Он показал файл проекта? А то я реквестировал и ушёл. На коре проект-файлы несколько иначе организованы. Нужно по новому таргет прописывать, чтобы заработало.
>>1878242 Вот репост специально для тебя: >>1876966 > Вот пример проекта https://github.com/dotnet-architecture/eShopOnWeb > Он у меня ни в докере не запустился, ни локально на линуксе. Там бардак полный, образ контейнера вроде линуксовый используется, но в csproj захардкожены виндовые пути со слэшами и много еще windows-специфичных штук. Это может пример не очень подходящий, сложноватый, но и другие проекты от microsoft запустить часть не получается, потому что почти все написаны под виндой в visual studio.
>>1878225 Не слушай дурачка. Всё что есть из коробки в айдентити - вшито в программный код, никак это изменить нельзя, только писать своё и говорить айдентити чтобы он использовал его, а не вшитое по стандарту.
>>1878251 Он же не сказал, как он это айдентити добавлял. Командой, гуи, с какими опциями, или может в ручную код копипастил из разных статей? Он этот айдентити раут и сам мог прописать где-то, но не понял, что он это сделал.
>>1878257 Сам то по ссылке статью читал? >To maintain full control of the Identity UI, run the Identity scaffolder and select Override all files.
И далее идёт пример в котором убирается вызов services.AddDefaultIdentity<IdentityUser>() и указываются пути по которым будет браться написанный тобой UI. Т. е. то что я написал: >только писать своё и говорить айдентити чтобы он использовал его, а не вшитое по стандарту. >>1878275 Он сказал, что ничего не трогал, на что в ответ получил какой-то бред про отмазывания.
>>1878280 >Он сказал, что ничего не трогал Программист, который не смог разобраться с раутами в маленьком проекте, сказал что ничего не трогал. Сам то в это веришь? Миллион раз на таких джунов нарывался в разных городах и странах. Всегда круглые глаза, всегда "это не я, оно само!!!", и никогда нормально проблему объяснить не может.
>>1878280 Я-то читал и делал, а вот ты видимо нет. >To maintain full control of the Identity UI, run the Identity scaffolder and select Override all files. Это чтобы всё полностью переписать. Но это делать необязательно, можно изменить только пару нужных тебе файлов.
>>1878299 Но каких именно ты конечно не скажешь, хотя это как раз то о чём тебя спрашивают. Не перестаю проигрывать с дебила >>1878305 Чем это не помощь? Уже даже дураку понятно что нужно сделать для того чтобы изменить UI identity
>>1878328 >>1878257 >>1878299 Ага, теперь понял, надо чекнуть галочку напротив "comfimdEmail' после этого появиться представление и его можно будет изменять, спасибо!
>>1878716 Я встречал пару раз проблемы при подобном переходе. Один раз они были связаны с Windows Workflow Foundation, а другой - с неправильными nuget пакетами подключенными. Шансы встретить неполадки - минимальны.
>>1870468 (OP) Довольно тупой вопрос, но все равно поясните. Вот допустим, я хочу такую возможность дать пользователю: Он загружает шаблон устройства в определенном индустриальном формате, формат, естественно, не божественный JSON, а какой-нибудь MIB или что-то в этом духе; может быть кто не знает, но эти MIB бывают по 90к и больше строк, соответственно нужно будет ждать пока оно загрузится, потом нужно это распарсить, а потом я бы хотел вернуть клиенту уже JSONчик с тем что я там прочитал, распарсил, чтобы он то что ему нужно отметил, может быть как-то по своему назвал(думаю тупо выглядеть просто будет если пользователь все это MIB - дерево будет видеть, возможно человек хочет имена в нормальном человеческом виде смотреть). Ну так вот, как оно должно выглядеть 1. Со стороны взаисодействия клиент-сервер? Ну, в смысле должен ли я сразу пытаться парсить как только получил первые байтики или сначала мне бы полностью загрузить файл, потом уже парсить, а затем удалить его? 2. Как вот такая двухуровневая фигня должна работать? Ну, т.е. я правильно понимаю, что я просто на сервере делаю 2 эндпоинта, один для файлов, другой уже для конечного json'чика, который и буду сохранять в базу? Или как-то иначе делать нужно? 3. Самое наверное сложное. Я правильно понимаю, что будет говнокодом если я все это просто в api-контроллере делать буду? Ну, просто как я понимаю - правильно было бы это все разбить по сервисам, но ведь эти сервисы никогда и нигде переиспользоваться не будут, я вобще, по сути это для себя делаю, чтобы вручную не забивать базу принтеров, а можно было вот так вот кинуть на форму этот MIB-файл, он бы там распарсился, я отметил что мне нужно только объект который за уровень чернил в базе иметь, и сохранил такой вот шаблончик устройства, а потом мог бы создавать новые принтеры, смотря сколько в них чернил осталось. Не будет ли оверхедом выносить парсинг mib'а и создание dto для него в отдельный сервис?
все тот же сисадмин, который таки сделал возможность читать состояние чернил в принтере но в процессе заебался ручками вбивать описание какой объект нужно читать у принтера
>>1878900 > должен ли я сразу пытаться парсить как только получил первые байтики или сначала мне бы полностью загрузить файл В зависимости от того, как этот файл читается. Если читается построчно/побайтово, то зачем тебе ждать весь? Читаешь синхронно. > Как вот такая двухуровневая фигня должна работать? Паттерны-паттернушки 2020, ёпт. Я с дивана вижу помимо клиент-сервера паттерн адаптер. > я вобще, по сути это для себя делаю С этого надо было начинать. Ебашь с подливой любой говнокод за который не стыдно перед самим собой. Лишь бы работало.
>>1878900 >должен ли я сразу пытаться парсить как только получил первые байтики
Не обязательно, но желательно. Если будешь сразу парсить из потока, то займешь меньше оперативной памяти.
>сначала мне бы полностью загрузить файл, потом уже парсить, а затем удалить его?
Удалять ничего не нужно, также как и сохранять, всё держится в оперативной памяти. Ты же не гигабайтные файлы собрался в JSON конвертировать?
>Как вот такая двухуровневая фигня должна работать?
Где ты там два уровня увидел? Со стороны клиента делается POST-запрос, со стороны сервера приходит либо ответ с телом в виде готового JSON, либо ссылка на месторасположение файла. >правильно было бы это все разбить по сервисам,
По каким сервисам? Один сервис MibToJsonConverterService в котором будет логика конвертации, далее добавляешь его в виде синглотона и внедряешь в контроллер, который будет его использовать.
В чем лучше писать код-то? Типа студия почему-то уже на проекте с 10к строк и 2 проектами в одном солюшне начинает через 2-3 часа лагать жутко. Это на пеке с i7 9700k, 32 гигами оперативки, ссд который по PCI Express подключается. Это пиздец как раздражает. С другой стороны - райдер. Пиздец какое-то кривое поделие, еще и за меня хочет форматировать. И эти уебищные подсказки насчет типов и имен, блядь, пол экрана отнимают. Вообще какая-то всратая параша на мой взгляд. Но она хотя бы не тормозит. С третьей - вс код. Тоже не тормозит, но пиздец, постоянно этот ебучий Omnisharp - отваливается, постоянно ломается подсветка, не так удобно многие штуки делать как в студии. С четвертой - нахуй это все, буду кодить в Notepad++, вот серьезно, я в нем отрыл проект на 500к строк, он открыл его нормально, по нему оч шустро бегать можно, было бы нормальное автодополнение, нормальные инструменты которые позволяли бы чуть больше в ИДЕ чем редактор превратить - было бы заебись. Пока что приходится писать в нем, переключаясь на студию для отладки.
Как вы кодите в проектах больше 50к строк? Неужали терпите по 2 минуты на создание нового файла каждый раз? Или есть какие-то способы заставить студию быть чуть шустрее? Просто у меня в студии из плагинов только который гайдлайн рисует чтобы не забывался и держался в 120 символов на строку, в остальном - голая.
>>1878952 >2 проектами в одном солюшне начинает через 2-3 часа лагать жутко Не знаю, со студией проблем уже лет 6 не было. Проект с 2кк строк и 30ю проектами + пару других солюшенов держатся открытыми днями без перезагрузок. Полёт нормальный.
>>1878952 Вообще в этом году с резким подъёмом Cloud Native Development появилась куча тулзяк, с которыми можно и без студии большую часть времени кодить. VS Code отличная штука. Иногда файлы в Notepad++ правлю.
В чём прикол: берёшь голую машину с установленным Git и Docker с включенным Kubernetes (k8s можно и через другие инструменты локально завести, просто через докер удобнее), стягиваешь свой репо с кодом, описываешь свой проект и его зависимости в devspace.yaml файле, запускаешь devspace dev. Оно стягивает все твои Redis, Postgres, Sql Server, Vault, RabbitMQ и т.д. Заводит это всё в твоём локальном кластере и начинает работать. Быстро, просто. Если напортачил, сносишь всё через devspace purge и начинаешь заново. Отнимает секунды. Также очень круто для интеграционных тестов и деплоймента в QA/Prod/подставь_название.
Дебаг становится почти не нужным. Ты изменяешь файл и твой проект сразу же перекомпилится и новая версия доступна через секунду. Проще добавить какой-нибудь Console.WriteLine() с нужной инфой, чем дебаг подключать. Но дебаг по-прежнему доступен для более сложных ситуаций.
>>1879137 Некоторые языки пиарятся что победили косяк "==" с человеческим фактором. А язык, который позиционирует безопасность, привносит сразу два а может и больше аналогичных костыля.
Очередная недальновидная хипстота а сейчас уже модное СЖВ гробит неплохой проект. Ведь тусовка важнее идеи.
>>1879282 Как WPF. Запусти мне готовое большое и сложное легаси-приложение на WPF не устраивая адских кранчей по переписыванию всех форм на всякие там авалонии, эты и прочие вэиквиджетсы.
>>1879387 Проиграл с дауна. Это не либа, а фреймворк. Не работает он на линуксе не потому что злые майки так захотели, а потому что на момент создания wpf не было возможности сделать его кроссплатформенным. Сейчас майки делают отдельный фреймворк для этих целей, под названием MAUI.
Сап анончики, у меня есть порт COM3. На него я подключил Arduino с RFID-RC522. Как с ардуинки записать что-то в мою прогу на C#? Получить просто так доступ к COM3 я не смогу т.к он занят ардуино. Че делать? Ебусь уже хуй знает сколько времени.
>>1879433 Собсна сам код которым я пытаюсь что-то сделать. Было много разных версий, но сейчас когда я пытаюсь считать с порта то программа будто попадает в беск. цикл и не может найти выход
>>1879397 >Сейчас майки делают отдельный фреймворк для этих целей, под названием MAUI. в котором поддержка не винды будет силами комьюнити ну и мауи так себе замена
>>1879621 Нет, я захожу на новую страницу а полях уже введенные данные поверх плайсхолдеров, а еще когда ввожу выпадает подсказки, и они не отключаются блин...
>>1879213 То другой анон был, но я тоже не вижу. Вообще зачем на эту тему уже есть миллионы комментов на англоязычных ресурсах с аргументами один в один как здесь. Сидит группа обиженных Майкрософтом в 90х-начале 00х и продолжает ныть про Embrace, Extend, and Extinguish. В то время как остальной мир уже давно moved on.
>>1878898 Если с околонуля до пару часов. Основные конструкции языка + Основы ОПП и уже можно пилить игори. Дальше только курить документацию юнити. Код был конечно с точки зрения С# дно, но зато легко переносимый на любые движки.
>>1879644 Нифига из твоего описание не понятно, что конкретно тебе нужно сделать. Синглтон прост как два пальца: что-то, что возвращает один и тот же объект на любой вызов. Нынче делается через всякие IoC/DI. Когда пишешь свой код как обычно, без всяких статиков, но для производительности создаёшь только один экземпляр своего класса и переиспользуешь его везде. Например HttpClient, MongoClient, Configuration. Иногда проще статик класс запилить.
Вообще последние лет 5 вижу ручные синглтоны только в индусских проектах. Эти же индуссы любят про них во время собеседований спрашивать, типа выдай все 50 возможных вариантов написания синглтона для всех возможных и невозможных ситуаций: запретить наследование, выдать/запретить конструктор, изменяемый синглтон (для всяких токенов, например), и ещё миллион ситуаций, которые за тебя уже решили во всякий DI тулзах.
>>1879654 Ты чё как офисный планктон? На каком устройстве, в каком браузере клиент проверяет? В самом браузере это можно отключить. Всякими плагинами это можно отключить. Не все браузеры это делают. Чё за детский сад?
>>1879658 > этот дело говорит? Не смотрел, но осуждаю. Синглтон много где применим и слепо его избегать глупо. Тебе нужно, скажем, держать в памяти часто используемые данные, это быстро и удобно. Но ты не используешь их, ПОТОМУ ЧТО ПРЕПОД НА КАФЕДРЕ СКАЗАЛ, ЧТО СИНГЛТОН ПЛОХА-ПЛОХА!Поэтому ты каждый раз грузишь одни и те же данные, чтобы один раз к ним обратиться, а потом ГЦ их высвобождает, забирая ресурсы компа. А через пару секунд ты снова грузишь те хе самые данные в новый инстанс. Чтобы снова один раз прочитать. И снова ГЦ. Потомушта синглтон плоха, тупа, ламерски!
>>1879663 Да я разобрался, и сделал, этот >>1879673 анон уже ответил, только не понял что он там за кеш расписывал, разве глобальные переменные не кешируются?
>>1879681 Давай тогда определения кеша и глобальных переменных, что ли. У меня есть подозрение, что ты мягкое с тёплым сравниваешь. А ещё, судя по твоему коду выше, то что ты там разобрал будет периодически ломаться в рантайме. if (instance == null) - эта проверка is not thread safe.
В том примере тоже не правильно. Double check с локом - это древний подход и его желательно избегать. Лучше всего в шарпе Lazy подходит. Код компактнее и никаких локов. Новичок, бойся локов как огня. Там бездна инфы для изучения, и даже после изучения не факт, что у тебя что-то да не отвалится.
Почему считается что сложно переписывать wpf и winforms приложения на кроссплатформу? Ну типа сделали бы какой-нибудь класс прослойку для графического интерфейса, а оттуда бы всю логику вызывали. Или там все сложнее с подводными камнями?
>>1879985 Вот пытаются MAUI сделать. Написать движок для отрисовки под конкретную платформу не хухры мухры. Не всякие электроны, которые в инстансе браузера хтмл рисуют, а когда настоящий АПИ у хостящей ОС тягать надо, чтобы нативно выглядело. WPF и WinForms приварено к АПИ винды. Проще новый фреймворк запилить.
>>1879658 > зачем он нужен то по факту Если без всяких контейнеров и прочего, то зачастую тебе бывает удобно иметь некую сущность которая бы была неким узлом приложения, и тебе не всегда хочется перегружать конструктор других классов отдавая туда этот узел, чтобы иметь такой вот узел. Допустим, вот ты пилишь абстрактноте приложение. У тебя есть свой планировщик задач, есть своя ОРМка, есть свое логгирование, ты хочешь из любого класса получить возможность пользоваться всем эти. Довольно удобно в данном случае сделать этот класс синглтоном, Да, тут получается проблема с тем, что классы начинают быть завязаны на синглтон, да, получается, непереносимый код, только вот зачастую это не так и страшно, как многие малюют. Ну и да, то что синглтону трудно наследование реализовать - тоже не так страшно, зачастую сущности что должна быть синглтоном это и не нужно. Другое дело что ньюфаг узнав про него нечинает пихать куда надо и куда не надо, у него в проекте этих синглтонов становится куча, в рандомных местах дергаются инстансы и просто чтобы вникнуть в логику работы приходится разбираться во всей этой "архитектуре". Блядь, как вспомню свой первый год, дали мне проект, пилил его какой-то хитровыебанный мастер архитектуры: синглтон для создания событий, синглтон для логгирования, синглтон для того чтобы поверх старого синглтона логгирования можно было логгировать новым методом, синглтон для глобальной обработки ошибок(ведь мы такие вот хитренькие, падать из-за говнокода не хотим), синглтон, блядь, для моделей, нахуй, синглтон для подключения к БД, при этом без какого-то нормального пула соединений, не, нахуй, пусть у нас все пытаются получить соединение, а база просто в определенный момент начинает охуевать. Как же охуенно было это разгребать, просто не представляете.
Пытаюсь обработать исключение можно ли как то писать без второго return ? Или в типе возвращаемых данных метода лучше поставить Void ? Или нормально метод написан ?
Поясните ньюфагу. Допустим есть класс C с методом M { int r = 2+2; return r;} Далее в Main присваивается int a = С.М(); Вопрос. Каждый раз, когда мы используем переменную a у нас производится вызов С.M? Или результат для а хранится в памяти? Хранится ли в памяти r? Или он сразу убирается сборщиком после присваивания а?
>>1880130 >Хранится ли в памяти r? Или он сразу убирается сборщиком после присваивания а? это значимые типы. они вообще на стеке лежат и GC про них не знает.
>>1870468 (OP) Аноны, зачем нужна база данных и СУБД? Можо ли как-то, на c#, на серверной стороне, реализовать базу данных на файлах, чтобы хранить там логины-хэши паролей, и данные юзера, его активность - в файлах, а не в базах данных?
>>1880594 > зачем нужна база данных и СУБД Затем что она просто хранит твои данные, удобно и предоставляет быстрый доступ. СУБД же не дураки пишут, там всякие хитрые алгоритмы применяются для сжатия данных, для индексирования, всякие статистические методы, чтобы обеспечить тебе более быстрый доступ, например - "горячие-холодные данные", когда то что чаще нужно - лежит в начале очереди и таким образом поиск часто запрашиваемых данных происходит быстрее. Ну и вообще, там много хитростей, обеспечивающи тебе наиболее быстрый и комфортный доступ к данным. > Можо ли как-то, на c#, на серверной стороне, реализовать базу данных на файлах, Можно. Другое дело что если ты будешь постоянно держать в памяти какой-то здоровый кусок данных, допустим базу данных пользователей - твое приложение будет жрать кучу ресурсов, а если не будешь, у тебя будут постоянные обращения к диску, что медленно. Опять же, придется заморачиваться с доступом к этим файлам, допустим, вот тебе из 10 потоков нужно почитать и 2 потока хотят писать, это довольно заебисто на самом деле, особенно на больших файлах. Опять же, почти все СУБД сейчас позволяют вынести себя на отдельный сервер, что позволяет строить более гибкие системы, т.к. можно замутить кластер серверов для данных, кластер серверов для твоего приложения, в случае если что-то из этого упадет, клиент и не заметит, в случае же с обычным файлом ты заебешься все это как-то синхронизировать, а если таки начнешь пытаться, то так или иначе придешь к концепции СУБД, независимо от того будет ли это реляционная, документоориентированная или какая-то еще.
>>1880594 конечно можно. только вот потом понадобится поиск в этих файлах, транзакционное обновление, частичное обновление чтобы не перезаписывать весь файл, разделение на файлы и управление ими, файлы индексы и ты напишешь кучу кода которое будет это делать -и тем самым ты создашь примитивный движок субд а потом плюнешь и заменишь на готовый
Ну вот смотрите, есть задача - сделать простую регистрацию-авторизацию пользователей на сервере с#, чтобы у каждого юзера был свой аккаунт, и счет внутри аккаунта, чтобы он мог пополнять его (или зарабатывать деньги на аккаунт, например вводя каптчу), дальше, за деньги на аккаунте - заказывать какую-то услугу и что-то получать за эту услугу, и выводить остаток - себе на счёт, оформляя заявку.
Самое простое, что приходит в голову, это сделать файл: >admin;hash(adminPassword); >user1; (hash(user1Password) XOR hash(adminPassword)); (hash(controlQuestionUser1) XOR hash(adminPassword)) >user2; (hash(user2Password) XOR hash(adminPassword)); (hash(controlQuestionUser2) XOR hash(adminPassword)) >user3; (hash(user3Password) XOR hash(adminPassword)); (hash(controlQuestionUser3) XOR hash(adminPassword)) >... где user1 - логин юзера, user1Password - пароль юзера (передающийся по открытому каналу, кстати, отчего его могут стырить), hash(user1Password) - хэш пароля для хранения, чтобы его не стырили из базы если чо, (hash(user1Password) XOR hash(adminPassword)) - поскоренные хешы, чтобы не подобрали пароль брут-форсом, или радужными таблицами, (hash(controlQuestionUser1) XOR hash(adminPassword)) - то же самое, но только с контрольным вопросом, позволяющим восстановить пароль.
Это, как-бы, одна таблица. При числе юзеров в 1000000, файл будет достаточно велик, и грузится сразу. Поэтому, сразу, появляется идея - создать 1000000 файлов для каждого юзера, чтобы обеспечить к записям произвольный доступ.
Дальше, вторая таблица, уже как-бы вяжется к нику юзера: user1; balance; pending_balance; available_balance user2; balance; pending_balance; available_balance user3; balance; pending_balance; available_balance Это балансы разных юзеров; balance - суммарный баланс; pending_balance - баланс, который надо выплатить юзеру, available_balance - баланс, которым он может распоряжаться.
Дальше, pending_balance - ещё таблица: user1; witdrawOrderID; amount; whereToPay; status user1; witdrawOrderID; amount; whereToPay; status user1; witdrawOrderID; amount; whereToPay; status
Короче, блядь, ебическая куча таблиц, которую, может быть нужно будет - ещё и расширить. Можно как-то без СУБД всю эту хуйню заебенить, чтобы не пердолится с её настройкой и установкой? Я гляжу там только проприетарные лицензии, именно это и отталкивает, блядь.
Ну... Или... Подскажите что-ли, норм СУБД, для .NET Core 2.0, чтобы open-source она была.
>>1880696 >При числе юзеров в 1000000, файл будет достаточно велик, и грузится сразу. держать все в памяти? зачем?
А вообще очевидно что нужно будет делать выборку по пользователю и если не держать все в памяти, то мудрить индекс по файлу проще уж sqlite взять в котором тот же файл с готовым этим
>>1880679 ПостгреСКЛ бесплатная, МССКЛ урезанная бесплатная. Можно использовать не реляционную базу данных типа МонгоДБ или Файрбейз у которых есть бесплатные версии с ограниченным объемом хранимых данных.
>проще уж sqlite взять в котором тот же файл с готовым этим >>1880708 >ПостгреСКЛ бесплатная, МССКЛ урезанная бесплатная. >Можно использовать не реляционную базу данных типа МонгоДБ >или Файрбейз у которых есть бесплатные версии с ограниченным объемом хранимых данных. Вообще, база наноборды, не очень годная, но не хотелось бы, всякие копирастические зонды, в неуязвимую и неубиваемую - нанобордочку впиливать. Вдруг захакают базу данных через бекдоры? Нахуй, нахуй, лучше уж свой движок СУБД впилить, зато опенсорцный, c минимальными функциями, чтобы без зависимостей... К тому же и несно, всё это, оно разве заработает на .NET Framework 4.0?
В саму наноборду, я не хотел бы базу прикручивать, (и так всё работает, вроде). Но я хотел бы - отдельный проект заебенить, или даже несколько. А как работает эта ебучая база - так понять и не могу, блядь. Пиздец просто. SQL, выборки, какие-то сервера, кластеры, подключения, TLS, пиздец - каша в голове после этого. 80 вкладок в браузере открыл, пытаясь вкатиться в эту поебнятину, всё пересмотрел, нихуя не понял и закрыл всё нахуй.
То что я описал выше, с таблицами для юзеров - это я хочу сделать faucet, для раздачи крипты за решения каптчи. А то сидят куча людей, без работы, скучают, делать нехуй, последний хуй без соли доедают, а так хоть можно будет - каптчу повводить, и крипту получить. Ещё, хотелось бы заебенить сервис для продажи пасскодов, как на двоще, и юзать решённые каптчи наборды там. Конечно я вижу это как два РАЗНЫХ сайта, или даже, быть может - один, но там, очевидно, нужна регистрация и авторизация, и эти вот таблицы ебучие, и база данных, и СУБД, и хуй знает как это всё впилить - пиздец просто. Сплошной пердолинг какой-то, ебать.
>>1880704 нет такого понятия ряд реляционных бд представлен через унифицированный подход ADO.NET если хочется ORM, то тут уже выбор поменьше и зависит от ORM Ну а если NOSQL то там каждый предоставляет свой подход и понятия "наиболее интегрирован" просто нет
>Потому что - один файл: потому что один файл что? Я так и не понял. sqlite/firebird тоже один файл и что - они полноценные бд. Куча NoSql тоже представлены одним файлом базы данных или о чем это ты
ну а если тебе хочется написать свое (ну может спортивный интерес) то это другое дело Ну не верю я что нельзя понять как использовать бд, но при этом умудриться написать свою.
>>1880726 >потому что один файл что? Я же ссылку на код вбросил, там и посмотри как он пишется этот файл. Там тупо данные в файле, и отдельно - файл со смещениями, где эти данные лежат. Смещеня - целиком, грузится в память, при загрузке nanodb.exe.
Так вот, если табличку юзеров и паролей - заебенить в один файл, он же тоже будет грузится в память целиком. Иначе, придётся создавать файл смещений, и опять же, целиком -грузить смещения для записей в основном файле.
Это я хотел сказать, когда писал "потому что файл один". Когда файл один, он в память целиком так и грузится, даже если записей там будет лярда полтора.
>ну а если тебе хочется написать свое (ну может спортивный интерес) то это другое дело Именно. Изначальный вопрос, был о том, как с нуля реализовать минимальную СУБД, и БД, желательно - в виде файлов. Именно с нуля. Короче, реквестировалась годная инфа, чтобы вкатиться в сами "Основы СУБД". >Ну не верю я что нельзя понять как использовать бд, но при этом умудриться написать свою. Да мне не особо нужен весь функционал СУБД, и БД, как таковая. Просто, блядь, таблички эти ебучие, надо же как-то грамотно схоронять и ориентироваться по ним. Вот и всё. Если это можно сделать в пару строк кода, нахуй тогда инклюдить СУБД с этими ихними нечитабельными файлами баз данных, которые ещё и задамажится могут от одного лишь бед-сектора, и которые имеют проприетарный копирастический говнокод, коммерческий, и наверняка, обфусцированный вместе с дырами (бекдорами), вирями и троянами. А одни только SQL-инекции чего стоят. И всё это говно - пхнуть заместь такой опенсорцной няшки, как 0.db3, которая на нанобородчке? Ну нахуй. Понял, да?
>>1880777 >и опять же, целиком -грузить смещения для записей в основном файле. Ну для тех кто хранит индекс в виде плоского списка - для них да.
>А одни только SQL-инекции чего стоят ничего не стоят. в шарпе изначально был инструментарий их избежать. это вам не пхп. И кто хоть немного соображал, тот избегал.
>этими ихними нечитабельными файлами баз данных писать свой код для чтения данных чужой базы данных напрямую вместо чтения средствами самой бд (который суть тот же функционал и оптимизирован по самое) - это как бэ ну эта....
>пхнуть заместь такой опенсорцной няшки, как 0.db3, которая на нанобородчке? Ну нахуй. Понял, да? а вот это непробиваемый аргумент. Нечего возразить. но я лучше sqlite возьму при таких требованиях, ну или LiteDB
>>1880803 >но я лучше sqlite возьму при таких требованиях, ну или LiteDB А они пойдут на .NET Framework 3.5 или на .NET Core 2.0, или не, и придётся таки свою "базу" пилить?
>>1880803 >писать свой код для чтения данных чужой базы данных напрямую вместо чтения средствами самой бд (который суть тот же функционал и оптимизирован по самое) - это как бэ ну эта....
Я так и не понял, вообще, чисто в теории, можно полностью заменить весь этот ебический функционал СУБД, каким-то универсальным набором чисто файловых операций, и вместо базы, и таблиц в ней, и записей в этих таблицах - попросту хранить ебическую кучу файлов, и папок, где каждый файл - запись из какой-либо таблицы? Насколько я понимаю, файловая система - это же и есть БД, не? Только как оно всё работает, на принципах "концепции СУБД" - я не ебу, просто потому, что я в душЕ не деру, что такое ваще эти грёбанные СУБД.
Господа, как понять, что можно претендовать на позицию миддл девелопера? 1.10 опыта, работал в основном с WCF, WebAPI, хранимками в MSSQL, плагинами под Azure DevOps, ну и немного с ангуляром. ЗП 115к на руки, ДС.
Тут у меня один знакомый интересуется. Можно ли совместить в одном проекте дотнет и моно? Он жалуется, что у него какие-то пакеты отказываются работать. А проект изначально на моно. Подробностей доставить не могу, этот хуй мне не друг.
Парни есть вопрос походу он супер тупой но все же. Написал пачку Unit Tests они каждый раз все бегают. А можно как то часть из них отключить? Ну что бы выполнялись только первые 2 а остальные не прогонялись. Использую VS 2019.
Котятки, помогите с частью одной лабы пожалуйста. У меня есть родительский и дочерний класс. В родительском есть приватное поле, и виртуальное свойство для доступа к этому полю. В аксессоре set этого свойства я просто всегда присваиваю этому полю значение 5. В дочернем классе нужно переопределить это свойство, чтобы сеттер уже нормально работал. Это вообще реально? Выглядит как абсурд какой-то. https://ideone.com/rHJQtr
Как впихнуть в интерфейс статичный метод? Этот метод должен быть независим от стейта инстанса, в котором его вызывают. Конечно, я могу в доках прописать чтобы в нем не юзали this, но хотелось бы это на уровне кода сделать.
>>1881165 Можно, разрешаю. Для юнит тестов есть куча разных библиотек, читай доку как это делать конкретно в твоей библиотеке. А так они все это поддерживают.
>>1881080 А зачем. Это ж фломастеры. В MVC у нас контроллер, который принимает запрос, достает что нужно из базы и передает виду "вот тебе параметры - рендери". И вид на их основе рендерит. Ну еще и на основе того, что может сам достать - текущий запрос, сервисы... В MVP у нас презентер, задача которого сформировать данные для рендера и вид рендерит используя презентер. То есть вид ЗНАЕТ про презентер и использует для рендера.
Тут сложно понять в чем разница, поэтому поясню на компонентах.
Фреймворки без компонентов это трэш и угар, но раз в asp.net core они есть - это сильно сглаживает разницу, но разница все равно есть.
Есть ViewComponent, которые суть виджеты. Им можно передать параметры и они себя рисуют. В контексте MVP они точно такие же, но их создает не вид, а они существуют в контексте презентера. если в MVC мы обязаны дотащить контекст от контроллера до виджета, то в MVP мы получаем уже готовый инстанс компонента, который был создан в контексте презентера.
То есть в "action" презентера мы достаем и работаем со всеми компонентами удобным кодом вида GetComponent<Adblock>.SetIdentifier(...) GetComponent<Paginator>.SetPage(total, current) и в виде будут использованы не созданные Adblock, Paginator - а конкретно эти инстансы, которые вид попросит отрендерить себя. Вид определяет местоположение компонента и вызов его рендерингОВ (в ViewComponent только один Invoke - неудобна)
без поддержки движка разница довольно фломастерная, ведь "всегда можно все передать".
Ну а если движок поддерживает, то некоторые плюшки сверху вида - persistent свойства, которые автоматически прокидываются через запросы (урлбилдер знает про них и автоматом дописывает в GET, пока оно нужно) - сигналы. пусть у нас таблица компонент и мы меняем сортировку с перегрузкой всей страницы. Презентеру срать на этот запрос - он вообще не в курсе ни про какую сортировку, он знает про компонент "таблица", а что внутри - его не парит. Сигнал дойдет до компонента и при этом "action" презентера также отработает. И страница будет перегружена, только компонент "таблица" пересортирует. Потому что по факту его action не action, а рендер, хоть и выглядит идентично.
Но сила asp.net core в контейнере и возможности получить контекст А значит те же сигналы легко делаются и в ViewComponent, ведь можно достать урл и получить с него нужный сигнал сортировки. Правда логически он оторван от котроллера, но это ж фломастер
И с прокидываем параметров можно накодить. Всегда все можно накодить
Это просто мне приятнее работать с компонентами, которыми я оперирую в презентере в виде нормальных вызовов методов и построения урла с учетом всех этих особенностей. Но мир привык к MVC
В винформах после апликейшн ран код ниже что ли не работает? Продебажил, на этом остановился, функции не выполняет, это в классе Form1 дальнейший код писать или всё же как-то заставить его можно дальше работать?
>>1881451 Код синхронно выполняется. Вызываешь один метод и всё что ниже отработает только когда этот метод вернёт управление вызвавшему его коду. Эпликейшн, не эпликшн, разницы нет.
>>1881456 Какое-то мучение, и где код писать, основную логику? У меня логика была в статическом классе, форму делать статической это ещё куча проблем с наследованием и прочим. Хочу лейбл изменить, во время увеличения таймера, но постоянно какая-то с этим беда, сначала думал экземпляр формы создавать, но тогда в бесконечный цикл уходил, делал публичным, статическим и т.д... вообще жуть какая-то. Извините за столь очевидные вопросы, просто сгорел уже.
>>1881519 Двачую >>1881527 >И больше нигде, Ага, ну раз ты сказал что больше нигде. Он сплош и рядом в мобайле используется, только все равно, использование хуй пойми где это не аргумент за выбор чего-либо >>1881527 >пригодится если для веба будешь писать, поэтому не вижу смысла учить то, Мои соболезования если тебе их приходится учить
Спиздил проект для курсача, переделал под себя. В С# я нуб. Спрашивают про стек использованных технологий, а я не понимаю какие там технологии использовались. Asp net ли там, entity framework ли, sql или mysql. Как это определить?
>>1882028 Я просто сам в шарпе нубас, раз никто не отвечает пытаюсь помочь. Короче, вот статья как подключается, в нугет пакетах надо посмотреть установлен энтити фреймворк, ну и вообще чекни что в статье написано. https://metanit.com/sharp/entityframeworkcore/1.3.php
>>1882025 Ебические силы. Ты не в шарпе нубас, ты в принципе с компом на Вы. Я тебя попросил файл открыть. Файл блядь. В текстовом редакторе. Просто открой контент файла. Делается в 1 секунду на любом компе.
>>1870468 (OP) Читаю я тут статью в стиле "Геттеры/сеттеры - зло" и немножко переосмысляю свое существование. Однако один вопрос все еще стоит ребром.
К примеру, у нас есть класс Dog, конструктор которого принимает на вход вес собакена, т.е.: Dog dog = new Dog(10);
Получить вес собакена я могу как: int dogWeight = dog.weight; Console.WriteLine(dogWeight.ToString()) выдаст 10.
Но собакен со временем набирает вес. Предположим, после выполнения метода dog1.eat() собака поправилась на 1 кг. Поскольку dogWeight - переменная, ссылающаяся на поле класса, она автоматически становится равной предыдущему весу + 1, а вызов Console.WriteLine(dogWeight.ToString()) выдаст 11.
То есть предыдущее состояние не запомнилось. А мне в будущем нужно работать с историей веса собакена. Как быть? Неужто все-таки использовать геттер? Итого: Dog dog = new Dog(10); int dogWeight0 = dog.getWeight(); dog.eat(); int dogWeight1 = dog.getWeight();
>>1882144 Ну т. е. у тебя знаний на уровне "1 час изучаю язык", а ты уже какой-то бред в стиле "Геттеры/сеттеры - зло" читаешь? В очередной раз убеждаюсь, что маняме в посте это маркер умственно отсталого.
>dogWeight - переменная, ссылающаяся на поле класса
Она не ссылается на поле класса, она хранит в себе значение типа int.
>становится равной предыдущему весу + 1
Не становится, она так и будет хранить в себе значение 10, если ты не перезапишешь значение этой переменной.
>>1882176 Ну что? У меня не получается повторить, но я абсолютно точно уверен, что видел такую хуйню. Переменная менялась сама, когда менялись данные класса, на которые она ссылалась.
>>1882144 Самое главное, при чем тут нахуй геттер? Я вообще не понял какое он имеет отношение к > То есть предыдущее состояние не запомнилось. А мне в будущем нужно работать с историей веса собакена. Как быть Тут хоть с геттером, хоть без - предыдущее состояние не запомнится само по себе Но я сегодня добрый, потому вот тебе сразу вариант без геттера
Метод eat в конце просто вызывает событие WeightChanged(Dog sender, EventArgs e), в аргументах можешь хранить дельту относительно старого значения, можешь отправлять старое и новое значение и т.д.
В общем ребятки, смотрите, я хочу через сигналр оповещать клиента о том что что-то обновилось. Воооооот. Что я сделал. Я сделал синглтончик который некая уродливая помесь медиатора и обсервера. Я в своем репозитории передаю этого монстра, в нем есть метод Notify, когда мой ЮнитОфВорк коммитит успешно изменения, в хабе я подписался на событие этого монстра и рассылаю клиентам уведомление. Суть, мне кажется что это какая-то залупа, не нравится, короче мне как оно выглядит, особенно мне не нравится то что из-за того что хабы - короткоживущие - мне приходится вручную отписываться в методе Dispose от этого нотифаера, чтобы не было ObjectDisposedException. Есть ли более элегантый способ в реальном времени актуальную инофрмацию из базы клиенту предоставлять? Или все так делают и в этом ничего такого нет?
>>1882194 Ну так ты бы хоть проверил для начала, происходит то о чём ты спрашиваешь или нет. В шарпе есть типы-ссылки (reference types) и типы-значения (value types). Все примитивные типы (int, double, char, bool, и т.д.) являются типами-значениями, т.е. они хранят в себе само значение, а не ссылку на объект. По-моему вообще не существует ни одного языка, где int не был бы простым значением.
>>1882225 В петухоне все значения ссылочные, просто какие-то из них иммутабельны, а какие-то нет. Иммутабельны те которые в других языках являются значимыми типами.
>>1882233 Суть в том, что в данном случае тип данных не имеет значения. Переменная всегда будет иметь то значение, которое ей присвоили, независимо от типа этого значения. Если это ссылка на объекта, то она этой ссылкой на объект и останется, независимо от того что ты с этим объектом делать будешь.
>>1882317 Один миллион и один способ. Это вопрос вида: как увидеть дерево? Просто ответ - возьми да увидь. Но потом добавляется, что чувак находится в пустыне, в катакомбах под песком, и вообще у него нет глаз. А через время выясняется что вместо глаз у него электронные визоры, в которые по идее можно было бы загрузить изображение дерева и наебнуть систему.
Чё я хочу сказать - если хочешь помощи, то оформляй вопрос правильно, с деталями, скриншотами, что пробовал, какие результаты получил. или иди нахуй
>>1881317 Интересно, откуда эта картинка? Если она опен-сорц, то можно ли как-то из сорца её сбилдить на .NET 4.0? >>1881333 Так а что искать-то, говорил же, 80 вкладок открыл, многабукаф английских про непонятное увидел, и закрыл их нафиг.
>>1882391 Всё, нашёл: https://devpractice.ru/sqlite-c/ Там исходник, ссылки на пре-компиленные dll-ки, и вся хуйня. Ебать меня разворотило, здесь, от этих неведомых СУБД.
>>1882394 sqlite - не субд, а просто бд. Это файлик в особом формате. И к нему на разных языках поставляется провайдер, который знает как этот файлик читать.
>>1882394 Бля, там прекомпиленная либа на гитхабе, а сорца нет чтобы её собрать. Хз как её сбилдить, и где этот долбанный сорц.
>>1882395 >sqlite - не субд, а просто бд. Это файлик в особом формате. Как я понимаю, бд - это сами файлы базы данных, с данными. >И к нему на разных языках поставляется провайдер, который знает как этот файлик читать. Это та самая .dll-ка, с хуй знает какими бекдорами? С её помощью можно создать, эту ебучую базу данных, и писать данные в неё, и читать их? Вот эту всю хуйню как реализовать? https://www.google.ru/search?q=взаимосвязанные+таблиы+базы+данных
Чтобы не инклюдить неведомое, в опенсорцный проект, можно ли без баз данных этих и СУБД, вообще обойтись, и просто хранить таблицы - хуй знает как, в JSON'е-файлах, штоле, отдельных, с каким-то ёба-уровнем организации, так, чтобы не грузить весь JSON-файл, в память, а только то, что нужно? Первое что приходит в голову - это куча папок, где каждая - имя таблицы, и внутри них - тупо JSON-файлы, со значениями строчек таблиц, этих ебучих. А уже через логику софтины, читающей и записывающей, всю эту залупу, всю эту хуйню взаимосвязывать, и извлекать и писать что надо, и искать, и делать выборки. Тупо минимальный функционал. Нахуй мне вся СУБД от хуй знает какой корпорации, которая корпоративные хуйни корпоративизирует, и где какой-нибудь файл setup.exe весит 500 мегабайт, и содержит хуеву кучу проприетарного обфусцированного говнокода, с троянами?
>>1882433 Если глянуть глубже, то согласно принципу однородности памяти, из принципов архитектуры Фон-Неймана в двоичном коде любой программы - команды и данные хранятся в одной памяти. Данные, можно рассматривать как базу данных, а команды - как СУБД, то есть логику работы с этой базой данных.
Парни нужна небольшая помощь или подсказка. Установил Selenium и Nunit пакеты в VS. Надо проинициализировать браузер зайти на сайт проверить статус поле поиска(isDisplayed, isEnabled) - получить значение методов. Подскажите в каком nameSpace эти методы не могу их отобразить. И еще когда пиши локатор не могу подтянуть класс BY и его методы для определения в чем соль?
Как кто делает ожидание страницы ? Ну когда нужно подождать загрузки и т.д. метод Thread.Sleep() сказали использовать только в крайнем случае. Подскажите вариантов или примеров если можно.
>>1882513 >метод Thread.Sleep() сказали использовать только в крайнем случае Долбоебы сказали. Ты делаешь кастомный метод WaitPage(int timeout=10), в котором пишешь цикл, ждущий конкретного результата. Если не находит, спит секунду и повторяет поиск. Находит — break и возвращает, что надо.
Как считаете, требования в США к программистам выше, чем в России? К тем же .NET разрабам. Может прогер, считающимся Джуном в России, найти там работу?
>>1882595 В европе требование ниже, меня взяли в тим на фронтенд на первом курсе просто потому что я умел работать с пиратским фотошопом и верстать на хтмлке, в дотнет я уже попал на взрослую должность с опытом програмирования, но вообще без опыта в .net, в сша из того что я знаю требования еще ниже, что тут говорить когда там даже индусы пользуются спросом...
Можно ли в этой лямбде в конструкторе избавиться от ссылки на конкретный экземпляр листа, и использовать поле из экземпляра, в конструктор которого она передаётся? this возвращает экземпляр AbilityWalk, а не AbilityInput
>>1882892 Ты в курсе, что Селениум по умолчанию ждет, пока страница не загрузится? Отследить это можно по спиннеру, который крутится на месте фавиконки сайта. Пока он крутится - Селениум ничего не предпринимает. Докрутился - начинает искать элементы.
Извините за вероятно ньюфажный вопрос - можно ли использовать энтити фреймворк просто в качестве sql запросов, без явной загрузки данных в контекст? Я писал простой примитивный код для работы с бд, на уровне dbContext.SaveChange()/tableName.ToList() , но при полугиговой бдшке, простая форма для админки с энтитей сожрала у меня 3-4гб озу и это не смешно =[ . Раз в пару минут приезжает GC и просто уполовинивает занимаемую память, но это все равно пиздец. На форме конечно datagridview для просмотра, за него я знаю, к нему нужно прикрутить воннаби paging, с ним я разберусь. А еще, дело в том что я работаю с шифрованием и потому на каждую таблицу делаю дополнительный класс-прослойку для корректного отображения в датагриде. Там расшифровка данных + небольшая логика преобразований данных из базы для нормального отображения. +Изменение данных происходит не при помощи датагрида, а посему мне бы вообще данные в контексте не хранить если так можно.
>>1883276 Можно. contex.Set<T>().FromSqlRaw("Select zalupa from Pizda") Но вообще, раз уж тебе не нужен EF - выпили его нахуй, возьми, например, даппер. Если писал все по-уму, тебе просто нужно будет заменить провайдера и чутка попроваить репозитории. Привет всем кто кричал что не нужно делать репозитории и юнит оф ворк, когда EF юзаешь.
Посоны, впервые понадобилась ваша помощь! Нужна фигня вроде ELMAH, чтоб ловила исключения веб-апликации, и давала в веб интерфейсе их посмотреть со всяческим контекстом. В идеале, еще и с дашбордами. Но чтоб живая была, и бесплатная.
Есть вопрос. Есть определенный Test-case. Его нужно прогнать для Chrome и FireFox. Возможно ли как то сделать так что бы не писать два теста под каждый браузер. Или нужно реализовывать тест для каждого браузера?
>>1882815 Что будет если два потока одновременно войдут в GetChromeObject когда _crome - еще null? Короче, классическая проблема для синглтона. Ну и да, нахуя тебе Get в свойстве? Убери.
>>1883600 Если ты именно тестер и ты просто с "драйверами" работаешь, которые никаких общех интерфейсов не имеют - два тестовых. Если есть интерфейсы - используй их. Если ты разработчик - добавь интерфейсы и потом при тестировании используй их.
>>1883673 Твой ментор - долбоеб. Требуй деньги взад. Еще раз: Что блядь будет, если из двух потоков обратятся к твоему классу, до того как инициализирован? Либо делай синглтон на основе Lazy либо - после проверки на null - ебани lock там делай еще одну проверку на null и уже там создавай создавай экземпляр. И переименуй GetChrome. Get подразумевает что это метод. А у тебя свойство. Это вводит в заблуждение. Раз у тебя синглтон, то называй это Instance, оно понятно и все кто знают что такое синглтон - поймут что вернет это свойство.
>>1883276 Или переходи на Dapper, или выключай EntityTracking при запросах и он не будет ничего кешить. Гугли, на stackoverflow всё есть.
А зачем такое сложное шифрование? Можно же всю БД или какие-то таблицы/колонки шифровать/дешифровать на уровне СУБД (зависит от твоей СУБД). Но даже Sqlite умеет целиком БД файл шифровать.
>>1883711 Что что, два раза инициализируют и дальше пойдут. Даже для Прода такое выкатывают в целях производительности (избежать локов/семафоров и очередей потоков). А для тестов вообще пофиг. Напишет несколько тестов, они начнут прогоняться паралелльно в разных потоках и он для себя решит - работает этот подход или нет.
>>1883673 Приватный статичный конструктор сделает инициализацию при старте приложения. Не надо будет никаких проверок на нулл и всякие антоны перестанут бояться, что страшные потоки будут иметь твои переменные одновременно. мимо
Анонче, зачем нужны virtual методы и override? Ну типо метод который хотим переопределить помечаем виртуальным а переопределяймый метод пишем оверайд. Но нахуя? Я попробовал и без этих слов все работает. Просто что бы знать что мол этот метод мы переопределили или есть какой сакральный смысл?
>>1883783 > выключай EntityTracking Спасибо, я уже выключил. Теперь хотя бы память не течет. > Но даже Sqlite умеет целиком БД файл шифровать. А вот с этого момента поподробнее? Как мне в шарп коде тогда с ней взаимодействовать?
>>1883850 Оно не работает ни у тебя ни у кого другого. Я повторяю - ты просто сделал сокрытие. Это значит что при вызове из базового класса - будет вызван не метод этого класса, а тот что определен в базовом классе. Переопределение - это когда при вызове через базовый класс будет вызван переопределенный метод, если такой имеется.
>>1883850 Блядь, чтобы тебе понятно был. Смотри, допустим тебе нужно отрисовать контролл какой-то. Ты, блядь, не знаешь какой контролл будешь рисовать, и ты не хочешь думать о том что тебе придет: кнопка, лейбл, текст или вообще TreeView, ты просто знаешь что у всех контроллов есть виртуальный метод Draw, твой класс, допустим, занимается тем что выставляет все контроллы по сетке, ты хочешь просто расставить их по этой сетке, а думать о том как они рисоваться будут - должен тот кто эти контроллы писал. Так вот, если он такой же еблан как и ты и не сделал базовый метод виртуальным, а методы не переопределил - после того как ты вызовешь controll.Draw() у тебя получится ебанина, прийдет ПМ, ебнет тебя по голове палкой, и выгонит на мороз, когда ты будешь кричать что свою работу ты сделал - он пойдет к программисту что делал контроллы, а он как и ты будет пиздеть что у него-то все работает, в итоге вы оба на мороз отправились и сдохли; если он был не мудаком и все нормально переопределил - ты получишь нормально отрисованные контроллы, вы оба получили квартальные премии и ебете на корпаративе студенток-практиканток, которые решили вкатиться в ОйТи.
>>1883888 шизоид - это ты, в пэйстбин кидают, чтобы можно было с кодом поиграть, тут же надо быстро продемонстрировать результат небольшого куска кода, скрин быстрее всего. Ты сука вообще ни одного примера не привёл, как оно там у тебя работает, а хочешь чтобы люди тебе ещё дополнительные телодвижения делали.
>>1883890 Не ну вот щас понятно по скрину зачем это надо. Но возникает вопрос зачем создавать объект одного типа и передать его в переменную другого типа? Какие профиты?
Шарпаны, подскажите, как называется паттерн проектирования, когда есть несколько источников данных, один источник оригинальный, иммутабельный, остальные инкрементны основному, ну и мутабельны. Паттерн получая данные, ищет их во всех зарегистрированных инкрементах, начиная с самого лёгкого (у источников-инкрементов есть веса), как только паттерн находит данные, он их отдаёт. Если не найдено ни в одном из инкрементов, отдаёт из оригинала. Если запрашиваемых данных нет в оригинале, отдаёт поданное на вход дефолтное значение.
>>1883885 Что ты не понял, дурик? Есть у тебя BaseClass, есть DerivedClass который унаследован от BaseClass, есть у тебя метод который принимает BaseClass, на пикриле различия в поведении. При этом метод без override может иметь любую сигнатуру.
>>1883932 Чего там непонятного? Ты можешь таким образом не думать о конкретном классе который тебе пришел. Вот пример, метод SendMessage - он не знает как будет отправлено сообщение, его цель - создать сообщение и отослать, а как оно будет отослано - было определено сверху тем кто метод вызвал и передал туда отправителя. Есть два класса, которые переопределили метод SendMessage - таким образом, если в метод SendMessage прийдет класс, который переопределил метод - будет вызван именно переопределенный метод, вместо базового. Если бы не было переопределения, а использовалось сокрытие, чтобы вызвать отправку по СМС или по электронной почте, ты должен был бы проверить какой конкретно объект к тебе пришел и привести к нему, либо ебашить 2 метода, один для SMS другой для emal'ов.
>>1883940 Как инкрементные архивы, только датасорцы. Содержат добавочные данные, в том числе замену оригинальных данных, поскольку оригинальный датасет иммутабелен.
>>1883943 Я же не говорю что не нужно. Вот к примеру разделение программы на объекты и работа с ними мне нравится. Типо Каждый класс отвечает за свои данные и ничего лишнего, каждый метод выполняет только 1 действие и все. Это ведь ООП?
Просто пару раз начинал писать мелкие программки и когда код переваливал за 200 строк и я хотел внести какие либо изменения то приходилось все писать заново. Но некоторые вещи мне все еще не понятны. Например Person tom = new Employee("Tom", "Microsoft");// Зачем мне это делать??? Вот где может понадобится на простом примере создавать объект и присваивать его переменной длругова класса?
>>1883946 >Чего там непонятного Сложный код, перечисления лямбда выражения, я путаюсь. И еще пиздец как не привычно имя переменных когда начинается с _ я как вижу сразу пугаюсь и думаю шо это такое то метод или шо.
>>1883954 Тебе надо почитать классику. ООП взят из природы, из наблюдения человека за природой. И именно на природе можно найти примеры ООП от самого Боженьки, кек. Например. Есть абстрактный класс "млекопитающие". Почему он абстрактен? Потому что все млекопитающие реализуются в реальности через дочерние классы, например, собака реализует класс "псовые", который унаследован от млекопитающих и обладают генерацией молока. Дельфины от класса "дельфиньи", так же наследемого от млекопитающих. Человеки - от "приматов", ну ты понел.
Для чего передавать собаку класса "псовые" в массив типа "млекопитающие"? Другого типа массив же, епт! Ну, догадался? Нет? Потому что у нас теперь есть возможность положить в один массив всех млекопитающих! Несмотря на то, что это собаки, люди, белки, обезьяны, медведи, дельфины! Они все могут быть помещены в обдин массив и специальный робот доильщик пройдёт по массиву и подоит всех! И собак, и кошек и людей.
>>1883954 >Типо Каждый класс отвечает за свои данные и ничего лишнего, каждый метод выполняет только 1 действие и все
Если на каждый случай создавать свой класс и методы, то вместо 10 строк тебе придётся писать 100 или больше, а потом ты во всей этой каше запутаешься.
Суть ООП в том, что ты выносишь всё общее в отдельные, основные классы, а всё конкретное в классы, которые будут передаваться в эти основные классы. Таким образом общий код ты будешь трогать редко, а в случае добавления какой-то конкретики, ты просто создаешь дополнительный класс с нужной логикой. Создавать программу нужно мысля именно так, например, ты хочешь создать парсер двача, который отсеет все посты без прикрепленных файлов и оставит только файлы с каким-то контентом. Если применять ООП подход, то ты будешь делать парсер не для двача, а для сайта в котором есть сущности объединяющие несколько сообщений и сообщения двух видов - с медиа контентом и без. Какие в этом плюсы? Плюсы в том, что код, который будет работать с сущностями объединяющими сообщения (в случае двача это треды) и непосредственно с сообщениями, можно будет использовать для любой другой борды, а конкретными будут только способы получения данных. Т. е. написал ты для двача, а для того чтобы тоже самое делать с 4chan'ом, krautchan'ом и другими бордами, тебе будет достаточно переписать те методы, которые отвечают за получение тредов и сообщений. Минусы только в том, что тебе придётся тщательней обдумывать архитектуру и если опыта мало, то затратишь ты на это гораздо больше, чем на решение "в лоб". При этом логика схожа не только с бордами, но и с форумами в которых есть темы и сообщения в этих темах, т. е. при хорошей архитектуре ты написанный код можешь применять не только для двача и борд, но и для форумов.
>Person tom = new Employee("Tom", "Microsoft");// Зачем мне это делать???
Так никто и не делает, частый случай это передача производного типа методу который принимает базовый тип, т. е. Person у тебя будет в сигнатуре метода, а инициализировать ты будешь Employee и использовать его в методе принимающем как Person, так и Employee.
>>1883673 >ментор Судя по тому что тебе сказали что это норм, то ты с курсов, при том люто говняных курсов, так как тема синглтона изи на того чтобы завалить человека на собесе. А ты с таким кодом не то что провалил его, повезет если тебя в черный список не внесут. Эта настолько старая и избитая тема что не знать ее признак абсолютного отсутствия опыта. Тебе уже написали как делать и в интернете сотни статей почему именно так, а не как иначе.
>>1883789 >Что что, два раза инициализируют и дальше пойдут. Да, но существует шанс использования двух разных экземпляров на протяжении всей работы приложения без понимания что же тут не так. В нормальных конторах есть анализаторы которые помечают такой код как ERROR и за такое могут легко лишить премии, потому что это в будущем может сломать работу на месяцы.
>Даже для Прода такое выкатывают в целях производительности В продакшене производительность это десятое место, а экономить на локах или lazy лютая глупость, цена настолько низкая что даже в гейм дизайне так можно делать не говоря уже о том что через лок там только 1 проверка дальше по факту будет, то есть ты экономишь один if не понятно зачем.
>>1883986 Твоё это бред про природу? Ты либо троллишь, либо сам от того кому объяснить пытаешься недалеко ушел. В хороших книгах про ООП первым делом предостерегают от того чтобы пытаться проецировать жизнь на код и искать что-то схожее.
>>1883994 Так попробуй про ООП не из статей в интернете читать, а из полноценных книг. Начать можешь с Agile Principles, Patterns, and Practices in C# By Martin C. Robert, Martin Micah
>>1883995 В данном случае нет разницы. Но вот добавь классу Aminal метод MakeNoise() и сделай для cat - Console.WriteLine("mew"); для dog - Console.WriteLine("Woof"); и базовому классу Console.WriteLine("Animal noise"), а затем вызови это в своем foreach. Ты увидишь что без virtual-override - будешь видеть методы базового класса, вместо мяуканья и гавканья.
>>1883983 >Employee и использовать его в методе принимающем как Person, так и Employee. Ну тогда зачем это надо если метод принимающий родительский класс может принимать и производные? Я не понимаю профит этой конструкции.
>>1883673 Если инициализация синглтона не требует больших затрат, т. е. нет какого-то дорогого запроса к БД или чтение из файла и загрузка в память нескольких сотен мегабайт, то используй конструкцию вида Singleton, иначе Singleton1
>>1883983 Ну, ты описал кстати утопию. В реальности тебе дают неделю - ты должен сделать, иначе пизда, трындец, ПМ плачет, умоляет, а потом грозит уволить, а потому ты таки будешь вынужден ебануть изначально говнокод, который решит задачу здесь и сейчас, а все ООП начнется уже через 100 итераций этой хуйни, когда разгребать говно и костыли с велосипедами прийдут уже другие люди.
>>1884009 В чём демагогия, дурачок? В том что тебя отослали к источникам, которые разбираются в теме уж явно лучше тебя, долбоеба с двача, который высрал хуйню про природу?
Не хочешь развиваться, хорошо. Тогда вот тебе выдержки из книги которую я тебе посоветовал. Это из 20-ой главы , там как раз разбирается ситуация с которой сталкиваются идиоты вроде тебя, пытающиеся натянуть физический мир на логический.
>>1884017 Да, JIT компилятор будет проверять является ли объект tom наследником класса Person, если ты присвоил его переменной типа Employee, если он у тебя изначально присвоен переменной Person, то никаких проверок происходить не будет. Просто в этом мало логики, потому что если ты собираешься передать этот объект, который ты присвоил переменной типа Person, в метод принимающий объект типа Employee, то тебе придётся явно приводить эту переменную к типу Employee. Если ты не собираешься этого делать, то зачем тогда вообще присваивать объект Employee типу Person?
>>1884029 > зачем тогда вообще присваивать объект Employee типу Person? Чтобы в цикле обойти инстансы и вызвать метод, унаследованный от Person, не взирая на конкретные типы имеющихся инстансов.
>>1884030 >ткнули носом в обосранные штанишки >У ТИБЯ БАМБИТ ТЫ ТРОЛЛИШЬ!!
Проиграл. Главное чтобы в следующий раз у тебя хватило сил признать свой обсер. Не делать этого на анонимной борде - хороший повод задуматься над своим психическим здоровьем.
>>1884034 Да, я вижу как у тебя нибамбит, токсик из тебя так и льётся. Я написал чётко по делу, ты пишешь хуйню, надеясь, что оппонент в неё поверит. Это типичный Reductio Ad Ignorantum. Просвещайся, пока я здесь.
В этом твоя проблема. В твоей писанине не хватает ссылок на источники и литературу которыми ты руководствуешься. Да, сычуш, твоего "ятакскозал" не хватает, особенно на анонимной борде.
>>1884033 Они и так вызовутся если ты передашь Emplyoee в метод принимающий Person. И присваивать объект Emplyoee переменной Person ради того чтобы избежать проверки типов в такой ситуации тоже не имеет смысла, потому что при вызове виртуального метода происходит проверка типа объекта.
>>1883988 >В продакшене производительность это десятое место В больших конторах часто есть такое понятие как SLA, когда требуют чтобы при любой загрузке системы у пользователей не уходило больше 1-5 сек на операцию (полный рендеринг страницы например).
Для всяких сессий и токенов очень любят делать зашаренный объект, который по истечении срока жизни надо генерить заново. Тут два варианта - локать токен, обновлять в одном потоке, отпускать для использования остальными потоками. Когда загрузка серваков под 80%, такой лок может внезапно уехать под все 100% и серваки начнут кидать исключения или внезапно прыгать с 1 сек до 100 сек на отзыв. И тут можно словить увольнение и бан.
Для таких ситуаций можно позволить нескольким потокам переписать токен несколько раз и забыть про него на 30-60 минут.
>>1883842 Спасибо, выглядит очень удобно. У меня теперь другой вопрос - у меня есть классы прослойки для отображения данных в датагриде. Т.е. грузятся данные из бд в этот класс, а в нем расшифровка и небольшая логика для отображения (например если в таком то поле null значит записать в строку "не существует"). Можно ли как-то вообще избавиться от этих классов для отображения и вынести куда-то вот эту логику для просмотра? >>1884340 В nuget'e? мимо такой же долбаеб
Класс Testwith.....Browsers использует обобщенный тип данных TWebDriver, класс наследуется от TWebDriver, все остальное я хз сам еще не разобрался. metanit.com/sharp/tutorial/3.12.php Вот тут если шо читать.
>>1884683 Класс Test... не наследуется ниоткуда; обобщённый тип TWebDriver имеет следующие generic type constraints: 1. реализует интерфейс IWebDriver 2. имеет публичный беспараметрный конструктор new()
Как можно получить путь к файлу через OpenFileDialog? Гуглил, советуют System.IO.Path.GetDirectoryName, но он работает не так как надо. К примеру я открываю файл "word.docx", и свойство SafeFileName возвращает мне только название и расширение файла, но не путь
>>1884632 Прикольно иногда заставить себя посмотреть на код глазами новичка. Когда только картинку твою открыл, вообще вопросов никаких не возникало. Всё на своих местах, всё просто, и даже не знаешь, тролят тебя или нет. А потом пытаешься представить что ты код в принципе в первый раз в жизни неделю назад увидел, и сразу появляется куча вопросов.
Зря ты с этого начал. Поучил бы основы с пол года сначала. Не важно даже на каком языке и фреймворке.
3. Unzip-нул архив WinRAR'ом. В распакованном виде, всё это добро - засрало мне вот столько байт (46 639 196 байт).
4. Что делать дальше и как получить DLL-ки, и какие - хуй знает. На Windows XP (x86), cтоит - Visual Studio 2010 Ultimate (.NET Framework 4.0).
5. Методом тыка, залез в папку sqlite-netFx-full-source-1.0.113.0\Setup, и вижу дохуя батников. Испугался и сразу закрыл нахуй.
6. Возвращаюсь назад, из папки Setup. Дабл клик по файлу SQLite.NET.2010.MSBuild.sln (потому что студия 2010) Открывается студия, лезут ебучие варнинги.
7. Build -> Build Solution (656 Errors, 24 Warnings, блядь). Все Errors при попытке кококонпеляции этой вот шляпы "System.Data.SQLite.EF6.2010", и вот этой залупы "testef6.2010". Значит сорец не полный, блядь. Вижу также, в папке sqlite-netFx-full-source-1.0.113.0\Externals какие-то пре-компиленные .dll-ки, значет сорец не опен, блядь.
8. Дальше, несмотря на варнинги и ерроры, кококонпеляция, вроде как прошла. И теперь, где-то, здесь: \sqlite-netFx-full-source-1.0.113.0\obj\2010 я вижу кучу папок. Среди них: "\sqlite-netFx-full-source-1.0.113.0\obj\2010\Win32\DebugStatic\System.Data.SQLite.dll.intermediate.manifest" "\sqlite-netFx-full-source-1.0.113.0\obj\2010\Win32\Debug\System.Data.SQLite.dll.intermediate.manifest" "\sqlite-netFx-full-source-1.0.113.0\obj\2010\System.Data.SQLite.Linq.2010\Debug\System.Data.SQLite.Linq.dll" "\sqlite-netFx-full-source-1.0.113.0\obj\2010\System.Data.SQLite.2010\Debug\System.Data.SQLite.dll"
9. Хуй знает достаточно ли этого, и будет ли оно работать, или придётся - опять переустанавливать шиндошс.
АААААААААА! Хочу сука СУБД заебатую, опенсорцную, чтобы из чистого сорца состояла, и чтобы была без троянов вшитых в говнокод.
Выручайте котаны. Пишу Пытаюсь писать сайт на асп нет коре, решил запилить авторизацию (пока без идентити), добавил куки аутентификацию, добавил клаимпринципал через context.SignInAsync и... В фаерфоксе все норм, а хром шлет меня на хер (пикрилейтед). При этом в хроме в режиме инкогнито все работает. А атифоржери кука с такими же параметрами (вроде) ставится. Как быть?
>>1885364 У кук есть аттрибут secure, если он равен true, значит эти куки могут изменяться только по протоколу https. На пике ты делал запрос через http и браузер сказал, что не будет перезаписывать куки с пометкой secure.
>>1885402 >>1885374 Я хуею с того что народ лезет в кодинг, не зная английского. Кодинг - не то место, где стоит показывать свой языковой патриотизм. Учи инглиш, сука!
>>1885765 Почитал. Любопытная штука, но не то. CQRS разделяет команды и запросы, а я реквестировал несколько иное: шаблон или подход, при котором система имеет внутри себя (хохо, кажется я сейчас сам отвечу на свой вопрос), имеет внутри себя кластер из синхронизированных датасорсов, и в ответ на реквест данных извне, система возвращает актуальные данные из мутабельного домена в кластере, а при команде на модификацию данных, система создаёт или изменяет один из мутабельных доменов, имея в своём составе корневой иммутабельный домен. Собственно, шаблон кластера моему реквесту и отвечает. Вопрос закрыт.
>>1885774 Иммутабельный домен, если кто не догадался, это данные либо вшитые в исполняемый файл, либо находящиеся в системной области приложения и не доступные для изменения юзеру (требующие прав администратора, что небезопасно и не приветствуется). Мутабельные домены - это файлы, созданные приложением в процессе своей работы в пользовательской области приложения (в аппдате, если речь о винде).
1) Напомните пожалуйста название инструмента в котором в отладчике студии можно смотреть сколько памяти озу занимает тот или другой класс. 2) Какой либой лучше всего можно сжать байт массив?
Полгода стажируюсь на c# за 25к, какой-никакой опыт приобрел, на нг стажировка кончается. Сейчас дочитываю Рихтера, потом на праздниках собираюсь прочитать GoF, а потом устроиться куда-нить джуном. Могу ли претендовать на зп 60к, при этом удаленно?
>>1885977 >Могу ли претендовать на зп 60к, при этом удаленно? Зависит от места работы и твоих знаний в итоге. Но вот >Полгода стажируюсь на c# за 25к Это пиздец ставит крест на нормальной работе, тупо даже собес начать не получится. Да и судя по всему знаний у тебя минималочка так что я бы особо на что-то не надеялся.
Может кто сталкивался с похожими проблемами. В Jenkins когда смотрю отчет о билде всюду кракозябры. Как можно исправить? Кодировки поменял. Такая же херня в репозитории удаленном Git. Хотя в IDE в проекте все отображено корректно.
Сап! Есть простая программка, которая считает хэши у содержимого каталога. #уменявсёработает, а у коллег с хз как настроенными антивирусами иногда виснет, причём виснет после того, как посчитает хэши и запишет результат в выходной файл. Код примерно такой Log.Write("Работа закончена. Выход.");//запись в файл через streamwriter, всегда печатается Environment.Exit(0);//а этого уже не происходит
Если перед выходом вписать задержку Thread.Sleed(100500); то программа просто ждёт эти 100500мс и нормально завершается. Есть какой-то нормальный способ вставить ожидание запросов к программе уровня операционной системы вместо фиксированной задержки?
Да, делать всё асинхронно используя Async методы и async await конструкции.
Чтобы более подробно ответить, нужно видеть код. Неизвестно как ты эти хэши считаешь и какими вызовами к внешнему коду (коду ОС) пользуешься, как создаешь потоки и т. д.
>>1886343 > акими вызовами к внешнему коду (коду ОС) пользуешься Хвалёный дотнет не может без внешних вызовов, чисто на внутреннем управляемом коде прочесть файлы и посчитать хэшсуммы? Понимаешь, что говоришь вообще?
>>1886349 Вроде не веб-макака, а такую чушь пишешь. Работа с файлами это всегда обращение к внешнему коду, независимо от языка. File.Read это обертка над системным API по чтению файлов. >>1886358 >А не всё ли равно какой код, если всё работа завершена до печати "Работа закончена. Выход."
Судя по написанному "добавляю Thread.Sleep и всё работает как надо" она не завершена.
>и ситуация происходит не каждый раз?
Ну так это поведение очевидно, когда дело происходит независимо от твоего кода. Когда-то вся информация обрабатывается в нужный момент времени, когда-то она не успевает обработаться и спасает только Thread.Sleep.
>>1886373 >Судя по написанному "добавляю Thread.Sleep и всё работает как надо" она не завершена. >Ну так это поведение очевидно, когда дело происходит независимо от твоего кода. Тебе не кажется, что здесь какое-то противоречие? МОЯ программа завершила работу, но ЧТО-ТО внешнее мешает ей.
>>1886393 Твоя программа вызвала внешние ресурсы и теперь её работа связана с этими ресурсами, если ты их никак не контролируешь, то поведение и твоей программы, и внешних ресурсов, непредсказуемо и может приводить к подобным твоей ситуациям. Если не можешь показать код, то тебе следует пройтись по нему самостоятельно, предварительно прочитав что-нибудь на тему работы с файлами и проштудировав документацию на MSDN. Учитывая, что ты вообще не представляешь как это всё происходит, тебе в любом случае стоит это сделать.
>>1886393 Работа с I/O (input/output устройства), куда входят HDD, SSD, флешка, принтер, сеть и прочее - это внешние зависимости и операции над ними выполняются за пределами твоей программы. Не важно на каком языке ты программу написал.
По своей природе все эти операции аснихронные. Ты только можешь послать команду из своей программы, а потом надо сидеть и ждать, когда операция закончится.
Если работаешь с новым асинхронным АПИ, то надо правильно им пользоваться, иначе будут вот такие фокусы, которые ты описываешь.
Сука!!! Да что я делаю не так-то!? Почему у меня программа на строке 21 зависает в будто бесконечный цикл. А когда пишу ReadExisting, то ничего не выводит. Что делать нахуй!? Порт COM1 вроде
Как правильно помешать Unity-модулю инициализироваться, если функций и переменных включить\выключить не видно?
Один вариант - вылетать с return из Awake из базового класса модуля. Второй вариант - в Awake делать this.gameObject.SetActive(false);. Третий вариант - звать Destroy. Что из этого не вызывает багов, я не знаю.
>>1886872 > Unity-модулю В юнити своя атмосфера. Шарп там юзается как скриптинг. Следовательно тебе следует предпочитать имеющиеся там методы работы с движком и не лезть общешарповыми средствами туда.
А имеющиеся методы работы тебе следует почерпнуть из официальной документации.
>>1887005 Юнити вообще пиздец. Помню, когда только язык начинал изучать, решил попробовать свою игру написать. Ломал голову неделю, а в итоге хуета какая-то неструктурированная. Все эти методы внутридвижковые – они не интуитивно понятные, учишь как второй язык. Много воды с тех пор утекло, а юнити я до сих притрагиваться побаиваюсь
>>1887010 Повторяюсь. Документацию читай. Как и к любому сложному программному продукту. Без документации ты гораздо сложнее вкатишься. У нас тут неделю или две назад был в треде такой один. Вкатывался в ДевЭкспресс без чтения доков, без изучения примеров. С него половина треда угорали, а вторая половина разводили руками, не зная, как ему помочь.
Анон, занимаюсь фронтом. Хочу перекатиться в бекенд. Выбираю между шарпом и джавой для бекенда в Украине. Цель не выявить лучший, а более перспективный по времязатраности/зп/месту
>>1870468 (OP) Как лучше сделать на шарпе - простую форму обратной связи?
Ну, чтобы был сервер, страничка с формой, и чтобы можно было написать админу сервера, и получить ответ от него?
Можно ли как-то обойтись без базы данных, регистрации и авторизации?
Самое простое, что приходит в голову - это сохранять сообщения (и аттачи) - в виде текстовых файлов, но если регистрации-авторизации нет, то кто угодно может срать , а значит нужно что-то вроде валидации емейла, и ещё и каптча. Если емейл юзера будет валидироваться, то надо пердолится с автоматической отправкой емейлов с кодом подтверждения емейла юзера, а тогда палится емейл админа, что херово.
Что если в торе просто повесить форму с каптчёй и сохранять текстовые файлы, без палева?
И щё один аспект... Ответ от админа. Это может быть емейл с фейкомыла, а может быть ответ внутри (что-то вроде системы тикетов), а тогда нужна база данных и регистрация, блядь, и пердолинг с таблицами и проектированием баз данных, и SQL, и прочей ебалой.
Короче, как проще сделать портабельную и легкоподнимаемую форму обратной связи, с чего начать проектировать это говно?
Шарпач, помоги, пожалуйста! Есть база данных. В ней три таблицы, вроде как связанные между собой (если это важно, я докину их список) Нужно, чтобы таблицы выводились по одной в зависимости от нажатой кнопки в datagridview, и при этом должны работать три операции: добавление, редактирование и удаление строк еще поиск по полям нужно, но это не так важно. У меня есть сейчас все три функции, но они работают только на первую таблицу. А как сделать так, чтобы проходила проверка, какая таблица открыта сейчас, и после этого работать с ней, я не знаю собственно, в этом и заключается трудность. Подскажите, как её сделать?
Есть одно решение в вижуал студии. 1) Можно как-то сделать чтобы при сборке одного проекта в решении собиралось автоматически другое (dll)? 2) Можно как-то сделать гит для всего решения, а не для отдельных проектов? А то я как лох открываю по отдельности проекты в решении чтобы закомитить.
>>1887182 >Можно, но без БД будет сложно. Насколько я понимаю, можно вместо таблиц - сделать кучу папок, с названиям таблиц, а вместо данных в строках таблиц - писать JSON-файлы в эти папки. А уже в софтине прописать всю хуйню, чтобы работало как база данных. Но это не точно.
>Воспользуйся бесплатными MongoDB или Firebase А они опенсорц или не?
>Email не нужен. Какой от него толк если его заменить можно за пару минут? Ну, наверное - чтобы было куда ответить?
>Капча подключается за пару минут. Есть где-то каптча на шарпе, или ты про гуглокаптчу?
>Сохраняй в бд IP отправившего, >сообщение и сделай лимит на количество сообщений с одного IP. А если форма в TOR'e, чтобы IP-сервера не палить, и юзеры ломятся через TOR, нахрена сохранять IP шлюзов TOR'a, если они - фейк? Но ты прав, тут скорее надо не лимит на количество сообщений, а лимит на количество сообщений за определённый период, чтобы не срали вводя каптчу.
>>1887232 > вместо таблиц - сделать кучу папок, с названиям таблиц, а вместо данных в строках таблиц - писать JSON-файлы в эти папки. А ещё можно вместо автомобиля купить два велосипеда, сварить вместе и сверху лист кровельного железа приебнуть.
>>1887135 Паша, с такими вопросами надо в гугл. Там ещё и древний фреймворк 4, про который уже никто не помнит. Возможно какие-то библиотеки друг с другом конфликтуют, надо совместимые версии искать.
>>1887207 Иди тьюториалы учи. То что тебе нужно работает из коробки по умолчанию. Причина, по которой оно работает как-то криво - ты сам. 1) Студия автоматом пересобирает изменившиеся проекты в открытом решении. 2) Весь код (решение и его проекты) должен храниться в одном репо (за исключением особых случаев).
>>1887118 Я бы тоже советовал шарп. Но скорее из-за того что у него не такой зоопарк как в джаве, где у тебя куча систем сборок, нужно знать разношерстные фреймворки и вообще какой-то писос. Тут все просто: Как майкрософт решил - так ближайшие пару лет и будет. Удобно.
>>1887178 Ну смотри, у тебя как-то же можно переключаться между таблицами. Можно. Вот при переключении - смотри как там назначается значение текущей таблицы в DataGreedView и просто добавь поле для хранения этого значения, допустим _selectedTable. А дальше в своих методах - бери значение этого поля и используй.
>>1887421 > Весь код (решение и его проекты) должен храниться в одном репо (за исключением особых случаев). Охотно верю, на что нужно нажать в вижуал чтобы это сделать? > Студия автоматом пересобирает изменившиеся проекты в открытом решении. Я вкурсе, в том то и дело что мне и не нужен весь солюшн, а только конкретный проект. Я тыкаю обычно ф5 и собирается текущий проект.
>>1875081 Я писал на нем небольшой проектик, но всё же это не так удобно как MVC. Пару страничек - да, если больше то упираешься в проблемы с путями и код быстро захламляется параметрами.
Хм. Кто-то пользовался бесплатной Azure? Допустим я хочу для "портфолио" замутить веб-приложение. А т.к. нищук - ищу бесплатные способы. Ну, собственно, я погуглил, фронт решил на гитхаб-пейджес закинуть. Теперь вот думаю о том чтобы АПИ намутить какой-нибудь. Загуглил. Вроде в азуре можно 10 веб-апишек и какую-то их NoSql бд использовать безлимитно. Конечно, там ограничения на число обращений в месяц и все такое. Но маленький CRUD, который только я буду использовать, я думаю должно хватить. Вот и вопросы по поводу всего этого дела. Есть ли какие-то подводные камни в такой вот связки, в контексте не реального проекта, а "портфолио"? Нужно ли какие-то дополнительные телодвижения будет совершать для того чтобы это вместе функционировало, кроме настройки веб-сервера на прием запросов с гитхаба? Вообще, кто-нибудь такое делал? Может там какие-то подводные камни есть?
>>1887232 > Насколько я понимаю, можно вместо таблиц - сделать кучу папок, с названиям таблиц, а вместо данных в строках таблиц - писать JSON-файлы в эти папки. А уже в софтине прописать всю хуйню, чтобы работало как база данных. Но это не точно. Да, пропиши, блядь, constraint к папкам, еще индексы на них посчитать не забудь и расширение для ef к своей папочной дб не забудь написать для комфортной работы. Нахуй нам SQLite? У нас есть папки
>>1887765 is в С# используется для проверки типа объекта. Твою лапшу из || лучше заменить на switch в которых все сравнения будут case'ами ведущими к одному результату
Спасибо дядь Вов, посжимал byte array. Алсо, кто-то мне укажет где я мог проебаться? .net 4.0 - compressionLevel'a у меня нету. Или может есть какая-то платиновая либа для сжатия байт массивов?
А все, разобрался - у меня был шифрованный массив, поэтому он нихуя не сжимался. У меня теперь другой вопрос - есть на nuget'e библиотека DotNetCompression. У них на офф сайте при загрузке - написано 30 days trial, и всякие тарифные планы. Вопрос - что мне по идее может быть если я просто качаю либу с нугета? Мне в один день в апликухе вылетит эксепшн с в.в.пыней - плоти налог или как это работает?
>>1887792 Что вообще надо для вката в SQLite на .NET Framework? Я вот создал таблицу, забил значения в неё, прочитал, и даже вывели их вроде норм. Дальше пытаюсь создать таблицу с блобами, записать туда байты и прочитать их из базы. А оно мне вот такую хуйню выдаёт: >Cannot set CommandText while a DataReader is active типа предыдущая таблица ещё читается ридером, а ты пишешь новую? Хуй тебе, хуй тебе, ХУЙ ТЕБЕ. Бля. Не пашет ваша сиквелайт - хочется удалить всё нахуй и разломать комп.
Сап, мужики. Это нормально, что я вот брожу по собесам (через зум, спасибо короне) и с меня всегда спрашивают как с фулстака? Минимум по жс гоняют, иногда реакт. Причем в вакансиях ничего такого в требованиях нет. Или по дефолту дотнетчик должен и фронт знать? я даже жс не знаю то особо вкатун
Челики нужна базовая помощь. Есть задание но не могу понять возможно ли его реализовать в c# или это для любителей Java ?
- привести разницу между методом isPresent(isExisted) и isDisplayed
- реализовать кастомное ожидание на метод isEnabled(это должен быть вызываемый метод) - реализовать кастомное ожидание на метод isDisplayed(это должен быть вызываемый метод)
>>1888293 Ну, лично по моему опыту - собирать прототипы на каком-нибудь SPA-фреймворке. Дальше обычно уже специально обученный фронтендер будет. Да и не ссы, если ты дотнет освоил, то освоить JS не должно составить особых проблем.
Помогите решить проблему, если её возможно решить, у меня уже крыша едет. У меня есть 3д-цилиндр, нарисованный через впф. Этот цилиндр у меня крутится, я движением мыши вверх и вниз могу его прокрутить и посмотреть на другую сторону. Вроде бы всё замечательно. На одной стороне прокрутка как и полагается происходит на меня, но при повороте на другую сторону она уже выглядит так, как-будто происходит ОТ меня. Происходит это оттого, что я как бы продолжаю смотреть на другую сторону и, соответственно, то же самое движение визуально прокручивает её на себя для другой стороны. Привязка для этого вращения у меня осуществляется через одно единственное поле. Значение для этого поля я передаю из эвентов, где я смотрю, сколько накрутили и в какой направление, чтобы понять, насколько крутить и в какую сторону. Направление определяется знаком + или -. Как я это попытался решить. Я определяю, перешли мы на другую сторону или нет и если перешли, то значение поля я делаю отрицательным и, соответственно, цилиндр и на другой стороне начинает вращаться НА меня. Всё было бы хорошо, но, так как я это поле делаю отрицательным, то мне показывается не то что должно, а противоположная сторона. То есть, я накрутил на 90 градусов, повернул на другую сторону и мне показывает не -90(270) градусов, а 90 соответственно. То есть, если я делаю одно, то ломается другое. И как это сделать я не понимаю вообще. Надеюсь кто-нибудь поймёт, что я имею ввиду.
>>1887652 Если ты работаешь с гитом через VS, то иди гуляй. С гитом надо работать через консоль. Или хотя бы понимать что твоя ГУИ тулзяка делает behind the scene.
>>1887713 Я пару проектов выкатывал через Azure для тестовых заданий, чтобы нанимающая компания могла с моим приложением поиграть. Единственный косяк - через месяц они начинают требовать кредитную карточку, чтобы в случае если ты вышел за пределы бесплатных ресурсов с тебя начали снимать денюжку. А с пониманием что там платно, а что нет - очень сложно.
>>1887937 Запили на гитхабе репу с твоим кодом. Посмотрю Блобы, если они большие, в том числе изображение, можно хранить как раз таки в папке, а в базе – путь к ним > для вката Ты хотя бы sql до join изучил? Если используешь ef и подход code first, когда ты из кода бд генеришь, то можешь и не знать. Но в дальнейшем без sql будет плохо
>>1888553 Как можно по другому реализовать эти свойства? - реализовать кастомное ожидание на метод isEnabled(это должен быть вызываемый метод) - реализовать кастомное ожидание на метод isDisplayed(это должен быть вызываемый метод)
Нужно создать как то по своему их реализацию. Вот задание такое скинули. Когда спросил что сделать сказали нужно как то по своему их реализовать. Может при помощи явного и неявного ожидания типа ?
>>1888587 Ну ладно, я уж думал, ты чего напутал и решил свежачком обмазаться. По литературе не поскажу, разве что какие-нибудь старые книжки искать, как сейчас есть Pro Asp.net >>1888583 > Как можно по другому реализовать эти свойства? > - реализовать кастомное ожидание на метод isEnabled(это должен быть вызываемый метод) > - реализовать кастомное ожидание на метод isDisplayed(это должен быть вызываемый метод) Так свойства или методы? Кастомное ожидание – это какое? Какие параметры должны кастомизироваться? Как ты представляешь сигнатуру какие параметры в него можно передать метода, если уж это метод? Такое ощущение, что либо ты что-то не понял, либо задание составлял какой-то дебил
>>1888610 >Такое ощущение, что либо ты что-то не понял, либо задание составлял какой-то дебил
Не исключаю два варианта ))
Но по факту, насколько я знаю в .net нету методов таких, но есть свойства Dispose и Enable. То есть исходя из задания, нужно создать какую то кастомную проверку, на какие то элементы страницы ориентируясь на эти свойства
>>1888666 Ну ты разберись – свойства или методы тебе нужны. Набросай примерно, как это все должно фунциклировать, просто на словах, как это видишь. Пока сложно что-то сказать
>>1888702 Методы я такие в C# не нашел такие в Java есть
Ну я вижу так создать метод в параметры ему передавать элемент страницы который нужно проверить на наличие. В методе реализовать explicit wait и если данный элемент отобразился возвращать true если нет false. Примерно так думаю.
>>1888544 >Запили на гитхабе репу с твоим кодом. Посмотрю А что туда впаять? Сорец SQLite залить, или просто код примера-теста? Если второе, то: это был просто код отсюда: http://zetcode.com/csharp/sqlite/ из секции >C# SQLite create table затем она читалась вот так: >System.Data.SQLite.SQLiteDataReader dr = read(cmd, "SELECT * FROM cars"); >while (dr.Read()){ > Console.WriteLine("ID: {0} , Car Pet Name: {1}, price: {2}",dr[0],dr[1],dr[2]); >} плюс ниже, ещё - код отсюда: https://stackoverflow.com/a/625485 Чтобы протестить блобы.
Но я уже разобрался. Пока reader занят, нельзя изменить cmd.CommandText, поэтому надо было взять con и cmd в два using'а при записи-чтении таблицы, и так же само - в два using'а, при записи-чтении байт-BLOB'а, и внутри ещё - открыть соединение с базой, потому что после юзинков она закрывается.
У меня вчера так подгорало от всего этого, пиздец. Но по тихоньку разбираюсь.
Хотелось бы создать репо какое-то, чисто для гонева, чтобы срать там кодом, и сделать короче примеры там, для всех кейсов, что-то вроде тестов, ну, чтобы из их кода было очевидно как юзать эту либу.
>Блобы, если они большие, в том числе изображение, можно хранить как раз таки в папке, а в базе – путь к ним Вообще, изначально, я хотел протестить, как работает запись и чтение блоба, а в будущем, например, хранить зашифрованные пароли, байтами, вместо того чтоб конвертить их в hex и хранить как TEXT... Но, глядя на эти лимиты для текста и блоба, туда и картинки могут в base64, без проблем залезть: https://www.sqlite.org/limits.html Но бейс это громоздко, поэтому blob.
Ты прав, и быть может, лучше файлы хранить как файлы, потому что база может задамажится, но с другой стороны, в треде про СУБД, аноны говорят, что в БД главное НАДЁЖНОСТЬ ДАННЫХ, чтобы их не проебать. К тому же, как я понял, база, может ещё и реплицироваться, и синхронится по сети, а если файлами хранить, то для их раздачи придётся открывать общий доступ к папке, или шарить её, и по одному давать возможность выкачивать. Я думаю, лучше сделать таблицу хэш-блоб, и расшарить базу по сети, через TOR, чтобы как в torrent'e, по magnet-ссылкам, можно было, подключившись к рандомной базе, по хэшу файла, сразу найти его в базе и тут же - выкачать файл из децентрализованной сети. С другой стороны, раздувать базу блобами - хуита, особенно если её начнут вайпать файлами. Поэтому, лучше, наверное, там хранить просто хэш и относительный путь, а файл отдавать с расшаренной папки. Но тогда, файл (в смысле контент) - он может быть тупо подменён, где-то, и отдасться говно, а не годнота, а в базе данных такая хуйня исключена, там целостность данных - превыше всего. Пиздец дилемма, короче. Бггг.
>Ты хотя бы sql до join изучил? Нихуя я не изучил, я только вкатываюсь. Но потихоньку разбираюсь уже, вроде как, после этой статьи: https://proglib.io/p/sql-for-20-minutes А с чего начать грызть это дело, чтобы досконально знать? Слышал, что в даже тьюринг-полноту может сиквел, бггг.
>Если используешь ef и подход code first, когда ты из кода бд генеришь, то можешь и не знать. >Но в дальнейшем без sql будет плохо Не, "ef"(Entity Framework) и "подход code first" это всё, пока - вообще дремучий лес. Тот код, вышеописанный, который от котрого вчера мне пердак припекло, это был тупой тест методов System.Data.SQLite, списка методов которого я не вижу. Как я понял, это провайдер ADO.NET, и там над SQL-запросы фомулировать, и пихать, прямым текстом, в команды. Я даже, для этого, свои методы нагородил уже, блядь, чтобы просто SQL туда совать, и не дублировать нихуя после неё.
>>1888977 Да, пушо эта команда Thread.Sleep() тормозит всю программу. В то время как в течении Task.Delay() программа может исполнятся, но подтормаживается запуск задания. То есть это неявное (implicit) ожидание, а Thread.Sleep() явно (Explicit) торозит всё (wait), нахуй: https://stackoverflow.com/a/34052540
Как вообще работает сжатие байт массива? Заюзал компрешн дот нета - на 580мб может сжалось от силы мегабайтов 10. Что я делаю не так? В байт массиве jpg пикчи. Как их еще можно сжать (как файл, а не как шакалы)?
>>1870468 (OP) Ёбаный рот вашего дотнета. Помогите понять логику индусов. Вот есть Windows 10. Всё новое API WinRT прибито к UWP. Допустим мне нужно Windows.Graphics. Пока всё отлично с UWP. Так же есть .NET Standard, специально сделан чтоб поддерживался всем чем можно. Я хочу использовать либу на нём, она естественно на самой свежей версии - 2.1. И вот тут я не могу понять шутки. UWP не поддерживает .NET Standard 2.1! UWP не поддерживает .NET 5.0! Так как мне использовать API дриснятки и их "универсальный" .NET Standard? Алло, индусы! Как, блять, либу из Nuget поставить? Пока что вижу только вариант накостылить два отдельных процесса под UWP и всё остальное. В доках к .NET Standard 2.1 уже полтора года написано что поддержка UWP "будет когда-нибудь в будущих релизах"... В 20H2 так ничего и не завезли...
>>1889074 >В каких еще мутациях? У тебя ссылка на массив QuestionPicture передается в метод Compress и потом в метод Write, т. е. изменения этого массива в методе Write, если этот метод его изменяет, отразятся в любом другом месте приложения в которых ты массив QuestionPicture использовать будешь. Но причина не в этом, а в том что ты CopyTo используешь вместо Read при распаковке в методе Decompress.
> на 580мб может сжалось от силы мегабайтов 10.
Это от формата зависит, лучше всего сжимается текст, jpg сжимается плохо, в случае картинок лучше использовать конвертацию в другой формат, например в webp.
Кто сталкивался с подобным. В проекте коменты на русском языке отображаются нормально а когда заливаю их на гит то иероглифы ебаные. Что делать как победить этот момент?
>>1889096 Я по отдельности и сжимаю. >>1889094 Я нигде его больше не использую, метод для теста. > CopyTo используешь вместо Read А какая разница в этом контексте?
>>1870468 (OP) Привет, аноны. Есть у меня АСП НЕТ проект, у которого на дефолтной форме два хтмл-бокса для текста. Как мне из одного текстового поля хендлить текст, передавать его в функцию, которая на него выдаст новый текст, подаваемый во второе поле?
Сори за тупой вопрос, не требую решать за меня, просто даже хз как гуглить, выдаёт вообще не то, что нужно.
>>1889089 Че тут непонятного-то? .net standard и .net5 для другого делались. Они нужны чтобы общий костяк фреймворка вынести на более-менее кросплтаформенные рельсы, чтобы можно было пилить .net хуйню и без лишних танцев с бубнами запускать на серверах с линуксами. И с этой задачей они справляются. Вот серьезно, подумай, какой процент ПО сейчас пилится исключительно под десктоп, еще и привязанный только к винде? Да и кому нахуй нужно приложение, которое будет оффлайн работать? А так, ты запилил на .net приложение, захостил его, фронт на каком-нибудь электроне за 2 недели сделал, и все довольны.
>>1889255 Что ты под "запустить асинхронно" подразумеваешь? Ну создай Task и запускай в нём DispatcherTimer, будет тебе асинхронно, асинхронного аналога метода Start() у DispatcherTimer нет. Но в этом смысла нет, потому что запуск не занимает много времени.
>>1889272 > There are various implementations of .NET. Each implementation allows .NET code to execute in different places—Linux, macOS, Windows, iOS, Android, and many more. .NET Standard is a formal specification of the APIs that are common across all these .NET implementations. При этом на основной платформе индусов приходится сосать хуи. Это доходит до абсурда - есть либы строго под десятку на Standard, но к UWP не прикрутить просто потому что. А ведь по мнению самих индусов, UWP - это основной гуй десятки, на который всё переводят. Я просто не могу понять логики индусов, когда они пилят кроссплатформенность уровня джавы чтоб на любом чайнике запускать, но не могут осилить даже совместимость с Виндой. Вот .NET 5 не для этого делали, но на него и похуй, я ссылался на него потому что он совместим с .NET Standard. А знаешь что самое смешное? .NET Standard 2.1 работает с Xamarin!
>>1889291 Хуитищща. При клике на кнопку идёт медленный и тяжёлый поиск элементов. При каждом клике. Представляю, как будет всё тормозить с таким подходом.
Выноси поиск в геттеры, при первом вызове геттера, как все нормальные люди.
>>1889296 Ты наверно с Blazor путаешь, Razor всё на стороне сервера делает, клиент получает готовый HTML, всё остальное по старинке на JS и CSS делает. Про Blazor знаю только что его активной майки продвигают (даже стримы на Твиче делают на которых объясняю ньюфагам как с ним работать) и вроде говорят, что с каждым обновлением он всё быстрее и лучше.
>>1889089 Вот это справедливый доеб. Без бутылки не разберешься По итогу просто не пользуешься UWP и прочей декстопной дребеденью. Мобилки? Ну там придется поебаться. Я бы предпочел флаттер. На дотнете удобно пилить бекенд, удобно делать сайты на разоре, сейчас еще и блазор завезли.
>>1889288 Дело в том что у меня при фризе формы фризиться сам таймер. У меня на форме загрузка с бд картинок и если быстро их переключать то будет как в том меме Unfortunately Time has stopped. А лейбл на форме я уже обновляю через invoke, правда толку в этом мало.
>>1888850 Через еф будет удобнее и и ридеры не нужны. Ебался на одном проекте с ними. Ебучие экспешены валились хуй пойми откуда, там еще предыдущий программист учился, блядь, на продуктовом коде многопоточности и, как водится, обосрался, заложив пару мин в код. Заложил и уволился. Следом с этим кодом работал аналитик, который не учил шарп, просто накопипастил пару методов, подправив название и пару строчек кода, получил требуемый функционал, да только не учел, что состояние все на флагах и не потокобезопасное Достался мне этот кусок дерьма с классами по две тысячи строк Нахуй эти ридеры, решительно. Особенно при живом entity framework – где все просто и понятно, и можно даже sql не знать.
Сам можешь поиграться, только в прод не тащи эту парашу
>>1889346 А, бля, понял. Я этот код вставляю в начало aspx.cs файла, и все нужные мне впоследствии атрибуты находятся и задаются при прогрузке страницы, а не когда я в них непосредственно начинаю нуждаться.
Хотя стоп, как мне это поможет с текстовым содержанием, которое пользователь потом вводит?
>>1889345 Асинхронной или в другом потоке? Означает ли асинхронность, что у нас есть евент луп, и мы в эту залупу вставляем задачи, кхмм. Эта лупа постоянно скачет во внутреннем цикле по задачам? То есть даже на одном потоке можно получить плавный интерфейс, пока что-то долго загружается?
>>1889350 В сеттерах отправляешь на страницу. В геттерах получаешь со страницы. Но только если есть изменения. Таким образом, несколько геттеров подряд сработают быстро. А вот сеттеры нет. Тут надо сложнее делать. С кэшированием заморачиваться.
И вот сеньоры программисты ебались есбались с этим и изобрели MVVM! DataBinding и другие страшные слова.
>>1889354 >Асинхронной или в другом потоке? Асинхронность не подразумевает использование одного потока, выполнение до await и после await может происходить в рамках разных потоков, также как и запуск одной асинхронной фукнции несколько раз подряд без использования await.
>Означает ли асинхронность, что у нас есть евент луп, и мы в эту залупу вставляем задачи, кхмм. Эта лупа постоянно скачет во внутреннем цикле по задачам?
В случае асинхронности - нет. В случае WPF - да, так как всё связанное с интерфейсом происходит в рамках одного потока. Вот ты в рамках этого потока обращаешься к базе данных, поэтому тебе нужно либо делать подобные обращения асинхронными, чтобы поток UI освобождался и мог перерисовывать интерфейс и делать другие задачи, либо обращаться к бд в отдельном потоке и полученные данные передавать в поток UI при помощи Invoke диспетчера.
>То есть даже на одном потоке можно получить плавный интерфейс, пока что-то долго загружается?
Да, если загрузка идёт асинхронно. Либо если ты одну задачу разбиваешь на несколько и выполняешь эти задачи с определенной задержкой. По такому принципу в браузере всё работает.
>>1870468 (OP) Не нашел в шапке задам сюда, глупо но извините:
До шарпа изучал С/С++ достаточно долго. Играет ли это роль в освоении шарпа? Или у меня такой же уровень знаний как у человека, который вообще никаких языков не изучал?
>>1889657 Зависит от того на каком уровне ты изучал. И что в процессе изучения делал. Если что-то сложнее калькулятора сам писал на С++, еще и ООП использовал, то шарп для тебя будет выглядеть скрее как: А как эти штуки в шарпе делаются. А это намного выше чем: Вообще никаких языков не изучал. Ну, т.е. тебе останется посмотреть стандартную библиотеку, чтобы велосипедов не горадить, некоторые особенности языка, такие как свойства, делегаты, события и т.д.ну и шарповский туллсет, понять как устроен nuget и csproj
>>1889657 Играет. Вот я после JS шарп учить начал, так пришлось всё переосмысливать, потому что и не знал особо чем объект от массива отличается в плане хранения в памяти.
>>1889908 Нет, любой нельзя. Только твой. И только для целевой платформы. Будет нативный эльф в линуксе, внутри которого будет содержаться копия фреймворка вместе с твоим хеллоуворлдом. И для шындовса придётся сделать отдельный паблиш. И в нём будет нативный ПЕ в виндовсе, внутри которого будет содержаться копия фреймворка вместе с твоим хеллоуворлдом.
>>1889849 Кто не является? Приведи в порядок мысли в своей голове, сформулируй какого результата ты хочешь добиться, опиши ситуацию максимально подробно.
Анончики, втф. Почему он пишет, что я не могу обратиться к объекту. При этом я находил код 2011 года, в котором написано именно так, и видимо он был рабочий.
Парни нужна помощь. Когда то нагуглил а сейчас не могу найти синтаксис передачи параметров в тест через терминал. Там примерно так выглядит dotnet test -s ```(name)```(value)``` что то такое. помогите прошу очень
>>1892253 Начни лучше с троелсена, потом рихтером шлифани. Метанит – как краткий конспект, когда забыл синтаксис, но подсказки иде недостаточно информативны, а мсдн слишком многословен
>>1870468 (OP) Анончики, а по каким материалам лучше начать изучать ASP.NET Core? Основы c# я уже понимаю, хочется пойти дальше, а не клепать консольные приложения. Хочется сразу изучать свежачок .NET 5
Еще поясните вот за метанит. Правильно ли я понимаю что Angular и ASP.NET Core - фронт энд Руководство по ASP.NET Core - бекенд Руководство по Web API это шо? Руководство по ASP.NET MVC 5 - в чем разница 5 и 4? Онлайн-книга Изучаем ASP.NET MVC 4
На метаните я смотрю че да как также еще в паре книжек тоже смотрю. Но вот сейчас вроде изучил немного сам c# а что дальше то делать? по sql еще читаю.
Родмап говорит что далее надо учить Entity Framework А что читать то? Книги это конечно хорошо но мне как то лучше читать метанит а потом если совсем не понятно читать книгу. Что на метаните то читать? Руководство по Entity Framework Core 3 Руководство по Entity Framework В чем разница? Только версиях как и в версиях языка?
>>1892461 >Руководство по ASP.NET Core - бекенд >Руководство по Web API это шо?
ну так есть бэкенд MVC где всякие вьюхи там, хтмл рендеришь, то есть мудришь полноценный вебсайт а есть Web API где всякие там хитрожопые авторизации и отдаются данные обычно в json, то есть мудришь api
>>1892461 > Angular и ASP.NET Core - фронт энд Angular – фреймворк для JavaScript. Ты можешь писать на ангуляре в специальных IDE, и так даже будет удобнее. Например, в WebStorm. Просто есть шаблоны проектов, где сборка ангуляра встроена в проект на дотнете. Это франкенштейн из WebApi на бекенде и фрондендонвского фреймворка в данном случае ангуляр, но может быть реакт или vue. В итоге получается не очень удобно – сборка js-проектов обычно не быстрая. Обычно ее запускают один раз, а потом пользуются горячей перезагрузкой, так как js – интерпретируемый язык и перекомпилировать его не нужно. А вот шарп нужно. И ты будешь страдать, когда надо что-то поправить в коде на шарпе. Короче, говно. Лучше писать бек и фронт отдельно. > Руководство по ASP.NET Core - бекенд Я не ебу, что там на метаните подразумевается под этим. Это искусственное разделение. 99%, что это тот же самый WebApi > Руководство по Web API это шо? Это руководство по вебапи, еб твою мать. Делаешь запрос на него – получаешь ответ. Все. Никакого графического интерфейса, просто данные туда-сюда ходят. Сохраняются в базу, обрабатываются, сохраняются в базу данных. Ты пройди уроки на мсдн, проще станет, заодно поймешь разницу между webapi, mvc, razor pages, blazor. Все успеть за день можно > Руководство по ASP.NET MVC 5 - в чем разница 5 и 4? Это легаси, забей хуй. Оно почти ничем не отличается от Core, только пара моментов сделано неудобнее, сам поймешь, когда въедешь в тему > Онлайн-книга Изучаем ASP.NET MVC 4 Опять же, легаси. Там вроде было про Core – его и читай > На метаните я смотрю че да как также еще в паре книжек тоже смотрю. Но вот сейчас вроде изучил немного сам c# а что дальше то делать? по sql еще читаю. Про sql ты хорошо придумал > Родмап говорит что далее надо учить Entity Framework Там учить особо и нехуй, фреймворк очень удачный получился, но надо понимать, что ты работаешь с sql, а не с хуй пойми какой абстракцией. Так что как sql подтянешь, все станет понятнее. На метаните неплохо все описано > Книги это конечно хорошо но мне как то лучше читать метанит а потом если совсем не понятно читать книгу. Хуевая логика, метанит тебе не даст понимания сути происходящего. Это конспект > Что на метаните то читать? > Руководство по Entity Framework Core 3 Пойдет > Руководство по Entity Framework Легаси > В чем разница? Только версиях как и в версиях языка? Core – новая ветка, работает везде. Без Core – только под винду и больше не развивается. Нахуй не нужен. Если на работе появится необходимость, потратишь пару часов и изучишь нюансы. Если знаешь sql, проблем не возникнет
Как начать учить фреймворки? Шарп вроде более-менее понимаю, но полгода сижу и хуи пинаю, потому что посмотришь в сторону ASP.NET или WPF какого-нибудь - и аж хуево становится от объема самых базовых знаний. С этого >>1892461 пика вообще выпилиться хочется, это ж ебнуться каким сверхчеловеком надо быть, чтобы это все знать.
Там всё в кучу намешано - никто не будет работать со всеми SQL/no-SQL базами данных, выберут 1 SQL для больших проектов и 1 no-SQL для небольших. Какие-то знания узнают за одну книгу, например паттерны.
>>1892652 Это-то понятно. Просто паттерны изучить - это легко, понятно, за пару вечерков с консолькой делается. А дальше идет адский пиздец, потому что чтобы просто устроиться работать за еду - изволь знать SQL, JS, CSS, ASP.NET, еще какую-нибудь хуйню сверху, паттерны знай, алгоритмы блядь, из головы умей их сложность оценивать, да соси хуй лучше любой проститутки. А как в это вообще вкатиться - хуй знает.
>>1892675 > алгоритмы блядь, из головы умей их сложность оценивать Вот это воще пиздец, как люди умеют в такую магию? У меня голова пухнет при попытке подумать об этом.
>>1870468 (OP) Можно как-то сбилдить в dll-ку, вот эту NoSQL базу данных - MemCached, позволяющую кэшировать JSON в виде пар ключ-значение: https://github.com/benapetr/memcached Чтобы не exe-шник, после билда получить, а .dll
Сап, шарпач. Поясните нубу, почему нужно дважды кликать на кнопку в WPF проекте, чтобы метод начинал работать? Гуглил солюшн, не помогло. Алсо, ещё проблема. Через DispatcherTimer запилил повторение каждый указанный промежуток времени. Также повесил на кнопку включение и выключение таймера. Так вот, всё включается и выключается, но когда я включаю второй раз, то Repeat_Task выполняется дважды. В какую сторону курить?
>>1893284 >Не нужно. Скажи это моей приложухе, она не реагирует на первый клик по кнопке. >Потому что ты добавляешь обработчик Repeat_Task каждый раз когда срабатывает условие if Можно ли мне убрать обработчики в else? Как это сделать?
Сап, стаковерфлоу. Каким инструментом в wpf'e можно показывать на image картинку (image.Source) на определенное время (на секунду)? Я пока нагуглил только такое: Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { Thread.Sleep(1000) }));
Но во первых thread.Sleep мне абсолютно не подходит - UIшка должна быть жива, во вторых работает оно всрато, т.е. пикча может нормально на секунду засветиться, а может залагать и засветиться на 0.1 сек, правда это наверное из-за DispatcherPriority.
>>1893334 Это как default в обычном switch-case, на твоём пике проверяются типы переменных, а не их значения, если тип Teacher то возвращает true, есди Student то false, если ни то ни другое, то false. Но сам код дерьмо, так как такого же эффекта можно было достичь написав: IsTeacher(Person person) => person is Teacher;
>>1893403 с lowercase название типа, так хотя бы будет интуитивно понятно. Хотя я думаю если с такой конструкцией часто работать, то можно понять, что это просто название переменной. # не трогаю пол года, уже глаз отвык видимо
>>1893582 Пихуй, я сам додумал. Смари, поясняю. На пикриле1 у меня вызывается Repeat_Task и работает всё нормально, если большой промежуток времени между тиками. Но, если маленький промежуток, то Repeat_Task постоянно вызывается, не заканчивая выполнения по тику. Решение проблемы на пикрил2.
>>1893367 Это временная переменная, она больше не нигде не фигурирует, буквально на пару строк. Это не один такой чувак, это даже решарпер такие переменные вставляет по дефолту в такие контексты.
>>1870468 (OP) Есть вопрос по индексации JSON. Предоложим, есть огромная хэш-таблица key->value, где value - текст, или blob в base64, а key - хэш из всего этого дерьма. Пусть эта хэш-таблица будет огромной-огомной, и пусть она лежит в виде нарезанного на части - JSON-файла, не помещающегося даже в этот (пикрил), автобус с жесткими дисками.
Задача элементарна. Проиндексировать всю эту хуйню как-то, чтобы быстро найти нужный жесткий диск, кластер на нём, сектор, ну и собственно считать данные. Ну и собственно вопрос: Как правильно выстроить индекс JSON-файла?
>то есть? что это такое должно быть? >что такое гуи склайт на шарп? >программ админок Sqlite валом, но причем тут шарп Короче, надо что-то более годное, как вот то, повыше, чтобы дохуя свистоперделок было, и главное, чтобы был полный опенсорец, на шарпе, и даже - портабле ексекутабле, и чтобы не надо было с установкой конпеляторов всяких пердолится, а просто чтобы MSBuild или csc запустить и сбилдить, а ещё, желательно, чтобы приинклюдить сорец в либу, чтобы отдельный екзешник гуя шел, вместе с dll-кой сиквелайта.
>Да вроде как и не причём, ведь ему нужно для некоего > CShasp Ну хуй знает, почему меня переклинило в четыре креста. А разве это не тред про шарпег?
Я опять выхожу на связь. Есть один image в wpf. Я накодил ему смену картинки в методе привязаном к dispatcherTimer. Диспетчер таймер имеет интервал 500ms, все работает. Вопрос - как можно/правильнее сделать еще один интервал для картинки. Мне нужно чтобы сначала был интервал (смена/показ картинки на заданный промежуток времени) в 500мс, потом в 2000мс, потом опять 500 и так циклично. Если я сделаю еще один метод и диспетчер я могу словить ексепшн - ваш поток не поток? Или можно задавать интервал в самом методе привязаного на tick? Как лучше?
>>1894290 >чтобы был полный опенсорец, на шарпе, и даже - портабле ексекутабле ну видимо никому оно нахер не нужно изобретать велосипед. и если найдешь то это будет продукт такого же как ты - искателя фатальных недостатков
>>1892641 Лучший способ - начать что-то делать. Срсли. Хотя бы простенький движок для форума запили, чтобы чел мог просто запустить и потом прикрутив фронт - иметь полноценный форум с темами, разделами, ролями, кармочкой, банами, таймаутами и прочим.
Вы мне лучше объясните, неужели без тяжеловесного asp нет работы в .net? Ну, банально же проще сделать простенький веб-сервер на HttpListener, допустим кому-то нужно просто зафигачить сервак для лендинга, например, ему бы действительно было нормально запилить сервер который из 100 строчек состоит, не тащить аппач, nginx или полный asp.net (core). Ну, просто мне это кажется странным. Неужели мелкой работы для шарписта нет?
>>1892641 > С этого >>1892461 пика вообще выпилиться хочется, это ж ебнуться каким сверхчеловеком надо быть, чтобы это все знать. В прошлом году начал учить шарп. Буквально вчера подобрался к второму блоку. EntityFramework. Туториалы смотрел для начала. мимо
>>1894679 Чего там непонятного? Фреймворк - это просто каркас, тебе не нужно его полностью изучать, как не нужно всю стандартную библиотеку в голове держать. Ты просто смотришь задачи: Ага, мне нужно тут JWT-токены захуярить, гуглишь как оно делается и делаешь у себя; ага, мне нужно кукисы - гуглишь - делаешь. Все, блядь. Это не высшая математика, это просто вопрос того, умеешь ли ты гуглить и читать код, пытаясь понять, а не тупо скопипастив.
>>1894690 Ну это упрощение у тебя, согласись, есть определённый известный набор знаний, без которого ты даже загуглить не сможешь то, что хочешь сделать.
>>1893588 Я нуб но мне интересно, зачем ты, по сути, запускаешь каждую задачу по-очереди? Почему бы все разом, учитывая что они не зависят друг от друга?
Еще я вижу что ты там интерполяция строк пытаешься дату выводить, почему просто не использовать форматированный вывод для DateTime, и если у тебя нестандартный, этот формат вынести в константу и использовать? Что-то типа: const string DateTimeFormat = "dd.MM.yy hh:mm:ss"; DateTime.Now.ToString(Consts.DateTimeFormat);
Да, еще, что будет если пользователь решит отменить эту задачу, а твой таймер еще внутри foreach? Просто я вот не вижу каких-то cancellationToken или чего-то подобного, чтобы прервать выполнение, т.е. получается, пользователь может остановить, затем клацнуть запустить и у тебя эта задача будет 2 раза выполняться? Или ты как-то в гуе делаешь кнопку неактивной, пока не завершится вся загрузка? Но это же странно, пользователь может захотеть прервать подзагрузку же, иногда это выглядит будто программа зависла и пользователь может ебнуть весь процесс, что тоже нехорошо.
Сорян за нубские вопросы, просто интересно же, почему так вот делаешь.
>>1894711 Так нужно эти знания получить сначала, прежде чем в изучение фреймворка лезть. Ну, просто вот ты не знаешь что такое куки и нахуя они нужны и используются. Ты "изучаешь фреймворк", доходишь до кук, не понимаешь что это и зачем нужно и что тут происходит? Ты поймешь это? Нет, такая информация не усвоится. Как пятиклашка не поймет интегралы, даже если будет сильно пытаться въехать.
>>1894730 Всё верно. Но это обычно настолько сильно подразумевается всеми, что некоторые нубы вообще не знают об этом. Мало того, обижаются, когда им предлагаешь матчасть изучить. Типа > хули ты мне втираешь, некогда мне учить информатику! бабло зарабатывать надо! Объясняешь такому, что без базовых знаний, он фреймворк не поймёт. А он ссыт тебе в глаза. А буквально на следующий день приходит с вопросами типа > как сложить 2+2 в этом фреймворке? Что за говно? Почему эту парашу все так хайпят???
>>1894661 >неужели без тяжеловесного asp нет работы в .net? ничего тяжеловесного в асп.нет там просто много всего зареференсено как метапакет. просто выше расход памяти из за 100500 разных кешей всего на свете чтобы поберечь GC
>>1894378 Чел, почитай про MVVM и заюзай какой-нибудь калиберн или мввмлайт. Во вью модели запускаешь свой таймер и меняешь пропертю с картинкой, вьюха просто байндится на это проперти и никакой ебли с потоками. Ну и заодно не будешь логику основывать на том, какой текст написан на кнопке. Или ты не этот >>1893588 ?
>>1894849 Подготовил набор вопросов со скриншотами. Виды вопросов: 1. Тут я себе стреляю в ногу, видишь, где? 2. Тут не совсем тривиальный код/разметка/sql запрос, можешь понять, что происходит? 3. Если пользовался, можешь сказать пару слов про эту фичу языка/фреймворка? 4. Вот тебе юайный компонент, опиши словами, как такое можно сделать с таким стеком технологий? Еще сотрудник немного по теории и основам языка погонял.
Естественно, сложность рассматриваемых кейсов была под уровень кандидата или немного ниже, с поправкой на минимум доступного времени. Сами кейсы, во многом, заимствовал с проекта, или делал похожие. Не знаю, насколько это репрезентативный собес был, но все довольны мной остались, обещают приглашать дальше.
>вкатун 21 лвл без вышки Какой вывод из собеса сделал: портфолио - хорошо, но иметь теоретическую базу и некоторое понимание, как работают технологии - необходимо для прохождения технического собеседования. Смотреть только на гитхаб соискателя - нельзя ни в коем случае (на начальных позициях)!
>>1894843 Это не я с репитами. Мне мввм ни нужон, я уже все сделал - просто присваиваю интервалы в методе tick. И потоки не нужны. И проперти там не нужно.
Анонче, такой вопрос. Защищает ли закон структуру бд? Есть у меня взломанный софт, в нем есть бд, вот я хочу запилить такойжеНу не прям тот в точ, а просто для того что бы что то в резюме вписать. Дак вот если я скопирую структуру бд это будет считаться как что то плохое? Там просто дохующа таблиц и мне как бы на первых парах не надо все. Но если я буду делать сам чета придумывать то получится хуета, софт то то знающие люди делали и структуру бд тоже делали с умом.
>>1895002 Некоторый софт целиком на бд крутится. На хабре была статья, как лингвалео или какая-то другая шняга для изучения языков перенесли всю бизнес-логику в бд и получили охуенную экономию ресурсов и кучу охуевших пользователей, у которых дропнули коллекции изученных слов. Естественно, структура бд – плод чьего-то труда. Учитывая, что для гитхаба могут сделать как для ютуба – поиск плагиата, то опубликованный чужой код может тебе аукнуться если не сегодня, то в будущем. А может и не аукнуться. А какого рода приложуха -то, что куча таблиц?
>>1895356 Ну софт для арбитражников и маркитологов. 80 таблиц, хз на сколько это много. Тут еще дело в том что овнер данного софта жалуется на своих конкурентов которые делают бесплатный аналог.
Здорова, уважаемые. Такое дело, я сейчас студент (магистратура в дс), и мне тут начали преподавать C# на достаточно приличном уровне. Я раньше как-то с предубеждением относился к шарпу и жабе, и не смотрел в его сторону, а сейчас прямо влюбился. Но со вкатом не особо понятно... Смотрю на жабу постоянно в банках набирают, и платят дохуя, у меня куча знакомых ещё на 3 курсе устроились и сейчас по 200к зашибают. Просто думаю пока я студент, может стоит задрочить жабу и вкатиться куда-нибудь на стажировку, потому что на шарпе че-то смотрю один веб, который не то чтобы вызывает у меня восторг, а другие места хуй знает, есть вообще? Сначала подумал может стоит паралельно и жабу и шарп осваивать, но походу не осилю, да и вообще жаба как земля че-то, шарп намного больше доставляет.
>>1895806 Смотри что тебе больше интересно же. Ну серьезно, может быть тебе нужно прямо сейчас зарабатывать, то да - бери джаву и ебаш. А может быть тебе хочется с .net'ом иметь дело больше, чем сразу начать много зарабатывать - то таки ищи на шарпе стажировки/вакансии начальных уровней. В конечном итоге, через 5 лет опыта работы, разница между джавой и шарпом сглаживается, другое дело, что если тебе не будет хотеться развиваться в той области, с которой ты начнешь, то ты через 5 лет будешь на уровне мидла, а если интересно будет - будешь каким-нибудь крутым сеньером-помидором. Именно это и важно на начальных этапах: определить что тебе вкатывает в профессии и это изучать, блин. Я вот знаю челов, которые получают 8к зелени получают зная исключительно как с БД разными работать, но эти челы пиздец как ебанулись на нем, они о недокументированных фишках разных СУБД знают, они знают как не просто писать оптимальные запросы, но и как все это охуенно замутить распределенно пояснят, при этом о любой новой штуке что появляется - они сразу же узнают, сразу изучают, ты посмотришь их запросы и сначала ужаснешься, а потом взглянешь на карту запроса и охуеешь, потому что там блядь все так оптимально, что лучше уже и не сделать. Вот за эту хуйню они и получают деньги, а все потому что эти челы угорели по СУБД на начальных этапах, а сейчас сверху они и анализом занялись, поизучали питоны. Я это к чему. В IT почти любой навык полезен, и уж тем более хорошо оплачивается, но только когда ты его действительно охуенно освоил. Даже, блядь, на дельфи ты найдешь работу, даже на ассемблере, даже на аде или F#, если ты будешь действительно в этом крут и будешь развивать свои скиллы дальше; а если ты просто изучил синтаксис, пару фреймворуков освоил, либы знаешь как накатывать и все что ты можешь - круды, то в определенный момент тебя просто заменят тем, кто делает все это же, но дешевле: студентом, потом ИИ.
Аноны, мне кажется это работает как-то не так... то есть что бы прочитать склРезультат я должен сначала преобразовать в стринг а потом в то что мне надо, как по мне это отличная среда для разных ошибок, про производительность я вообще молчу, как можно сделать это поумнее?
>>1896558 Так тут не в девексе дело, будто я на ЕФ я делал бы то же самое, там тоже есть фича с исполнением непосредственной sql команды которая возвращает дата сет, собственно на скрине он, а девекс или не девекс тут не играет роли, меня интересует именно как эффективно парсить этот необработанный датасет, в интернете я ничего понятного не нашел
Кстати может кто знает и может объяснить, а какого хрена вариант что на пике тут >>1896555 все равно оказывается практически на секунду быстрее чем обычный запрос через EF
>>1896966 Таким вот "И что?" надо просто не отвечать. Пусть лесом идут. Ему уже всё загуглили, а ему лень по ссылке перейти и прочитать. Знания студента, зато замашки сеньора.
>>1897011 Я зашел. почитал что это влияет на скорость записи в базу, и незначительно влияет на скорость чтение, собственно я написал и уточнил что я говорил только о чтении, на что анон мне ответил что мол "нед необходимости инфу для трекинга" тут я и понял что анон сам мало что понимает потому что-то что анон процитировал фактически не влияет на время ответа, поэтому я решил что и смысла отвечать ему нет
>>1897021 Тебе официальная документация говорит, что так быстрее, а ты все равно уперся. Хочешь разобраться, почему, поковыряй исходники EF. А вообще вместо того чтобы тут спорить, уже бы давно добавил в своем запросе этот вызов и замерял бы.
EF стартует чуть дольше, потому что надо много чего в память подгрузить и сконфигурить. Дальше он работает очень близко к чистому SqlConnection, а иногда и быстрее благодаря агрессивному кешированию.
У меня локально на гиговых БД чистый SqlConnection и EFCore выполняют Select/Insert за 1-10мс. Зависит тупо от того, на сколько быстро Sql Server обработает запрос.
Чтобы меня взяли на мою первую работу за еду, мне надо, наверное, на собеседовании показать какой-нибудь свой проект на гитхабе? А какой например? Что нравится эйчарам?
>>1898616 Домашнюю бухгалтерию запили свою. Менеджер персонального бюджета. Такое всегда и всем заходит. Главное, как и в вопросе с калькулятором выше - сделай так, чтобы самом хотелось пользоваться (если бы ты не умел считать и тебе требовалась помощь для организации своих финансов).
>>1870468 (OP) Сап, нужна помощь. Возможно ли стандартными средствами . Net прочесть содержимое GZipStream и конвертировать в массив байтов? Через binaryreader не выходит, при попытке копировать в MemoryStream у последнего содержимое пустое. Что может сработать?
>>1898616 Я купил бу сервер и запили собственный шифрованный файлообменник, и как и этот анон сказал >>1898620 я сосредоточился на том что бы самому хотелось использовать, реализовал фишки которые отсутствуют в имеющихся файлообменниках, и подумал так, даже если для портфолио не покатит то зато хоть будет у меня бесплатное облако, то есть в любом случае время не зря потрачу, как некоторые аноны которые берут для портфолио проекты которые потом ни для чего не используются или просто выбрасывается, собственно на собеседовании всем понравился проект и на первом же собеседовании меня пригласили работа на них, а файлообменник попросили допилить и заюзать для их корпоративных нужд
Сап шарп, студия ебанулась - сможешь ли ты совладать с ней? Ловлю эксепшн - не удается найти ресурс "Image/Module 2/pic.jpg" при попытке считать пикчу с ресурсов приложения. Сам uri - "pack://application:,,,/Image/Module 2/pic.jpg". Что самое интересное это то что у меня идентичный код нормально считывает пикчи с папки Module 1. Пикчи в Module 2 лежат, uri 100500 раз перепроверил. Свойства на картинках выставил (действие при сборке - resource, всегда копировать самую позднюю версию). Пробовал абсолютный/релятив ури. Пробовал очистить/собрать билд. Нихуя не помогло. В чем еще может быть проблема? Можно как-то явно посмотреть свойства билда?
В треде есть те кто рисовали .png слой на картинки? Есть один небольшой метод для рисования .пнг слоя на .jpg картинке который работает на bitmap/graphics https://pastebin.com/TrnGkpc9 . С 30 картинок - стабильно 3 пички (одни и те же) куда-то съезжают нахуй - 1 сжимается в верхний левый угол более чем на половину, другая наоборот растягивается в правый нижний угол и выходит за пределы, третья просто сжимается в левую сторону. Разрешение картинок я само собой проверил - что у слоя что у картинки - 1920х1200, никакого смещения не требуется. Все начальные картинки .jpg, слои - .png. С чем это может быть связано? Или есть какой-то более нормальный способ для наложения слоев?
>>1901449 > Или есть какой-то более нормальный способ для наложения слоев? Бери Win2D и рисуй через CanvasComposition, на GPU с нормальным пайплайном. > System.Drawing Откуда ты откопал это говно мамонта времён первого дотнета и ХР?
В общем такая штука нужно написать программу и автотест к ней. Программа должна логиниться в яндексе и возвращать имя пользователя. Автотест должен проверять совпадает ли то что вернулось с тем что должно быть. И вся соль в том что не получается залогинится. Исключение что элемент не найден. Не могу ввести логин по итогу. Пробовал разные локаторы. Явные ожидания и обычный Thread.Sleep нихера не помогает. Что может быть ? Куда смотреть.
>>1901675 Во-первых, какой нахуй xpath, когда есть селекторы? Во-вторых, сайты защищаются от автоматизированного доступа, особенно такие как Яндекс. Поэтому в 99% случаев нужно суметь обойти эту защиту. По всей видимости у тебя не хватает навыков HTML и CSS для того чтобы проанализировать страницу и сайт с которым ты работаешь.
>>1901675 Чел, в Яндексе клики не работают как ты ожидаешь. И HTML рендерится через жопу жсом. Там такая пердольная срань, что ахуеешь. Пробуй их API или шли на хуй хуяндекс.
Нестатический класс в котором объявлен нестатический ивент public event Action MyEvent; Я подписал на этот ивент статический хендлер static void MyAction() { } вот так this.MyEvent += StaticClass.MyAction;
Будет ли этот статический метод удерживать объект от сборки мусора?
>>1902181 > удерживать объект Мамку свою держи лучше. Как только экземпляр класса выйдет из области видимости - твой эвент перестанет работать. Вообще поебать статический или нет метод - его вызывает класс, который будет уничтожен. Алсо, статика в ООПе - костыль, который надо избегать.
>>1902236 > Алсо, статика в ООПе - костыль, который надо избегать. Двачую. Это когда сделали полностью ООП-язык, а потом оказалось, что нужны неООП-функции. Зачем вообще надо было делать полностью ООП-язык и хвастаться этим 20 лет, если в итоге оказалось, что статический функционал необходим для ряда задач, как например, точка входа в приложение и предыдущие языки прекрасно справлялись с ООП, будучи императивными ("статическими").
>>1902255 >что нужны неООП-функции. Зачем вообще надо было делать полностью ООП-язык то есть существование статических классов вам ни на что не намекает. )
алсо, почему предпоследняя строчка таблицы корректна? я себе объяснил так: в пером случае переменная magicB никуда не ссылается, поэтому мы можем присвоить ее переменной c, произведя явный каст я в чем то неправ?
Анонче че за прикол? Изучаю пикрил. Все четко и ясно. Но вот я даунич не могу понять почему не отображает сраницу. Файл есть. Бля я название файла по буквам проверил. Вроде все сделал как сказано в книге. Шо не так то?
>>1903027 Чел, это специально сделано чтоб стрелять себе в ноги не отходят от класса. Тут надо спрашивать зачем вообще это сделано. В нормальных ЯП это называют hidden control flow и там борются с таким, чтоб без твоего ведома при чтении переменной или сложении не начинал считаться факториал в кишках. Я бы на твоём месте не использовал это в принципе. Нормальные люди явно через методы класса setA/getA работают. А то в чужой либе из-за сеттеров внезапно при дроче переменных может начать жрать память, а GC яростно тереть мусор. Просто потому что ты не знал что там внутри рандомного инта что-то происходит. А потом удивляются почему же шарп жрёт память чуть ли не больше жабы.
>>1903143 А нахуя тогда оно надо эти ваши свойства? Ну да, могу я запихнуть какую-то анальную модерацию в set, ну и что с того? Ни разу не приходилось этого делать, кстати
>>1903205 Навскидку два примера: 1) используется внешний менеджер ресурсов, который юзает внутреннее АПИ для доступа к ресурсам. Ты хочешь назначить ресурсу внятное имя переменной. Поэтому в геттере у тебя идёт вызов GetExternalResource<Type> а в сеттере соответственно SetExternalResource<Type> 2) надо, чтобы несколько переменных были синхронизированы. Например, в текстовом ярлыке на форме выписывается число, в строковом представлении, а в коде у тебя int переменная, которая в своём сеттере делает Label1.Text = IntToString(myIntVar);
>>1903445 > реактивное программирование Это типа, > если я назову шлюху деловой женщиной, которая грамотно воспользовалась ресурсами, то смогу на ней жениться и не буду считать себя куколдом. Примерно как-то так я это вижу.
>>1870468 (OP) Привет всем. Как быть? была задача на десериализацию ~3000 страниц. Сразу сделал через parallel.foreach. Пошло не очень, без async не то, ушло 3:10 минут на все. Переписал на многотопочность через разбиение n количества страниц на 1 поток и внутри ещё async. Намного лучше ушло 1.30-1.40 на все. потом через дебри узнал про tpl dataflow. Объединяющий удобства параллелизма, многопоточности и еще ассинхронно. Ушло 1:10-1:1:15 на десериализацию. пока искал решение ушло больше времени чем на написание, чувствую себя архиологом. Если способы быстрого поиска нужного и актуального инструмента? А то вся информация про tpl dataflow за 2012-2017 год. и так с каждым инструментом решающий сложную задачу. Нахожу первый попавшийся инструмент, потом ещё больше поисков через дебри ещё лучше инструмент, но все инструкции по нему дремучие ужас. А потом сижу и думаю может есть что-то более современее и лучше?
Челики помогите!!! Не знаю в чем херня. Из меню не могу выбрать элемент. Получаю исключение NoSuchElementException Хотя по локатору элемент находится. Что делать что не так ?
>>1905690 >А то вся информация про tpl dataflow за 2012-2017 год. а что там может быть нового (ну кроме того что они пакет переиеновали). это просто pipeline парадигма и если тебе проще мыслить ей - тебе подойдет закодить вручную всякие async+producer/consumer не сложнее (лично мне проще) В общем у кого как мозг мыслит тот то и выбирает абстракции для выражения.
>>1906323 ну ты можешь взять блоки от датафлоу, которые суть абстракции "элементы pipeline" и сформировать из них цепочку.
а можешь взять например System.Threading.Channels и просто сделать очереди, где результат текущей работы перекладывается в следующую очередь, из которой другой кусок кода выгребает (producer/consumer) по мере своей работы и кладет в следующую.
Dataflow - абстракция повыше где ты вот такие куски кода выделили в обобщенные элементы и потому описание получается более декларативным, нежели прямая реализация на основе очередей. Это те же яйца, просто в обертке.
>>1906406 ну так код все равно нужно где то написать если во вьюмодели, то InputBindings в помощь, а вьюмодель поменяет что-то у себя и контрол связанный с вьюмоделью отобразит это новое значение.
Если же этому коду нечего делать во вьюмодели, то кроме кодбехайнда нужно мудрить бехавиор (атачед пропертю), но если это одноразовое действие, то никакого профита по сравнению с кодебехайндом это не даст
Анонче, вот что не так то? Делаю все как в книге, и ошибка как будто нет папки Models но она же есть. На всякий ссылка на проект https://dropmefiles.com/FQf4k Но там ничего нет по сути, просто папки. ВТФ понимаю что от не внимательности что то пропустил, но я уже 3 раза создавал проект и делал все как в книге.
>>1906805 Хуй пойми. У меня не компилируется с этой ошибкой. А взял проект из книги, удалил все файлы и оставил только такие как у меня, ошибка есть но компилируется проект.
Сап, аноны, ради всего святого, выручайте, завтра зачет по проге в моем гавновузе, осталась ласт лаба, помогите написать, умоляю, понимаю что тред мертвый, но сука как же нужна помощь(((, мог закинуть пару соток со своей дностепендии на карту тому кто сделает (нада через структуры и стримы захуярить)
>>1906881 Делается за несколько минут, даже сложно представить что может вызвать затруднения. Походу ты проебывался всё время и даже базового синтаксиса не знаешь.
Супер тупой вопрос: стоит ли сначала запилить что-то на винформсах(чтобы и сейчас поучиться, и потом на собеседовании показать), или сразу ебашить на впф? И небольшой контекст - программировать я уже умею, сейчас занимаюсь скорее перекатом на шарп, поэтому было бы здорово выбрать то, что юзает больше каких-нибудь интересных особенностей шарпа.
Вот у меня есть метод, он пока что ничего не делает полезного, но в скором времени будет, если я правильно его написал.
Как понять, что мне вернет метод? Можно как-то поставить точку остановки и чтоб студия сама запустила мне этот метод без дополнительных действий? А то сейчас мне приходится запускать весь проект, ебаться со всякими действиями, чтобы проверить работоспособность одного метода. Вот чтоб как проект запустился в студии, то сразу метод выполняется.
>>1907796 Для этих целей пишут Unit-тесты и применяют паттерны проектирования для того чтобы построить архитектуру, которая облегчит подобные действия. Есть даже такой подход как TDD при котором ты начинаешь писать тесты и только потом код который будет проходить эти тесты.
В общем, никакой магии для запуска единственного метода нет, можно конечно поебаться с рефлексией, но лучше всё таки делать при помощи тестов и архитектуры.
Есть пикрил конструктор и я хочу сделать его так, чтобы он был пригоден для использования кем-то другим, соответственно чтобы шанс выстрелить в ногу был минимален, и тут есть две проблемы: 1. Я подразумеваю, что пользователь сам озаботится копированием массива, если ему надо.(в целях оптимизации, потому что скорее всего почти всегда переданный массив уже будет никому не нужен) 2. Все точки в _points должны быть отсортированы по первой координате, но я это опять же скидываю на пользователя.(и в целях оптимизации, и потому что если он передал неотсортированные точки - значит у него что-то не так и надо тогда уж исключение кидать)
Собственно как лучше всего это все допилить? Я вот думаю просто пройтись по точкам и кинуть исключение, если они не отсортированы, и комментарий написать, что массив присваивается по ссылке, а не копируется. И если добавить бул переменную - копировать массив или присвоить ссылку - насколько от такого у вас бы глаза вытекли?
>>1908298 > я это опять же скидываю на пользователя > копировать массив > присвоить ссылку Бляяя, не пиши больше в тред. В шапке есть учебники, читай пока их.
>>1908300 Пчел, вопрос не про язык. Я не спрашиваю как мне скопировать массив, я спрашиваю как пользователю этого класса сказать, что я его массив забираю по ссылке, чтобы он не отдал туда тот массив, который планирует потом ещё в каких-то своих целях использовать, а сам сделал копию.
>>1908314 Ну, пчел, ну. Вот я передаю в конструктор листа ссылку и лист его не утилизирует, потому что он ему нахуй не нужен. А потом я его передаю в свой класс - и мне он там нужен.
Понимаешь о чем я? Как пользователь должен знать, буду ли я его данные менять или нет, когда это не очевидно из предназначения класса?
1) Нужно отобразить гифку в WPF окошке. В тырнете сказали что WPF такое не умеет, но есть либа WpfAnimatedGif и мол она самая популярная. Загрузил, написал как сказано в документации (мне нужно из бэка) ImageBehavior.SetAnimatedSource(ImageControl, _gif1); где _gif1 это _gif1 = new BitmapImage(); _gif1.BeginInit(); _gif1.UriSource = new Uri("pack://application:,,,/Images/1.gif"); _gif1.EndInit();
И угадайте что? Пизда - минус полгигабайта озу на отображение. Ебаный рот этого казино. Сразу объявлю параметры гифки постить не буду чтобы до меня не доебались: 1.47мб, 28 кадров, кадр меняется через 100 милисекунд сам скрафтил. Я молчу про то что в самом впфе дефолтное окошко с изображением, бэкграундом, парой кнопок, и парой лейблов - +200мб, когда например в nvidia control panel с кучей "контролов" у меня отжирает около 10мб.
2) Нужно нарисовать поверх пикчи (джипега) пнг слой. Через канвас я изначально не хотел делать потому что мое поделие должно запускаться на полунекроте и рандомный засвет для меня критичен и абсолютно противопоказан. Я решил что нужно в клеить их в рантайме как одну пикчу. На писал вот это:
var finalImage = new Bitmap(baseImage.Width, baseImage.Height, PixelFormat.Format32bppArgb); var graphics = Graphics.FromImage(finalImage); graphics.CompositingMode = CompositingMode.SourceOver; graphics.DrawImage(baseImage, 0, 0); graphics.DrawImage(overlayImage, 0, 0); return ImageToByte(finalImage);
29 пикч нормально наклеиваются/отображаются, 30 пикчу (начальный джипег) косоебит в левый верхний угол и по размерам он стает приблизительно на четверть, а пнг слой наслаивается как по размерам нормальной пикчи. Я первым делом же проверил разрешение пикчи/слоя - одинаковое. Затем я попробовал в finalImage синитить с размерами не изображения, а слоя (на всякий случай) - нихуя. Затем я попробовал конвертнуть в разные форматы (bmp/png) - похуй. Я подумал может быть там где-то есть прозрачность на джипеге и его из-за этого пидорасит, взял перекрасил магической палочкой белые края в серый - нихуя. Ему просто не нравится одна пикча и я не могу найти какого хуя.
>>1908334 Опять ты со своей ХР... Используй уже Win2D. Гифку на кадры и выводи по таймаутам. Второе вообще в 3 строчки делается. А по производительности - пикрилейтед захват экрана и вывод 4К в 60 фпс через эту либу. >>1908336 Так что ты хотел от софтового рендеринга по технологиям из 2005.
>>1908341 Бля, охуеть, но я не могу, серьезно. >софтового рендеринга по технологиям из 2005 Хочешь сказать в 2005 по полгига уезжано только на гифку? Или что простое окошко занимало 200мб?
Тут сидят вкатывальщики, потому хочу дать совет как интервьюер: при собесе онлайн не гуглите ответы. Это не слишком эффективно и очень заметно. Мы над вами посмеемся и откажем с плохим отзывом.
>>1908969 Не мужик, надо в черный список заносить сразу нах))) Че щеглы малолетние себе позволяют, какой же ты программист, если при столкновении с задачей сразу гуглить лезешь...
>>1909073 >Ага, как скажешь Вот и славно сам нахуй иди, пёс >>1909111 Писал об этом тут >>1894860 Сам пак давать не буду, ведь на собес ко мне можешь попасть ты! А сыпятся на чем угодно ровным слоем. От Linq и простых селектов на SQL, до особенностей работы дженериков, async await и GC. >>1909123 Тут проблема в том, что они гуглят вещи, которые знать нужно. Если не знаешь - напишешь криво, не оптимально или вообще поломанный вариант, и даже не подумаешь гуглить.
>>1909317 >особенности работы GC А нахуя это нужно ждуну-то знать? Пусть лучше уж код учится писать и гуглить ответы на свои вопросы, нет? мимо вкатываюсь
>>1909354 Джуну то придется работать с уже существующей сложной системой, и нужно ничего не ломать в процессе разработки - потому, видимо и спрашивают. Джун ведь не трейни.
>>1909196 >Нихуя не понял, чего ты хочешь добиться, чтобы ключи в JSON-файле быстро находить или как? Не ключи, а значения по ключам. >>1909198 Потому что там пиздатая таблица из базы данных датацентра пендосского суперкомпа.
Всё, я понел. Надо переписать файл так: KEY1+DATA1,KEY2+DATA2,... и заебенить индекс, отдельным файлом: key1+startoffsetDATA1+DATA1Length, key2+startoffsetDATA2+DATA2Length, ...
и уже этот индекс в память грузить, и шерстить ключи по нему. >>1894282-кун
Сколько вы дрочили ASP.NET, чтобы начать его понимать? Я просто вникаю, вникаю - и охуеваю. Черная магия на черной магии, не самый очевидный биндинг под капотом, там же находится автоматический DI, ну и как же без ебли с HttpContext-ом, EFCore-ом и прочими богомерзкими вещами. Пиздец же. Как скоро в это все реально въехать хотя бы на уровне "написать простенький вебсайт на коленке самостоятельно"?
>>1909466 Въехал после прочтения одной книги (Valerio De Sanctis - ASP.NET Core 3 and Angular 9-Packt Publishing (2020)) и документации на MSDN. Ничего сложного нет, главное понимать основные концепты вида DI и IOC.
>>1910077 Мало того что сам код говно не разбитое хотя бы на методы, не говоря уже о классах, так еще и наименование существующих методов максимально ущербно - Update, Draw, LifeGameRulles (да-да, это тоже название метода), GetCell. Что обновляет, что рисует, какие нахуй руллес живая игра, зачем нам брать клетку, откуда её брать и т. д, о чём это должно говорить тому кто смотрит на код? Да ни о чём, просто садись и читай всю эту жижу которую ты высрал, строчку за строчкой, пока не воспроизведешь весь код. Но в данном случае легче конечно всё снести и написать адекватный код. Задача популярная, поэтому пиздуй на гитхаб, гугли по решениям "GameOfLife" и смотри как делают более шарящие товарищи.
>>1910084 Ну блин. Я загуглил, там разбитие на классы ради разбития на классы. Ну вот вынесу я "клетку" в отдельный класс, что это даст? Понятнее все равно не станет, будет: Что за клетка, какой еще грид и прочее, при этом код разростется, это повысит вероятность ошибки. Ко всему я не уверен что это не скажется на производительности. Тут и так довольно все плохо, всего при 640000 - уже видно что медленно. При миллионе клеток - 14фпс. А я хотел бы хотя-бы 30+ иметь стабильно. Вооооот.
>>1910109 И зачем ты это высрал? Твой код так и остался говнокодом. Для достижения производительности не уменьшают количество классов, а делают вместо них структуры, либо достигают её улучшением алгоритмов. И у тебя проеб даже на уровне именования методов и разбития кода на логические блоки в рамках этих методов.
>>1910131 Ну да. А как еще ты хотел код писать? По 1 строчке в день? Когда с таким подходом ты свой калькулятор, который может в порядок действий - сделаешь? Через 10 лет?
>>1910176 Ну смотри, с момента как я предложил показать как надо - прошло уже 45 минут почти. Уж за это время-то, тот кто знает как надо - 100 строк написал бы. Пока что я вижу что кроме как посты на борде писать - ты ничего больше не можешь. Потому твое ревью - не ревью. Жду более конструктивного анона.
>>1910192 Ты очень токсичный, еще и тестовое задание брать не хочешь, зачем мне платить тебе? Хоть одну причину назови? Давай начнем с простого, вот ручка, продай ее мне.
>>1910077 >эти коммиты на русском языке >эти XML-комментарии для каждой строки Ладно, это я доебываюсь. А если серьезно: какой нахуй кодревью. Написал? Работает? Молодец, начинай писать что-то посложнее. Похуй, что оно лагает на миллионе клеток, похуй, что у тебя все "в мейне". Пиши программы или те же игры, только посложнее уже, и используй методы и классы по своему усмотрению. Наговнокодишь 10-20 программ, в которых разбираться, фиксить баги и расширять функционал невозможно - станешь лучше понимать, когда стоит ебашить классы, когда не стоит, а когда задача настолько проста, что делается в мейне. А пока что позаботься о более выразительном нейминге и не сри комментариями (тем более трехстрочными XML-ами) там, где суть ясна из названия или из кода. На комментарии ты только время проебешь, они тебе не нужны сейчас.
Как в этом ебучем Visual Studio сделать так, чтобы неправильно введенная команда автоматически исправлялась? Эта функция раньше работала, но я что-то нажал и ВСЕ, редактор перестал автокорректировать неправильное написание.
Сижу гуглю уже ебаный час и НИХУЯ, как будто никто и не знает про эту функцию. Может тут кто-то знает?