Тред единственной элитной платформы в мире программирования.Шапка: https://github.com/CSharpShapka/SharpHat/wiki(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)Прошлый тред тонет здесь: https://2ch.hk/pr/res/856099.html
ну шоб не утонул.
Есть кто на ф# пробовал писать? Как этот огрызок окамла по ощущениям? Чо по перформансу? инб4: как напишешь
не успел спросить, уже перекатиликак нормально регистрировать зависимости абстракций и реализаций в нормальных приложениях?если, допустим, есть:ClientApp_BllCoreLib_BllImplLib__DalCoreLib__EfDalImplLib__RedisDalImplLibгде, соответственно, Client не знает о Impl-ах, а работает только с интерфейсами Core-ов?на моей памяти либо юзали XML-конфигурации, либо всю регистрацию впихивали в Shared-проект, откеда доступ был всему от всего. но нормальные ж люди как-то делают адекватно все это?
>>869112тебе di нужен или што?
>>869245мне нужен подход, по которому я, не нарушая целостность и изолированность слоев в n-tier приложении мог бы использовать это самое di/ioc
>>869110Очень сомневаюсь, что тут есть хоть кто-то, пишущий не на С#да и нахуя этот ф-шарп нужен?
>>869264возможно я что-то не понимаю, но например в одном проекте ты пишешь что-то типаcontainer.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>)).InstancePerDependency();а в проекте уровнем выше резолвишь эту поеботу.container.Resolve<IRepository<Foo>>();
>>869574возьмем самый простой пример: вебапп->проект бизнес-логики->проект доступа к бд. в каждом из них есть свои публичные интерфейсы, от которых зависит проект цепочкой выше, и конкретные реализации, которые зависят от 3-пати либмне, для того, чтобы зарегистрировать irepository as myrepository надо: либо протянуть от вебапп к dal метод, который бы проводил регистрацию (что, по меньшей мере, чревато наличием в вебапп зависимостей от библиотек, которые использует ДАЛ, ну и доступ к интерфейсам этого проекта в придачу; либо вынести всереализации в четвертый шаред-проект и с помощью билд-ивэнтов или еще какого-нибудь шаманства, скопировать библиотеки в ин веб приложения (подход так се, не взирая ни на что). более адекватным решением я видел использование возможностей xml-регистрации зависимостей. но тут приходится зависеть от строковых значений, левых файлов и, вообще, не всякий инжектор так умеет.самое нормальное решение, что я попробовал найти, это использование mef для поиска компонентов, осуществляющих регистрацию зависимостей. все-равно придется прибегать к шаред-проекту и устанавливать в нем зависимость от di-библиотеки. но хоть такбуду за компуктером, поделюсь ссылкой
>>869581http://www.developer.com/net/dependency-injection-best-practices-in-an-n-tier-modular-application.html
Какие есть курсы по C# по типу https://ru.hexlet.io? С проверкой домашнего задания и ревью кода?
>>869581Dependency Injection in .NET охуенная книга на эту тему. Автор там как раз примеры дает того, как использовать это все в разных приложениях.
>>869110По ощущениям это даже не огрызок окамла — это С# с лицом ML. Как фп язык это самый кривой огрызок потому что в первую очередь это ООП язык, вся инфа гуглится да и сам понять должен если работал раньше хоть раз с тем же окамлом. собственно цена за возможность полного интеропа с шарпом и остальным дотнетом, который в той же скале по обратным причинам очень кривойЕсли же тебе нужен сшарп с почти полноценным выводом типов, паттернматчингом и кастрированным адт и возможностью писать дсл прям "на лету" как в скале — в целом неплохо. То же самое и по перформансу — именно код в функциональном стиле дотнет оптимизирует очень слабенько.
>>870173>Dependency InjectionПо этому целую книгу написали? Пиздец, нахуй.
Шарпач, подскажи, есть ли достойная замена решарперу работающая в отдельном потоке? А то на моем некроноуте VS с решарпером постоянно подвисает и тормозит, чего без решарпера не происходит. Отказаться от его советов пока не могу, пишу нашарпах всего 3й месяц
аноны, какая есть объемная литература по коллекциям?
>>870562описанного у рихтера тебе недостаточно? может ты что-то конкретное хочешь узнать?>>870529что такого тебе постоянно подсказывает тебе решарпер, что ты не можешь отказаться от него? подобное говно приводит к привыканию, потом еще надо постараться написать полтора класса без указокиспользую решарпер, в основном, как навигатор + быстрый добавлятор usingов
>>870572Юзинги, циклы в методы расширения, ну и мелочи всякие типо лишних скобок в условиях
{}
https://habrahabr.ru/company/jugru/blog/314524/– Вы планировали выпустить релиз (Rider) осенью. Получится?– Увы. Пока планируем релиз на начало следующего года. Продукт будет платный, и нам не хочется стыдиться того, за что берем денежку.Пиздос. Ещё месяца три релиза ждать.
>>871743> Rider> платныйох яебу
>>869105 (OP)как выгрузить файл на гугл диск иди другое хранилище? Пробовал использовать WebClient.UploadFile(ссылка, которая успешно работала при загрузке файла с диска,путь к файлу); но нифига не вышло
>>871893использовать либы, желательно от производителя
>>869110В треде об ФЯП писал, тут повторюсь. На работе пишу на нем скрипты в linqpad, вместе с type providers ваще огонь для всяких одноразовых интеграционных задач. Сборка мелких проектов на FAKE - там относительно удобный dsl и много чего из коробки. Пет-проекты на нем пилю, оче нравится. В нем есть все, что есть в c#, кроме unsafe, так что проблем особых не вызывает. Что за монадки и как ими пользоваться я понял после чтения статей на fsharpforfunandprofit до этого прочтя кучу статей про монады в хаскеле и ничего не поняв, Скотт отлично объясняет. Появилась зависимость. Выведение типов делает меня плакать при возврате к написанию кода на c#, композиция функций делает код компактнее, АДТ позволяют лучше моделировать предметку, паттерн-матчингом красиво пишутся сложные для if-else и switch-case условия. Там же в треде про ФЯП мне пояснили, что F# говно по сравнению с другими языками ml-семейства, но я на них не писал, по-этому не страдаю особо. На hh изредка появляются вакансии, где он желателен была вакуха в касперском, сейчас мдмбанк, но чистых фшарпистов последние 2 года точно не искали.
>>870117https://itvdn.com/ru/video/csharp-starter
Как использовать Selenium WebDriver со своим основным Firefox профилем?Пробовал:FirefoxProfileManager myProfile = new FirefoxProfileManager();var profile = myProfile.GetProfile("C:\\Users\\anon\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\anon.default");var driver = new FirefoxDriver(profile);Запускается все равно на новом чистом профиле.
>>872443может быть надо имя профайла указыватьFirefoxProfileManager myProfile = new FirefoxProfileManager();var profile = myProfile.GetProfile("anon");а не путь до него
>>870360Что не так? Несмотря на всю простоту концепта, очень многи умудряются проебаться и нахуярить сервис локаторов, которые конфигурируются через xml.
>>872528все эти концепты, шаблоны, подходы имеют красивое и лаконичное до нельзя назначение, но как реализуешь все в проекте, начинается блять
Объясните одну вещь.Вот на подходе .net core - он будет давать делать только webapi/mvc проекты? А если, например, хочу что то для линя написать на шарпе то это ксамарин/моно? Ещё видел презентацию, где шарп компилили в нативный исполняемый файл в убунте. Я запутался что и для чего нужно. Объясните.
>>872629.net дает тебе возможность писать только asp.net проекты?
Мне нужно сравнить 2 слова. Например, первое TeamA, а второе может быть teama, Team A, T.e.a.m.A., Team-A и так далее, в таком случае вывести положительный результат, а если там будет например Team B, то уже отрицательный. Чето с регулярными не смог допереть, как это сделать. Подскажите плз, C#
>>872755Что-то вроде этого? Подставь просто в замену нормальный символы какие тебе нужно, а не строки как у меня и норм по-идее.https://dotnetfiddle.net/lZXRAr
>>872769Да, спасибо, кажется это должно работать. Пиздец я тупой и не додумался до этого сейчас, хотя совсем недавно именно это и делал.
>>872455Пробовал, все равно не взлетает
Кто-нибудь может объяснить принцип работы async/await РУССКИМ языком (понятным, для даунов, дебилов)? Из всего, что я прочитал, понял только, что это будто какое-то маняврирование, чтобы избежать потоков, которое в итоге все равно создает отдельный поток (task). Нахуя это нужно, чем лучше обычных потоков? Если кто-то пояснит с примером, буду очень благодарен.
Почоны, дайте тестов по шарпу уровня среднего или высокого. Я нашел квизфул, но там анальная регистрация и деньги деньги эйчар собеседование.
>>873654http://blog.stephencleary.com/2012/02/async-and-await.html - вполне себе годное объяснение.tl;drЕсли ты вызываешь асинхронный метод через await, то выполнение данного метода приостанавливается до тех пор, пока асинхронный метод не вернет какой-то результат. В это время - пока мы еще ожидаем выполнение этого метода - управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода). Как только асинхронный метод завершает свою работу, то метод, который ожидал завершения его выполнения просто продолжает свою работу. А нахуй это нужно - для удобства разработчика, т.к. создавать потоки и самому всей этой хуйней управлять не очень удобно, асинки - напротив, просты в освоении и предоставляют уницифированный интерфейс для работы.
>>873666>управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода)Да это я понял, а в то время когда вызывающий контекст возвращается к работе, и если там не просто какие-то кнопочки тыкать, а сложные длительные вычисления происходят, в это время тот код который начал работу в асинхронном методе не выполняется, а ждет пока эти вычисления закончатся?
Кто-нибудь сможет пояснить за memory mapped file?Допустим, я сортирую внешней сортировкой 1ГБ файл.Зачем тут использовать mmf? Когда можно просто построчно читать файл, скидывать в новый файл, сортировать внутри, потом сливать все файлы.
>>873676Да, если ты вызываешь этот метод через await, то код в этом методе ждет завершения асинхронного метода.
>>873679Кажется, ты не про то ответил, я хуево написал. Код, который вызвал метод, в котором есть await, продолжает выполнятся сразу после вызова метода через await, а метод, вызванный через await, ждет завершения этого кода? Они же не могут параллельно выполняться, так как находятся в одном потоке.
>>873684Нет, он будет ждать завершения работы метода в котором await есть. А вообще чтобы вызвать этот метод, в котром есть await, ты должен будешь его вызывать либо через await (т.к он помечен как async), либо завернуть это дело в Task.
>>873684Хотя я может быть напиздел по поводу того, что он ждать будет. Сейчас нету возможности проверить, так что либо у себя попробуй хули ты сразу не проверил? это ж 5 минут , либо жди пока кто-то поумнее появится.
>>873688Вот супер схему запилил. На первой M1 и m3 же не могут одновременно работать, так как у нас нет нескольких потоков (или есть (???)).На второй m3 ждет, когда M1 выполнится. Вторая верна или нет?
>>873697Не, параллельно они не будут выполняться. Во втором случае m3 будет ждать, когда m1 выполнится. Вот кстати наглядный пример с объяснением даже - http://ru.stackoverflow.com/questions/316990/%D0%9A%D0%B0%D0%BA-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82-await-async
>>873697мимо третийкакую-то ты еболу намалевал на своей картинке, сам запутался и у других ответа не получишьhttps://m.youtube.com/watch?v=lh8cT6qI-nAздесь все должно быть яснеенасчет супирпупир длительных операций: если это IO операция, она практически гарантированно уйдет в другой поток. если нет, CLR может вполне легально принять решение о переводе операции во многопоточность, если оно затягивает выполнение
>>873707>Во втором случае m3 будет ждать, когда m1 выполнится. Ну так и нарисовано. В таком случае это просто последовательный код, в чем тогда суть?По ссылке я читал уже, нихуя не понял.Вот с той же ссылки пример, его запустил, он почему-то выполняется параллельно.
>>873716Так логично, что параллельно - у тебя метод My вызывает без await'a, а для этого тебе нужно возвращать Task или Task<T> из метода My.
>>873718Но я же тут >>873697 нарисовал, и вы сказали, что параллельно он не будет выполняться?
>>873723http://ideone.com/B6XHPG
>>873751Спасибо! Тут вообще какая-то неразбериха с потоками, почему-то только кек уходит во второй поток, а все остальное в одном делается. Ладно, мне не дано понять, посмотрю лысого дядю >>873711 и пойду баеньки. Бобра вам.
>>873765ну таск.ран работает в принципе чуть по-другому. я еще проебался, надо было бы вызвать Result у асинхронного метода, там тоже CLR может принять решение о выполнении задачи в потоке
>>873677Алло ;(
>>873795>CLR может принять решение о выполнении задачи в потоке>CLR можетЧто-то у меня бомбит от этого.Ты так говоришь, будто при разработке не знаешь как будут выполняться таски.
>>873874ну как и execution plan субд - насчитает одно, но есть вероятность, что выполнится другое
Ньюфаг репортинг - решил сделать для начала прогу, сохраняющую все картинки с треда. Беда только в том, что не знаю с чего начать. В какую сторону копать?
>>873943Самый простой вариант: Пилишь простое windows service приложение, которое будет брать ссылки на треды из какого-нибудь файла и будет парсить треды вытягивая оттуда картинки (пожалуй с парсинга и вытягивания начни), а потом просто сохраняешь себе на диск. Ну и работать сервис через таймер будет какой-нибудь, который автоматически ьудет перезапускаться. Ну или еще проще: пилишь веб-приложение с одним инпутом, куда забиваешь ссылку на тред ну и дальше все точно так же (парсинг, еботня и все это), но эта хрень сама естественно не будет сама перезапускаться и ручками придется.
>>873943>прогу, сохраняющую все картинки с треда>В какую сторону копать?Главное - прикрути функциональное программирование задача позволяет.
>>873943Можно запрашивать с двача данные в формате JSON. Благодаря этому, ты сможешь избежать жопной боли при парсинге данных.Вот как запросить данные:https://2ch.hk/pr/res/869105.jsonНихуя не понятно? Зато всю эту поеботу можно легко ковертировать к нормальному формату.Итак. Получаешь эти данные ручками, потом пиздуешь на http://json2csharp.com/ и вставляешь JSON, который ты получил.На выходе получишь систему классов, которая получается при конвертировании этого JSON к формату шарпа. Видишь класс RootObject? Это и есть корневой элемент, который вернёт тебе двач.Затем тебе нужен пакет Newtonsoft.Json. Эта либа, которая позволит тебе конвертировать твою JSON-строку к полученному формату. Поставь её через Nuget, командой Install-Package Newtonsoft.Json в консоли студии.Как с этой поеботой работать:var huiPizda = JsonConvert.DeserializeObject<RootObject>(response);Что может быть проще?Затем ебись с полученными данными, как хочешь. Там есть класс Post, он в себе содержит информацию о файлах. Дальше сам разберёшься.
>>873990Прошу прощения, но я немного обосрался. Судя по всему, тебе придётся немножко поебаться с сериализацией, т.к. эта поебота не сконвертировала то, что тебе нужно.Значит смотришь на мой предыдущий пик и создаёшь класс File, который содержит в себе все свойства с пика (то, что лежит внутри переменной 'files'). Обрати внимание, что регистр свойств и тип переменных должен совпадать, чтобы конвертер не послал тебя нахуй.Затем вместо object подставляешь этот File в текущем пике.
PHP макак вкатывается в тред1) хочу написать UWP приложение под десктоп/мобил/xboxfor fun. Где посмотреть хелло ворлд? С чего вообще начать? Т.к. предвижу winforms мне не совсем нужен будет2) Много ли платят в отрасли? Я имею ввиду мне сейчас платят 2к евро дистанционно и сижу на жеппе ровно. Будет ли существенный прирост? В пыхе есть частые халтурки и можно работать из дома. Плюс работы очень много.Смогу ли я найти на апворке или на тематических форумах таски по быстрому если научусь кое как говнокодить?3) Если ответ на 2ой вопрос положительный. Во что развиваться? В .ASP, .NET или Xamarin чтобы опять же сидеть на жеппе так же ровно и получать бабло? 4) можно ли писать легковесные и шустрые приложухи на .asp или это не поворотливая хрень?Всем добра
>>873951Лол, а вопрос как распарсить страницу это совсем дниве? Прост я до этого только в Юнити хуярил.
>>8740041) начни с http://metanit.com/sharp/2) не сказал бы, что .NET фриланс прибыльней/перспективней, чем рнр (ИМХО). одновременно с этим не сказал бы, что .NET дешевле (мне в помощь статистика на ДОУ, как дела в реальном мире, могу только догадываться)3) MVC/WebAPI все еще живут, ASP.Core, если выстрелит, то будет крутяковым перспективняком. ну а так остается Xamarin и WPF. мобильные, ясен пень, имеют бОльший вес на рынке4) если завязываться на IIS, то, в целом, все будет достаточно слабоповоротным (хотя бы благодаря инфраструктуре). но белые люди придумали OWIN, ~Core работает через Kestrel - короче, есть достаточно легкие вещи в окружении
>>873990>Что может быть проще?Вот это >>873978 (плюс это работает и на 4chan и еще где угодно)Ты блин усложнил, ему надо картинки скачать, а ты прилагаешь писать клиент двача.api/кодогерация - в интерпрайзе что ли работаешь?
>>874004>PHP макак вкатывается в тред>сидеть на жеппе так же ровно и получать бабло? Попробуй nodejs без шуток, опыт знакомста с php мартыханами - говорит что он не способны работать со статической типизацией
>>874011>WPFмерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)>MVC/WebAPI Галеры на кровавый тырпрайз по поддержке кода написанного 10 лет назад индусами>ASP.CoreЕдинственное перспективное направление, но фиг работу найдешь
>>874018> мерт вместе с winformsto be honest - нетестессно, писать впф тебе скажут только в одном шансе из 10, но и не каждый пишет на c++, что не мешает ему не быть мертвыммоя охуевшесть была охуевшей, когда выкатили работоспособное и (относительно) перспективное приложение на Silverlight> по поддержке кода написанного 10 лет назад индусамиот этого никуда не денешься
>>874014Да, если нужна поддержка форча и не нужна будет сложная логика, то твой вариант будет проще в использовании. Только там ещё надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmp, т.к. ему только картинки скачать надо.Нет. Поддерживаю всякое говно (Xamarin, Ionic, бэкенд на шарпе без тестов и архитектуры) на удалёнке в мухосранске за 20к, арендую однушку за 14к. Хуже меня уже нет.
>>874025я делал kursach1 студентоте, разве это не хуже червя-пидора?
>>874023>не каждый пишет на c++, что не мешает ему не быть мертвымЯ думаю с учетом ОС/игр/браузеров там на много порядков больше разработчиков>>874025 >>874026Вы нашли друг друга не печальтесь вы еще молодые и шутливые, у вас все в переди.>надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmpМассив SupportExtensions в строке 5
>>874028> на много порядков больше разработчиковсомневаюсь> Вы нашли друг друга я ж не говорю, что продолжаю это делать о сих пор
>>874034 На hh в Москве разница на порядок
>>874009Бумп вопросу - что нужно знать, чтобы распарсить страницу и что я в итоге получу, распарсив
>>874082в гугле забанили? https://htmlagilitypack.codeplex.com
>>874087А без сторонних библиотек?
>>874082что распарсишь, то и получишь.ебанутый вопрос какой-то не?
>>873677я, наверна, не то загуглил, но какое отношение имеет mmf к сортировке?
>>874123Работа с большим файлом
>>874117Если нужен код для парсинга конкретного сайта, то регулярные выражения.
>>874248Этим говном еще кто-то занимается в 2016? Я сам этого не делал, но слышал, что в плане производительно это та еще жопаболь, как и в плане сложности.
>>874248Хтмл не парсят регулярками, дурной тон.
>>873951А как открыть файл, имея на него ссылку или сохранить на диск?
>>874264https://stackoverflow.com/questions/307688/how-to-download-a-file-from-a-url-in-c
>>873657Справочник по c# 6.0
Шарпаны, как я понимаю в реальной работе используется только EF?И если да, то зачем в Троэлсене столько рассказывается про подключенный и автономный уровни?
>>8744001 абсолютно не только2 уметь пользоваться только хай-левел фреймворком без представления об основах, которые составляют его базу - признак макакена
>>874400Я бы не сказал. В реальности за место EF может использоваться какая-нибудь микро ORM вроде linq2db или dapper, где ты будешь сам писать запросы. А если EF и используется, то часто он служит лишь для мэппинга на DTO сущности и структурирования баз по отдельным классам, а при работе с таблицами вся работа производится через чистый sql, ибо то, что генерирует EF при обращении к БД очень сильно бьет по производительности.
>>869581Ананс, зачем тебе целый проект под DAL?Или ты собрался менять EF на Dapper? Шо прям хайлоад назрел и EF не справляется?Все равно на NoSQL быстро переехать не получится - тебе домены прийдется перекраивать, что на рабочем солюшене стоит дорого.
>>871743Ну посмотрим, сколько денег. 15 пока отлично справляется, интересно, чем заманивать собрались.
>>872629"он будет давать делать только webapi/mvc проекты?" - не только - еще console app.Для линя, что ты на шарпе хочешь писать и главное нахуа?Core CLR - basement для web way - довольно плотно конкурирует с UAP и они перенимают друг у друга некоторые концепции и реализации, в свою очередь UAP много берет от Mono - тот же AOT вместо JIT. Но все подводится под .NET Standard.
>>874403А чего б и не? Нужно понимать хотя бы на 1 уровень абстракций ниже, чем тот на котором ты пилишь.Или переехал ты на другой проект, а там NHibernate и все, ты обосрался, потому, что базовых концепций не знаешь.
>>874416>UAP много берет от Mono - тот же AOT вместо JITmono aot кто-то реально пользуется или это просто концепт с демками?
>>874428А как он на iOS по твоему работает?Тот же .net native уже давно не концепт.
>>874428Нет не концепт, реально работает - arm архитектура -> Hololens, IOT вот это вот всё.
>>874430Кроме iOS конечно, там не было выбора и это не интересно.Я имел ввиду для десктопа к примеру.>>874444>Hololens, IOTmono на хололенс? можно ссылочки на рабочие проекты (или это только теория)?
>>874416> нахуапотому, что можно>>874408ну идея бизнес-логики в контроллерах меня слабо привлекает. и из ДАЛа у меня не только рсубд: есть граф, есть файл-сторедж. чтобы по фен-шую без слоя не обойдешьсяну и да, с ЕФ я, в перспективе хочу слезть. а лучше вообще в постгрес какой-нибудь сраныйну и юнит-тестирование, окакжэпроект для себя, хочется идеала, хотя уже не получается
>>874445На Hololens не моно, а UAP. UAP взял у Mono AOT.Но там честно говоря звиздец. Нормальной рефлексии нету, а соответственно Automapper, IoC работают с ограничениями. Ну и вёрсточка UI там неебовая.
>>874455Я не писал про бизнес-логику в контроллере. Бизнес логика в бизнес слое. Но смысла с репозитория при использования EF не вижу. EF даёт нормальную абстракцию IQueryable. Честно говоря, я не вижу смысла с юнит-тестов которые проверяют в бизнес-слое создание объектов без сохранения в базе - я ж так понимаю, ты мокаешь свой репозиторий. В рантайме, если запрос в EF кривой все и развалится, при работающих юнит-тестах.НУ плюс адекватно построение связей не протестишь. По-моему. если замешано использование БД, тут уж без интеграционных тестов не обойтись.
>>874465ну, я не пишу repository<t> поверх dbset<t> и unitofwork поверх dbcpntext, но ведь какой-то слой command/query должен же быть дабы переиспользовать функционал?
>>874028>удаленка на дотнетеЛол что, а разве так бывает?
>>874403Я не хочу быть макакеном, в Троэлсене читаю всё подряд, правда
Аноны, а киньте ссылку на гитхаб с годными веб-проектами в плане архитектуры - на которую можно равняться так сказать (бизнес логика в отдельном слое, юнит тесты, все вот это). Core / Mvc /Web api не так важно.
>>874004Почему программистов всегда изображают в виде няшненьких в плохом смысле слова бородатых толстячков-патлачей в очках?
>>874586Я дрыщатик-патлач.
где есть примеры создания собственных коллекций?
>>874699для чего?
>>874707да в шараге задание дали, реализовать коллекцию. Короч, как встроенные коллекции, только методы и свойства своими руками. Я так понял...
>>874717берешь, короче, рефлектор, смотришь в System.Collections имплементацию любой понравившейся коллекции. упрощаешь по вкусу и гришь преподу мол "смотри старый хрыч с указателями заебашил и с IL".
Анон, как дебажить обфусцированную программу? Хочу, чтобы как в OllyDbg запустил её и пошагово проходишь. Есть что-нибудь подобное?
>>874717по сути, выбора немного: либо с использованием массива для хранения элементов (при этом твоей задачей будет контролировать длину массива и переинициализировать его в случае переполнения); либо через связный список
>>874752ну значит я в правильном направлении двигаюсьспасиб
>>874752А дерево ебануть слабо? Черное, красное, АВЛ, с проходами прямыми и обратными, вглубь и в ширину, бинарное и произвольное. Фантазия безгранична здесь.
>>869105 (OP)Вы ебанутые? В чем прикол учить net в 2016, когда есть java, где все тоже самое только еще и linux runnable? вы сами себя ограничиваете
>>874963а как же .NET Core?
>>874945ну дык реализацию дерева придется все-равно делать на основе однонаправленного связного списка. только связей будет не одна, а несколькоможно массивом, наверное, но я хз, насколько это эффективно
>>874963Вообще то наоборот, как язык C# гораздо мощнее Java и уже без костылей запускается на Linux/macOS.Я допустим пишу на нем бэкенды (CoreCLR + EF Core) для своих мобильных проектов и деплою на дешевый ubuntu vps.
>>875048>>875031зачем вы дауна кормите?
>>875054может быть он находится в неведении
Из бд извлекаю таблицу в DataTable и привязываю к DataGrid'у. Возникло несколько вопросов:1. В бд имеется поле дата типа date. При отображении в гриде дата принимает формат со временем (пик). Как пофиксить?2. Как задать заголовкам столбцов дружественные имена. Через маппинг не получается.http://pastebin.com/8YvyWSne
Есть тут аноны, которые пишут/писали под андройд на С# с помощью Xamarin?Прошу у вас помощи. Я установил Android SDK ещё когда устанавливал Android Studio, потом решил писать на C# и скачал Xamarin. Создаю проект, а когда пробую компилировать, вылазит пикрилейтед. Как исправить? Что я делаю не так?
>>875238Проверь, может быть в настройках студии путь к Android SDK не указан.
>>875247обнови jdk
>>874018>мерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)Winforms еще как применяется для по которое было написано больше 6 лет назад и требует поддержки и направлено на постсовок, в котором много где еще 2000 винда стоит и хр в офисах
>>874248НА SO сказали что парсят регулярками только дауны, там самый топовый вопрос с этим связан.
>>875293>в котором много где еще 2000 винда стоит и хр в офисах.Да неее, щас же повсеместно (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?
Поясните ньюфагу за отличие экземпляра класса, от экземпляра структуры.
>>875353один располагается в куче (первый), другой - в стеке
>>875371насчёт стека - не всегдаhttp://stackoverflow.com/a/4853251
Я конечно не получу тут ответ, но на всякий случай спрошу.Код примерно такой (пикрилейтед): в цикле создаем массивы по 100К элементов (элемент - струкрура размером 56 байт), и заполняем их. Когда память кончается винда зависает нахуй. Никаких исключений, ничего.Вопрос: как узнать заранее зависнет ли винда перед выделением и заполнением массива чтобы вообще не производить эту операцию? (виснет она судя по всему на заполнении).Зависание происходит следующим образом:- Диспетчер задач показывает 100% использование памяти (12 ГБ в моём случае).- Начинает дрочиться винт, винда начитает тормозить.- Перестают перетаскиваться окна и вообще UI, в том числе других приложений и таскбара, не отвечает.- Диспетчер задач перестает обновлять состояние своего окна.- Падает к хуям радио (которое еще какое-то время играет).- Винда перестает реагировать на мышь и указатель мыши застывает. Винт продолжает дрочиться.- Через значительное время всё затихает и наступает полная тишина. Экран продолжает иметь то же состояние когда UI перестал отвечать на действия пользователя.Код как текст: private unsafe void button81_Click(object sender, EventArgs e) { MemoryFailPoint memFailPoint = null; int items = 100000; MList<Cba[]> arrays = new MList<Cba[]>(); int i = 0; Random r = new Random(); for (i = 0; i < 2000; i++) { try { memFailPoint = new MemoryFailPoint(items * 56 / 1024 / 1024); Cba[] ar = new Cba[items]; for (int j = 0; j < ar.Length; j++) { ar[j].A1 = r.NextDouble(); } arrays.Add(ar); memFailPoint.Dispose(); } catch (Exception ex) { Trace("i=" + i + " Got an exception: " + ex.Message); break; } } } public struct Cba { public double A1; public double A2; public double A3; public double A4; public double A5; public double A6; public double A7; }Если кто будет тестить, то осторожно - винда виснет конкерно. У меня 12 ГБ и у меня виснет этот код на Windows 7. Если количество массивов уменьшить до 1000 (с 2000 что сейчас), то зависания нет, есть только обычный расход памяти приложением, что можно отследить по диспетчеру задач.
>>875622Бля, какой мудак убрал неразрывные пробелы? Трифорсить нельзя что ли?
Пиздец, даже треугольник ставить нельзя. Ну всё, пизда бордам.Впрочем похуй. Отвечайте на мой ответ. >>875622
>>875330> (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?Не, можно и на 2000 - хр, если десктоп приложение со вторым фреймворком.
Аллилуйя братья, они наконец то возьмутся за Xamarin Studio и сделают из этого что-то приличное.http://www.cnews.ru/news/top/2016-11-14_microsoft_vypuskaet_visual_studio_dlya_kompyuterovНа VSCode можно только мелко-сайтики пилить, а Rider не может запускать Xamarin проекты.
>>875622У меня MemoryFailPoint выбрасывает исключение на ~200 итерации цикла, соотвественно никаких зависаний. win7 16gb
>>875717Хм, интересно, спасибо. Хотя это тоже странно, 200 итераций это около 1ГБ данных и это не должно быть проблемой. Скомпилировано под x64?(Хотя у меня стоит any cpu, но приложение запускается как x64).
>>875622>Если кто будет тестить, то осторожно>пользовательские классы, код даже не скомпилируется
>>875753Да, стояла галочка "prefer 32-bit", что и происходило. Исключение было OutOfMemory т.е. это похоже был не MemoryFailPoint. Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.
>>875786>Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.Найс. Это уже другое поведение, отличающееся от моей винды. Может дело в том что она у меня пиратская?>>875785Все классы кроме функции Trace я выложил. Суть Trace и так ясна, это обычный текстовый вывод.А, там я оставил MList. Вроде убирал M, странно, ну ладно. Извиняюсь. Можно заменить на простой List, там разницы не будет. MList это по существу тот же List, только с возможностью доступа к массиву напрямую, но она в коде не используется.
>>874550Бывает. А что не так?
>>875794>пиратскаяТут комментарий про эту страну и про программное обеспечение.Ты говоришь, что у тебя диск начинает, это потому что у тебя своп включен, поэтому и винда виснет
>>875804ОК, значит своп нужно выключить и проблем не будет? Завтра попробую.
>>875807Ну я побоялся включать во избежание того что у тебя в первом посте написано.
>>875811Выключил своп и с виндой перестали происходить зависания и наконец-то стали появляться исключения. Хотя в первый раз экран погас и стал черным, после нажатия Ctrl+Alt+Del стал синим, выбрал диспетчер задач, и обнаружил что куда-то пропала Студия из панели задач. Ну и хуй с ней. В остальные разы почему-то такого не было.
Антон!В парсер надо добавить немного гибкости кастомными клиентскими скриптами так чтобы им можно было передавать объекты из приложения для обработки например.Когда-то давно был же WHS - полез искать, а там ебать колотить сколько скриптоговна напридумали и у все это слегка различается по методам использования т.к. видимо под разные задачи заточено. Кроме WHS есть некий компайлинг на лету и подключение этой сборки (как?), есть всякие сторонние JInt-ы и подобные пэкиджи. Что из этого лучше всего использовать чтоб в парсере выполнять скрипты аля vba-код в мс-оффисе или тупо из внешних файлов/базы?Подозреваю что вот эта компиляция на лету для дотнета ваще нативная и наиболее быстрая, но не понимаю что именно у гугла спрашивать, чтоб подробно раскуриться
Продолжаю экспериментировать с переполнением памяти.В том коде что я приводил >>875622 в случае наличия свопа торможение винды начинается при заполнении массива, а не при выделении. При отключенном свопе падение происходит при выделении массива, с исключением.В реальном приложении заполнение памяти происходит в несколько потоков. При отключенном свопе во всех потоках сразу происходит исключение OutOfMemoryException при попытке выделения памяти для массива как правило. Код потока взят в try-catch, и этот catch ловит OutOfMemoryException, при этом делая успешную запись в лог этого факта. После чего управление чаще всего не достигает точки в которой происходит ожидание окончания выполнения потоков: на первом пикрилейтеде управление не достигает строки "Log.Trace("Threads finished.");" поскольку в логе эта строка так и не появляется.Поведение при исчерпании памяти бывает разное:- Иногда управление очевидно таки передается в точку ожидания завершения потоков, но это бывает редко. Вычислено по паре случаев нормальной обработке всех исключений программой.- Был случай исключения null reference exception.- Иногда приложение исчезает.- Иногда приложение падает с крэшем.- Был случай "неизвестного исключения".- В одном из случаев с винды слетела тема Aero, перед этим приложение исчезло.- Был случай гашения экрана и исчезновения Студии (упоминался выше).- Постоянно падает дебагер Студии.- Невозможность запустить диспетчер задач.- Был случай когда выпал BSOD (пикрилейтед).На данный момент теория следующая: При исчерпании памяти когда происходит попытка выделить массив происходит исключение - такое какое и должно быть. После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов. То что код приложения не выдерживает таких издевательств и то что аналогичное происходит с другими приложениями это еще можно объяснить, но почему к этому оказывается неготова сама винда - вот это открытие.
>>875963> После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину баговчто ща хуйню я читаю? OOMException выпадает же до того момента, как куча начинает выделять память под новые объектыпики не смотрел ибо мобильный клиент их не подгрузил пидар
>>875983ОК, найди другое объяснение почему начинает глючить другой код, в том числе из других приложений и из самой винды. По-моему это от того что он не может обрабатывать исключения связанные с нехваткой памяти.>>875983>пики не смотрел ибо мобильный клиент их не подгрузил пидарТам всё-равно ничего интересного.
>>875987>ОК, найди другое объяснение почему начинает глючить другой код, в том числе из других приложений и из самой винды.Очевидно, что в других приложениях возникает необработанная ошибка выделения памяти. Возникает в рэндомном месте и в рэндомный момент времени. Поэтому разнообразные глюки вываливаются.
>>875963Может у тебя и вправду винда кривая. Можешь попробовать создавать MFP не в потоках, а до их создания, еще в синхронном коде. Ты бы виртуалку себе сделал с нормальной msdn виндой, и там бы веселился в controlled то environment.
Ох лолед. Запустил я опять тот код >>875622Он отработал и выдал исключение. Приложение осталось, память вся выжрана.Беру Студию (была открыта). И смотрю как она сможет работать. Начинаю просто ходить по главному меню даже не кликая по его пунктам, и тут хуяк - Студия падает нахуй с крешем. Если бы я закрыл своё выжравшее память приложение, то всё работало бы нормально. Вывод: Студия не обрабатывает OutOfMemoryException.Отсюда еще один вывод: обрабатывать OutOfMemoryException не нужно, потому что код винды и других приложений, в том числе приаттаченные DLL и судя по всему даже код самой CLR, не обрабатывают это исключение и падают. Какой бы идеальный код с этой точки зрения вы не писали, он всё равно завалится, либо от того что упадет используемая чужая Dll, либо от крэша стороннего приложения, либо от крэша винды.
>>876023Так тип включи своп обратно и это уже проблемы винды)))
Выручайте, дали мне оборудование секретное дохуя (китайское нонейм говно), по факту принтер с встроеным серваком, который отдаёт мне на конкретные реквесты, конкретную инфу. Так вот, если приходит HttpWebResponse больше 5Мб, то ReadToEnd() возвращает кракозябры в странной кодировке, ни одна из распространённых кодировок не подходит, да и производитель клянётся, что utf-8, никаких gzip и томуподобного.
>>876081
Подскажите нубасу Как обработать NullReferenceException ? Хочу чтобы метод возвращал true если принимает две null ссылки. T - реализует Comparable<>, Equatable<> Хз как ее ограничить на null типы
>>876181where InsideT : class
>>876193Это не совсем то что нужно Я собираюсь использовать типы значений вроде Nullable<Int32>
>>876204ну можно сделать MethodName<TContainer, TValue>(...) where TContainer : Nullable<TValue> where TValue : struct, но это будет дичь дикая не уверен, скомпилится ли вообще. как вариант ограничиться только констраинтом, что Т - это структура и пытаться выдоить из нее нужный тебе нуллабл
>>876181а вообще тебе == надо использовать, а не Equals
>>876221Поля Value типа T Тобиш == приводит к вызову этой же перегрузки на == И из-за этого я и не могу сравнить ее с null
>>876227ReferenceEquals
>>876181https://dotnetfiddle.net/5csKoz
>>876244Не канает :(
>>876181>Хочу чтобы метод возвращал true если принимает две null ссылкиif (op1 == null && op2 == null) return true; - не работает что ли?
>>876274== Приводит к вызову этого же метода
>>876278Окай, тогдаif (RefecenceEquals(op1, null) && RefecenceEquals(op2, null)) return true;
>>876283Reference*
>>876283>>876284 Ух ты! А вот это сработало Спасибо!
>>875088Бамп
>>876542Так нагуглил бы уж давно.
>>875707Ну прям, конфу смотришь? Твой манямир еще не ахуел?
Лучик жизни этому мертвому треду.Connect 2016https://events.techdays.ru/Connect/2016-11/?wt.mc_id=AID522253_EML_4670175
Даже с линукса один из директоров пришел и сказал что корпорация добра заебись. В ява треде наверное пожар сейчас
Студия 17
реал тайм редакторы, полное покрытие часов телеков от эпл андройдов и прочую хуйню. Холивар окончен. ГГВП.
Студия для мака. КЕК. Кого-то только что жеско выебали.
>>876799туда же
>>876800Что бы не пиздели список приложений ниже еще прокручивается
>>876801работа с кором прямо с гейоси (на пике через хром)
Джабу ебучую унижают на собственом поле. Можем наблюдать как работу приложения находящего на хабе переносится в мобайл центр где оно тестится на тысячах современных устройст с кучей сладких графиков и отчетностей рассылается по тестерам и всё остальное. За ебаные 5 минут времени.
>>8768152
>>8768153
>>876815Ява встала скален и пошла сразу НАХУЙ
>>8768155
Релизы на сегодняшний день и выебоны что Azure сервера ебут гугл и амазон вместе взятые
>>876777Спасибо, няша.Студия 2017 доставила.
>>876825какие клёвые датацентры
>>876825и это только один, а их дохуя
>>876825Пусть лучше уже новую студию выпустят.
>>876834А какая последняя сейчас? У меня 2015 Enterprise.
Добавление превращение приложение в докер в 2 клика
новинка в Azure (Azure function)SQL 2016 (Самая защищенная, самая сладкая)
>>876840цифры не могут врать
>>876842Как раньше было хуево с кучей версий и ограничей и как стало
>>876844ОЙ А ЧТО ЭТО У НАС ТУТ?!
Ебать, нигеркодерша, впервые вижу.
>>876847Кластеризация таблиц в новой SQL. Это помимо остальных клёвых новых ништяков алгоритмов компресия\сжания и прочие
Внезапно
Кучу всяких апи запилили по распознованию голоса, лиса, текста, размера члена которые в реал тайме обрабатываются
>>876774>Ну прям, конфу смотришь? Твой манямир еще не ахуел?Включил минут 10 назад и все пропустил. Сейчас качаю VS for Mac.В чем суть, можешь вкратце пояснить?
>>876857Блин качает по 100kb/sec - видимо все ринулись качать новую студия и положили их azure.
>>876858Это просто ребрендинг ксамарина, расслабься.Анонсировали ещё пару дней назад — сайт вообще лежал.
>>876854Тестовая работа киоска без всяких ID карточек кодов и прочего
>>876854
>>876854Это так мило, скоро омежки будут с киосками дружить <3
>>876854>Female>38По мне так:>Male>55
>>876854Запилить подобную няшность можно в Azure bot service. Там же гайды, шаблоны, тесты и всё остальное
>>876865Это же та самая шутка про волшебные говорящие зepкала: есть те, что очень льстят, а есть разбитые.
>>876866Что бы не было потом вопросов ВИ майкрософта зовут Luis (Луис)
>>876868Именно перед ним вам придется КАЯТЬСЯ
>>8768702
>>876870И именно он будет решать ваши проблемы взаимодействуя с другими апи
Развлечение не выходя из дома для белого человека.
>>876860Мне (как Xamarin разработчику) в главное что он теперь официально "VS" те:- их будут обновлять параллельно- начнут шарить код- в каком-то виде там увеличится команда разработчиковВ итоге он будет развиваться быстрее и там будет больше фич.P.S. Вот бы еще выкинули нахрен mono и заменили все на core clr.
>>876877Работой по мультплаформированию продуктов VS занимается 19к(!) разработчиков
Еще больше сахара в новой студии.Указание меток прохождения тестов, новые подсказки, реал тайм проверки прохождения тестов. Сладка.
>>876884подсказки по рефакторингу по лучшим заветам предков для соблюдения чистоты командного кода
>>876884Новые ИКОНКИ, группировка данных для интелсенса для работы со сложными апи
>>876884сокращения из коробки
>>876884Сахарок, сахарочек.Подсказки по структуре
>>876884Шо там по C# 7.0 (primary constructor завезли)?
>>876884Просто расскажи что тебе нужно и тебе посыплют всё сахаром
>>870562Альбахари
>>876884Больше сахара
>>876877А вот мне как маководу главное чтобы они наконец перестали лезть в залупу, запилили addinmaker который сломали вместе со всеми плагинами в 6 версиии — иначе единственная нормальная IDE на OS X просто сокращается до шарпа.
>>876895> запилили addinmakerНикогда не слышал, что это такое?
>>876897Хуитка для разработки плагинов.Как её сломали — расширений просто нет.
Картинок по сути нет но как я понял теперь тесты написаные один раз в студии могут прогнать любой код будь он написан на любом из поддерживаемых языков.
Продолжение с болтовнёй после мэйн эвента смотреть с 4 часаhttps://connectevent.microsoft.com
Возвращаясь к VS для гейоси связанные приложения. Всё что нужно для хуяривания под всё из коробки
Бля, шарпаны, я заебался
>>876910Скоро узнаешь, чем она лучше Xamarin
>>876919Я скоро спать пойду, я тут конечно выдержек по постил на первые 2 с половой часа но блядь там уже 7 час идет а у меня ночь на дворе
>>876919Так чем же? инб4: ничем
>>877119Сейчас, обновлю обычную Xamarin и сравню (может туда тоже завезли что в VS)
Посоны, где в изображении располагается геотег? интересно его вытащить программно
>>877119Интересный факт: Версия у Visual Studio for Mac = 7.0, а у последней стабильной Xamrin = 6.x.
>>877119Появился непонятный шаблон проекта состоящий из:1) AspNet Core WebApi сайт2) Shared Project с MVVM частью мобильного приложения3) Xamarin/Android - версии приложенияИз интересного: в комлекте с (2) идут сорцы реализации:ServiceLocator - который сейчас считается антипаттерном иMessagingCenter - синглтон для обмена сообщения между разными частями кодаIMessageDialog - интерфес с методами showMessage/Toast/Confirmation (тоже всегда его сам реализовывал)
Как же бесят такая хуйня, ну почему мы не можем это делать проще :RAAAAAGE:В каком-нибудь Kotlin это можно вынести в библиотеку и мутить "observable property" одно строкой.
Боже мой, как достало это каждый раз писать. Ананасы, как вы справляетесь с такой фигней?В каждом гребанном классе есть как минимум одна зависимость, которую надо сохранить в поле.Пропозал на "Primary Contructor" https://github.com/dotnet/roslyn/issues/9517 зарубили сначало для в C# 6.0, теперь и в 7.0Говорят "может кода нибудь будем, пока непонятен синтаксис", ну какого хера...
>>877521Сделай их публичными свойствами и инициализируй как обычные поля в конструкторе:new MySevice { Dependency1 = dependency1, Dependency2 = dependency2 }.Но это будет опционально. А вообще я не вижу тут серьезных проблем. Жалко один раз конструктор написать что ли?
>>877521>Ананасы, как вы справляетесь с такой фигней?Копипастой и column edit-ом.>ну какого хераНу это не скала и не котлин, тут думают о нововкатывающихся челиках.
>>877525>Сделай их публичными свойствамКакие еще проперти, это тебе нет Point { X = 1, Y = 2 }Это сервис с бизнес логикой и зависимостями на другие сервисы.В теории они должны проставляться через DI и по канону должны быть иммутабельны.>>877525 >>877527>Жалко один раз конструктор написать что ли?>Ну это не скала и не котлинВот именно, когда половину времени пишешь на Kotlin (где это есть) - начинает не хило бомбитьчто они вот уже два релиза языка копротивляютися, но при это везде орут про эти ненужные тюплы.
>>877311Есть Fody, а INPC посасывает.
Вечер в тредик, кодинг в радость, господа. Пишу тут небольшой сервис и появилось несколько вопросов к бывалым .NET-господам.1) Существует ли в .NET класс/метод/функция, которые могут провести валидацию URL: определить соответствует ли заданная строка стандарту URL. Также было бы неплохо, если бы существовал какой-нибудь инструмент, который приводил две одинаковые ссылки к одному стандартному URL(например https://vk.com и vk.com должны быть приведены к vk.com). В первую очередь меня интересуют решения через SQL, далее через managed code с использованием .NET only и C#. Другие варианты, типа этого https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb773724(v=vs.85).aspx не желательны, ибо C++ и вообще устарело. Также не желательны решения через самописные регулярки, ибо большая часть таки не удовлетворяют стандарту.2) Существуют ли какие-нибудь стандартные биективные функции-архиваторы/хеш-функции для получения сокращённой строки из длинной. Опять же приоритетнее это сделать средствами TSQL, потом уже всякими стандартными средвствами, но код должен быть управляемым.PS. Сегодня в течение дня искал эту фигню и не нашёл ничего особо годно, поэтому буду весьма благодарен, если кто скажет, что здесь лучше использовать.
>>8775611) System.Uri.IsWellFormedUriString("http://google.com/", UriKind.Absolute)
>>877555Что-то не могу в нугете его найти.Он совместим с PCL Xamarin или netstandard 1.5 ?
>>877561> получения сокращённой строки из длиннойты сжатие имеешь ввиду?
>>876891>>876894>>876886>>876885Хоть бы написал что это.
Многие фичи из этого ивента оказывается есть в 2015 Студии, в частности подсветка заголовка блока при наведении на его закрывающую скобку и строки вида $"{fuck.this.shit}". А я и не знал, уже год как пользуюсь этой студией. Что значит идиот.
>>877587>Что-то не могу в нугете его найти.А ты хоть искать старался? Ну~, с Xamarin он был совместим еще год назад http://arteksoftware.com/fody-propertychanged-xamarin-studio/>Он совместим с PCL Xamarin или netstandard 1.5 ?>Supports .net 3.5, .net 4, .net 4.5, .net 4.6, Silverlight 4, Silverlight 5, Windows Phone 7, Windows Phone 8, Metro on Windows 8, Mono, MonoTouch, MonoDroid and PCLПо чем мне знать? Проверь и если не работает, создай issue https://github.com/Fody/Fody
>>877598Да, но без потерь и биективное.>>877574Благодарю, но это валидация URI, куда входят, как URL, так и URN. Мне нужна валидация именно URL по его стандарту/microsoft реализации. URN должны отсеиваться.
добрый анон, поясни за мой говнокод. что я делаю не так? как улучшить код?http://pastebin.com/ffp1wvfg
>>877786if if if if while if if using if ifпопробуй сначала инвертировать условия, дабы добиться намного меньшего уровня вложений. ну а после хотя бы попытаться разделить функционал по методамя думал, это и есть самое страшное, но тут оказался Invoke и Thread. хуй знает, что тобой двигало, когда ты писал это вот, но я бы советовал никогда от слова по возможности не прибегать к этому вот
>>875088Бамп.Как я понял, маппинг не работает без DataSet.Что делать с датой формата mm/d/yyyy hh:mm:ss AM? Как мне убрать время?>>876558Пытался, но увы
>>877819http://stackoverflow.com/a/7978519
>>877786Ну давай разберём по частям тобою написанное ))1: private void SqlSelect(object sqlcommand)Функция с именем SqlSelect. Судя по имени, она должна возвращать какую-то хуйню, связанную с SQL, но она ничего не возвращает. Придумай нормальное название. На вход эта функция принимает переменную sqlcommand типа object... Серьёзно? Ты используешь эту sqlcommand как строку, так и передавай её сразу как строку.3: int i = 0;Эта переменная используется на двадцать строк ниже и её имя не несёт никакой смысловой нагрузки. Кроме того, ты используешь её для прохода по двум различным коллекциям. Ты сэкономил несколько байт памяти, но читаемость из-за этого сильно страдает.29: for (int count = 0; count < reader.VisibleFieldCount; count++)Переменная с именем count используется как счётчик цикла. Ты совем мудак чтоли?44: ++id;Переменная id, как правило, используется в качестве идентификатора. Ты используешь её как счётчик количества ошибок. Измени её имя на что-то типа "errorCount"45: string.Format("Ошибок: {0}", id);Можно заменить на:$"Ошибок: {id}"48: finally{ connect.Close();}По идее этот блок ненужен т.к. для connect ты используешь using - он сам эту хуйню тебе должен подставить.
>>877817а что не так с вложенностью? не так уж и много ее. просто на форме имеется tabcontrol по этому используется 2 if. первый проверяет на существование вернувшегося результата с npgsql, второй проверяет на какую tabpage занести результаты.про invoke. как переписать обращение из потока к winforms контролам? на cyberforum нашел пример if (textBox1.InvokeRequired) textBox1.Invoke(new Action<string>((s) => textBox1.Text = s), newText); else textBox1.Text = newText;но в нем есть небольшая загвоздка. не все контролы поддерживают invoke.обращаться с помощью делегатов? тогда на сколько это правильно?
>>877831>Как переписать обращение из потока к winforms контролам?Постарайся не использовать такие низкоуровневые штуки, как потоки. Для таких задач придумали async/await.
>>877828- SqlSelect метод void, т.е. он не возвращает ничего. назвал его потому, как в него попадают select команды- sqlcommand является object т.к. этот метод вызывается из потока- с названиями переменных понял, ок. спасибо- string.format заменю. спасибо- на сколько знаю, using вызывает метод dispose
>>877835а смысл от этого async/await? все равно создается отдельный поток, который самостоятельно вызывает invoke для контролов или я нубло ебаное которое не может в dev?
>>877837>на сколько знаю, using вызывает метод disposeВ свою очередь, объект, реализующий интерфейс IDisposable, должен освобождать все неуправляемые объекты в методе Dispose. В данном случае, метод Dispose для NpgsqlConnection должен выглядеть примерно так:public void Dispose(){ this.Close();}
>>877839ок. спасибо!
>>877839>должен освобождать все неуправляемые объектысамофикс: все неуправляемые ресурсы, конечно же
>>877838async/await позволяет тебе перестать пидарасить потоки, пытаясь жонглировать данными между ними.// Синхронная версия// В этом случае UI будет висеть, пока ты не получишь ответprivate void OnButtonClick(){ TextBox.Text = new WebClient().DownloadString("https://google.com/"); }// Асинхронная версия// В этом случае UI будет продолжать работать, а задача будет выполняться в другом потоке. // Обрати внимание, что хотя задача выполняется в другом потоке, нет никакой ебли с передачей данных в UI-поток.private async void OnButtonClick(){ TextBox.Text = await new WebClient().DownloadStringTaskAsync("https://google.com/");}
>>877847хорошо, убедил.данная конструкцию будет работать со всеми контролами? или с некоторыми надо танец с бубном подключать?
>>877848Данная конструкция не имеет вообще никакого отношения к контролам. Ты точно так, же можешь возвращать результат в какую-то переменную.Так что:>данная конструкция будет работать со всеми контроламиthis
В общем. Осилилил я основную часть книги RB Whitaker - The C# Player's Guide - 2015 (в оригинале).С# Ставил целью изучить, для своего хобби. Делаю модификацию для dota 2 с использованием инструмента https://github.com/SteamDatabase/ValveResourceFormat.Проблема в том что в книге были небольшие задачи и примеры по изучаемым темам, но там не было нихера самого главного - как написать программу. Вот есть у меня задача - создать инструмент с помощью которого я смогу делать множество операций, которые я ранее делал ручками, изменения в клиенте игры касаемо музыки и звуков. А с чего начать, как это все писать - в душе не ебу. Может есть какая то литература, которая сосредоточена не на объяснении основ языка как в случае с книгой вайтекера, а литература которая демонстрирует и учит написанию практических программ?
Изучаю тут F#, дошел до мемоизации. Вот пример кода -http://www.fssnip.net/8PА теперь объясните те, кто шарит - каждый рекурсивный вызов новой мемоизированной функции (fibs) ведь должен создаваться новый, внутренний словарь, так какого хуя все функции вроде как работают с одним и тем же словарем и все в конце работает?! Нихрена не понимаю.
>>877822Спасибо няша.
>>877930>Ну тащемта в этом и смысл. Ты такой сидишь и думаешь как это реализовать получая за это бабло.
>>877930>в книге были небольшие задачи и примеры по изучаемым темамТы, блядь, язык изучаешь или как программы писать? Определись уже.>А с чего начать, как это все писать - в душе не ебу.Начать писать код, а не ебать другим мозги
>>878028>>878013Ясен хуй я не учил язык ради изучения языка. Просто вот прочел я про кучу всякой поебени, структуры, классы, гетеры, сетеры, полиформизмы и кучу прочей еботни, которую понял, но никогда не использовал. В итоге просто не понимаешь как огромное количество всех этих вещей объеденить в то что будет программой. Хер знает с какого конца схватится.Подкиньте может исходников какой грамотно оформленной, но не слишком замороченой программы. Почитать, посмотреть, разобраться как вообще это делают.В моем случаем мне вообще надо будет работать с файломи. Парсингом. Конвертированием. Желательно исходников софта на эту тему. Хотя выебываться особо не буду, любый интересны, что помогут немного разобраться.
>>877942Потому что memoize возвращает функцию, а не значение. Это сочетание замыкания и ленивого вычисления.
>>870173Поясните за концепт DI.Это тип для макак, которые не могут нормально зависимости тащить?
>>878038А как ты классы тестируешь с дофига зависимостями?Подожди...Дай угадаю...никак
>>878036Мне кажется ты какой-то умственно отсталый или гуманитарий, что, в принципе, одно и тоже. У тебя в голове бардак.Чтобы что-то научиться делать, надо взять и начать вот это что-то делать.>В итоге просто не понимаешь как огромное количество всех этих вещей объеденитьДа ладно? Если взять нехуя раз нехуя и объединить, то получится нехуя.
>>878046Хотел было возразить, и выебнуться тем в чем я спец, но потом подумал - чего спорить с чсв уебаном.Я по человечески попросил - мне что бы понять это ваше ооп, какие нибудь исходники не сильно сложной программы, но написанной грамотно и по науке. Что бы посмотреть как вообще все это организовано, структурировано и т.д. Я могу прямо сейчас сесть и начать писать, но это будет лютейший говнокод и ужас. Возможно и к такому варианту прибегну, надо же с чего то начинать. Но пока подумалось, что может кто из опытных, подкинет образец и пример.
>>878036>Ясен хуй я не учил язык ради изучения языка.
>>878065Ну есть пердолики, которые пердолятся ради пердолинга(нормальные же люди пердолятся ради решения проблем и достижения целей). Не слышал о таких?
>>878063Чувак, реально. Бери и делай. Это этап, который не миновать. Ты в любом случае начнешь делать говно, сколько бы ты книг не прочитал. Чем раньше начнешь делать говно, тем раньше поймешь как его не делать. Попутно можешь читать Clean Code. Но только попутно, загодя смысла нет, это просто потерянное время.
>>878066Я думаю если человеку хочется попердолить веб-сайт, то ему стоит пройти в РНР тред и не тревожить дотнет-господ.
>>878067Спасибо за дельный совет.
>>878063Возьми исходники какой-нибудь библиотеки. Но я не думаю что будет легко понять ООП по ней.
>>878067>Clean CodeThe Clean Coder: A Code of Conduct for Professional ProgrammersЭто оно?
>>878114https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882Вот только http://tinyurl.com/gu7tlyjАзаазаза, тот, кого нельзя называть
>>878229Ну вот, а я хотел почитать...
Аноны, помогите.Имеется главная форма с листвью, к который биндится коллекция. Поля "Имя" можно менять через комбобокс дочерней формы.На дочернюю форму передаю саму коллекцию (для биндинга) и значение выделенного элемента поля "Имя". Но значение свойства SelectedIndex комбобокса равно -1. IsEditable комбобокса установлен в True.Что-то делаю не так? Подскажите как решить проблему (получить правильный индекс).http://pastebin.com/ZeDqUNiF
В старый тред написал >>878319
>>878327Настало время переустанавливать.
>>878037Да, дошло, что лямбду возвращаем. Спасибо.
>>878328Это норма?
Аноны, вкатываюсь в asp.net. Имеет ли смысл учить asp.net mvc 5 или сразу asp.net core задрачивать в 2016-то году?
>>878409что тебе мешает учить 5, изредка поглядывая на core?
>>878409asp.net - на 99% это ебанное ЛЕГАСИесли хочешь вкатиться на галеры чтобы на дошик хватало, то конечно 5
>>878459>asp.net - на 99% это ебанное ЛЕГАСИМало того, что не по теме вопроса анона, так еще что другое ты можешь предложить?
>>878467Я так понял, он хотел посоветовать учить Core.
>>878459А почему вы считаете ЛЕГАСИ как что-то плохое?Ведь в любом языке и технологии легаси дохуя.
Как считаете на core уже можно, пет-проект какой-нибудь хотя бы, или сыроват еще? Кто пробовал, отзовитесь
>>878768я пробую, брат живприглашали на собес в фирму, которая уже стартует коммерческий проект на Core
>>878229>Вот только http://tinyurl.com/gu7tlyjЭто критика книги Clean Coder, а не Clean Code, дурында.
Как в кросплатформенной игре на OpenTK "программно" нажать кнопку на клавиатуре?В гугле нашел SendKeys, но он какой-то хуевый и вроде не работает на системах с UAC.
>>879152Ссылка на клин код тоже была, потерлась из-за спам-фильтра.
>>876886>var (a, b) =...Аноны, разве так можно? Что за конструкция? Первый раз вижуМОАР
>>879380Потому что это новая для шарпа, так ей полтора десятка лет фича — кортеж называется. Первый раз видишь потому что языков знаешь с гулькин хуй, очевидно.Собственно, там нечего моарить:(int, int, string) getTuple(){ return (1, 2, "hui"); }var (_, _, hyu) = getTuple()WriteLine(hyu) // ""hui"
>>879384С какой версией сисярпа идет?Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <>?
>>879391>С какой версией сисярпа идет?А какую представляли на конфе, вась? С семёркой, и пока что не идёт (точнее идёт только в первью версиях студии)>Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <?Когда выйдет — узнаешь. Судя по показанному синтаксису — как анонимный тип.
>>879043Как по ощущениям? Удобнее обычного asp.net или одна хуйня?
>>879482> Удобнее обычного asp.net или одна хуйня?Ебать, его теперь под линапсем можно запускать, лично меня, на данный момент, удобство волнует мало.мимодругой
Анон, есть ресурс в xaml'е вида:<sys:String x:Key="TestString">Некоторая срань</sys:String>Как его с типом стринг забиндить на свойство во вьюмодели?
>>869105 (OP)Вечер в хату. Подскажите как делается динамическая замена плюсовых dll во время выполнения .Net программы. Надо при выполнении какого-то условия подгрузить С++ либу A.dll из папки 1, а при не выполнении С++ либу A.dll из папки 2.
>>879555SetDllDirectory попробуй
Создаю .Net core web application, ничего не ломая, жму F5, получаю пикрилейтед. Кто сталкивался?VS2015, Windows 10
>>879474Вроде как новый тип ValueTuple
>>879482Я пробую, по ощущениям - почти прорыв: что-то допилили до конца (асинхронные партиалы, теперь называются компоненты), что-то объединили (web api and mvc теперь от одного класса наследуется), а эти сладкие nuget пакеты... очень продуманно с модульностью, такое чувство, что еще чуть и можно будет собирать приложение как конструктор
>>879482конфигурация самого приложения мне напоминает старый добрый owin (это плюс)объединение webapi и mvc мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебапп. вот тут я сразу не понял сути пространства имен Microsoft.aspnetcore.webapi. то, что оно делает, не стакается с ~.mvc и в рантайме получается какой-то трешак (некоторые полезные в обеих случаях штуки, к примеру, роут атрибуты, присутствуют только в мвс). для поддержки перекатывания был выпущен webapicompatshim, но получается, что в одной части ты работаешь с httprequestmessage, в другой с httpcontext и это мне показалось страннымеще у меня есть претензии к нативному dependency inhection фреймворку, но есть вариант, что это говно просто вот так работает и я чего-то не знаюв целом я особо не жалуюсь. как тут один товарищ упомянул модульность - она прям самое то, что надоесли кито знает, есть ли серьезная просадка в перфомансе при использовании .netfx библиотеков в .netcore приложении?
TFW нашел пример, на котором программа падает, но не успел запомнить контрольные значения, но потом все последующие тесты работают на ура.
>>879745>мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебаппНу а вывод тут один: надо делать SPA на typescript + WebAPI, остальные подходы устарели.
>>879748нахуя мне тогда коре, если я вернусь обратно в сраный асп 5?
>>879751linux сервера без костылей mono + перформанс + docker + можно разрабатывать на маке в VSC попивая смузи
>>877835> Для таких задач придумали async/await.Кое-где до сих пор под второй .net пограмируют легаси говно, а ты про 4.5 фреймворк говоришь.
>>879801По-моему с таких проектов валить нужно (может даже из компании), если на таком старом говне пишешь. Сам сейчас на 4.0 пишу, а то и ниже лол, а до этого на 4.6 сидел. Не хватает конечно async / await, да и сахара из 4.6. Теперь страдаю от этого говна и собираюсь перекатываться в другое место.
>>879748Пилил недавнополгода назад сдк к одному WEB API на TypeScript + Angular + Karma + Jasmine. Скажем так, прикольно, но не удобно:- Некоторые вещи приходится реализовывать хаками, так как TypeScript видите ли такую запись не поддерживает (promises, d.ts файлы - вот это все из этой оперы).- Некоторые вещи не покрываются тестами вообще не в какую.- Часто приходилось отходить от строгой типизации. Меня часто просто вынуждал язык использовать any. Хотя, казалось бы, писал довольно тривиальные вещи. Возможно язык станет лучше, если запретить это слово к применению, но нет нормальных замен.Возможно я чего-то не понимаю, в целом TypeScript не понравился.>>879801>Кое-где до сих пор под второй .net пограмируют легаси говноЧто мешает перейти на 4.6.х? Обычно эти вопросы решаемы при должном обосновании. Мне часто приходится решать задачи на экспериментальных фреймворках/утилитах, так как почти всегда не достаточно просто написать код, чтобы он работал. Код должен быть эффективным и простым среди аналогов.
>>879818>валить нужно (может даже из компании),А если даже на собеседование никуда не приглашают, потому что опыта 0 в резюмеЯ же не синьор у которого 20 вакансий на выбор. Меня пригласили на целых 3 собеса за 3 месяца.
>>879830Зависит от руководства на самом деле. Я например сейчас на корейцев работаю и у них свое мышление от которого можно охуеть порой. т.е. если ты захочешь перевести проект на новый фреймворк это нужно обоснавать в письменном виде какие это плюшки принесет, почему, нахуя и т п. И да - у них своё понимание плюшек. >>879835Набирайся опыта, учи попутно core / mvc 5 тогда, хули. А на сколько вакансий ты примерно откликнулся?
>>879835>целых 3 собеса за 3 месяцаЧто ты такое в резюме написал, что все так плохо?>опыта 0 в резюмеТак не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.
>>879840>Что ты такое в резюме написал, что все так плохо?То что знаю, то и написал + образование.> Так не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.Я писал проекты, они конечно не йоба, а чтобы продемонcтрировать что я не хуй с горы.Это наверное рандомЗнакомого на галеру взяли: он показал пару лаб, спросили английский и попросили сделать реверс строки. Второй попал на галерные курсы и после них взяли веслать.Уже все подзабыл, что связанное с вебом, потому что все технологии, которые используются на проекте, 2005 года.
>>879555Вот так: private static extern IntPtr LoadLibrary(string name); [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)]Использование:IntPtr dllHandle = LoadLibrary(dllname); if (dllHandle == IntPtr.Zero) throw new Exception("Не удалось загрузить dll: " + dllname);try { IntPtr addr = GetProcAddress(dllHandle, "здесь_имя функции_из_dll"); if (addr == IntPtr.Zero) throw new Exception("Функция здесь_имя функции_из_dll не найдена в dll: " + dllname); FunctionBlaBla = (делегат_с_сигнатурой_функции)Marshal.GetDelegateForFunctionPointer(addr, typeof(делегат_с_сигнатурой_функции)); } catch { FreeLibrary(dllHandle); dllHandle = IntPtr.Zero; throw; }FunctionBlaBla - переменная типа "делегат_с_сигнатурой_функции"
>>879860А, и еще: [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)] private static extern IntPtr GetProcAddress(IntPtr hModule, string name); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool FreeLibrary(IntPtr hModule);
>>879863Сука, не так. Вот так:[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr LoadLibrary(string name); [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)] private static extern IntPtr GetProcAddress(IntPtr hModule, string name); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool FreeLibrary(IntPtr hModule);
>>879745Только напоминает? Он построен на OwinЧто-то не понял где объдинение mvc и webapi дало сбой? Подробнее плзDI все мои потребности покрывает, мне нравится, чем тебя не угодил?) Кстати, можешь любой другой поставить
>>879801>>879818Async/await, говорят, можно завести на net framework 2.0. Только немножко с nuget кое-чего подключить.Ведь основное (конечный автомат) делает компилятор
Наше время пришло! Готовьтесь остаться на помойке истории.
>>879928>не менее 5 лет>в коммерческие проекты>хачкельЭто такой тралленг? Сразу бы программиста на Rust с 5+ годами искали, чего уж.
>>879928>то самое чувство, когда какой-то мудозвон протащил хаскель в проект и съебал>>879943Ты же понимаешь, что эти объявления постят эйчарки?
>>879636Ну же, аноны!
>>880027dotnet runчто показывает?
>>879928>> хаскель >> глубокое понимание ООП.Сижу проигрываю в голосину блять!
>>879921> Только напоминает? Он построен на Owinя, может, невнимательно читал, но сей детали не увидел. а даже если и увидел, то что это меняет в моем сообщении?> Что-то не понял где объдинение mvc и webapi дало сбой? Подробнее плзhttp://stackoverflow.com/questions/40464546/asp-core-nullreferenceexception-in-apicontroller-executeasyncвот мой квесщн собственно. там почитать будет интересней, чем я тут буду объяснять> DI все мои потребности покрывает, мне нравится, чем тебя не угодил?)я пытался заиспользовать контекст базы данных (зарегистрированным как AddScoped<>) в одном из Middleware (причем, не как чайлд самого класса миддлеваре, а как созданный инстанс в рамках исполнения метода). так вот эта хуйня не диспоузала dbcontext при выходе из метода и фактически протаскивала этот инстанс везде, где только он дальше использовался даже в рамках другого реквеста. я, конешно, подозреваю, что мой подход был так себе, но и документация тогда получаецца врет ибо контекст жизни для Scoped-зависимостей - это Context, а не реквест> Кстати, можешь любой другой поставитьну зачем, собственно? тимболие што я, субъективно, вижу (пока что) в этом больше геморроя, чем толку
Какие задачи вообще асперы решают? Хочу вкатиться в веб и asp.net, но у меня опыта в вебе нуль. Надо ли уметь верстать, обязательно ли знать js и его фреймворки?Из опыта только си, и то на начальном уровне.
>>880197> Надо ли уметьну я совершенно честно заявляю, что в клиентской разработке я еблан полный и делаю все с гуглом напару. кому-то в основном это не нравится сразу и они махают мне ручкой либо эйчарше нужно выполнить месячный план собеседований и меня тянут дальше к техспецам под предлогом "ну хули там можно выучить наверное да"по большей части - это корректировка/расширение API и бизнес-логики приложений. если нету специально обученных DBA, то еще попросють влезть в кверяние базы данных
Покажите пожалуйста профессионально написанную серьезную программу на шарпе. А то, я все лабы пишу, хочу разобраться на примере.
>>880227купи у какой-нить софтвэр-компании продукт, и декомпилируй его и охуей от уровня говнокода
>>880227https://github.com/aspnet/EntityFrameworkhttps://github.com/aspnet/Mvchttps://github.com/aspnet/KestrelHttpServer
>>880034>что показывает?Project WebApplication1 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.Hosting environment: ProductionContent root path: ...\WebApplication1\src\WebApplication1Now listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.Он и через студию, если ctrl+F5 нажать запускается. Эта ошибка будет, если просто собраться его попробовать по F5, как по идее и должно быть
>>880250Если честно, я даже не знаю, как к этому подступиться.
>>880067Че-то я не понял какой apicontroller в core? Тем более system.web? Щито ты творишь? Не знаю как она диспозила, но я сам лично видел в исходниках, что диспоз происходит после обработки запроса, могу найти, если хочешь>контекст жизни для Scoped-зависимостей - это Context, а не реквестО каком ты контексте говоришь?
>>880459> какой apicontroller в core?Microsoft.aspnetcore.webapi.controllers.apicontrollerно я могу ошибаться с пространством имен ибо с телефона> Тем более system.web?где там сустем.веб? щито ьы городишь?> могу найти, если хочешьдаже если ты что-то мне найдешь, это отменит тот факт, что дбконтекст не убивался после выполнения запроса?>О каком ты контексте говоришь?system.runtime.remoting.context
>>880541>где там сустем.веб? щито ьы городишь?У тебя в вопросе на стэке "inherited from System.Web.Http.ApiController">тот факт, что дбконтекст не убивалсяЗначит ты что-то делаешь не такЧто это за контекст?Кстати, где документацию читаешь?
>>880599> inherited from System.Web.Http.ApiControllerвоу, я уж чета не смотрел, что писал. ну, в общем, это все мне стало доступно после того, как я подключил Microsoft.AspNet.WebApi.Owin. вангую, что это для ASP 5 и все такое, но это мине студия подсказала, это ния> Значит ты что-то делаешь не такну тут как сказать. я использовал замыкание на IServicesCollection и юзал его как Service Locator (знаю, что это анти-паттерн, но не суть). в статическом методе одного из Middleware брал реализацию нужного мне всего (в т.ч. зависимости уходили вниз до DbContext), делал дела, метод завершался (тут я даже обнулял ссылки на сервисы дабы ускорить умирание некоторых из инстансов) и все были счастливы, кроме меня. вот тут-то я и подумал, что AddScope<> привязывает объекты к контексту, а не реквесту, как сказано> Что это за контекст?если в двух словах, как я это понимаю, то это область привязки и видимости объектоввообще, нормального описания данной проблемы в околоmsdn-ской среде я слабо нашел, в основном бложики, и те, по большей части, опираются больше на ObjectContext (зачем-то) и производные. я черпал свои говнопознания что-то вроде бы отсюдаhttp://daxgrom.com.ua/info/platforma-net-programmirovanie-i-bezopasnost/obekty-i-kontekstи уверен, что не разобрался до конца во всем происходящем> Кстати, где документацию читаешь?пробовал тут https://docs.microsoft.com/ru-ru/aspnet/core/getting-started но майкрософт любит давать примеры в стиле "для даунов", посему я перешел просто в гугл по вопросам, что нужно решить. также решил на метаните почитать, но там сплошной перевод вышеуказанного сайта + адаптация своих ранешних написалок по asp.net, потому стало тоже неинтересно
>>880753Можешь кинуть код, где ты в конифигурации прописываешь зависимсть для класса, который не диспозится? Когда-то у самого были проблемы с незакрывающими соединениями из за DI и на БД весели тысячи соединений, хотя я конечно использовать сторонний DI фреймворк. Так что интересно было бы посмотреть, что у тебя не так там.Мимодругой-анон
Господа синьёры-архитекторы, поясните, пожалуйста, за этот код:https://gist.github.com/anonymous/fc97f14fc6a1476d0d61e0b3754b1ce4?ts=4Нужно по SignalR уведомлять клиентов об изменениях в репозитории, для этого мне нужен репозиторий, который будет кидать события.Мой коллега говорит, что я еблан, и сервис не должен реализовывать интерфейс репозитория. Но я в душе не ебу, как это можно сделать по другому.
>>880783С каким же быдлом я здесь сижу
>>878292Бамп вопроса.
>>880780у меня не создавалось много контекстов, у меня все проходило через один, соединение с которым было открыто практически с самого начала работы приложениякод - это будет громоздко и неинформативно, тимболия я его снессуть в том, что в одном из Middleware (об котором ни одна хуйня в интернетах не обмолвилась, что инстанс создается при старте и является статическим для всех реквестов), вызывалась такая штукаvar service = (IServiceCollection).Resolve<MyGovnoService>(), одной из дочерних зависимостей которого был контекст. регистрация зависимости DbContext происходила буквально таким образом: services.AddScoped(typeof(DbContext), typeof(MyContext))
>>880842Хм, по-идее все ок должно быть, но с этим встроенными DI фреймворком хуй знает как все работает. Я бы еще попробовал бы регистрацию через services.AddScoped<type, type>(); илиservices.AddSingleton<type, type>();
>>880850<T1, T2> не получалось т.к. дбконтекст находится на один уровень ниже в архитектуре WebApp-Bll-DAL и недоступен для веб-приложения. посему мне приходилось с помощью MEF коллектить зависимости в виде {SourceType, DestinationType, Scope} и уже вот таким говном их регистрироватьну DbContext как Singleton у меня не возникло мысли регистрировать
Что-то я не понял, в каком порядке книги читать? Что после The C# Player's Guide?
>>880911clr via c# Рихтера, а затем можно курить доки по asp.net на офф. сайте. Либо сразу начинай читать доки по asp.net. Ну это в случае веба естественно.
>>880929а EF когда?
>>880930Про EF можно и в доках asp.net читать - благо там много знать не нужно. Да и на EF весь свет клином не сошелся. Можно выбрать какую-нибудь мини-orm типа дапера или linq2db, хотя с EF в любом случае придется работать, да.
Сап, ребят, а есть С# 6.0 Троелсена на русском? Никак найти не могу где скачать бы.Слабоват пока в английском, посоветовали одновременно читать его на русском и английском, нашёл только 5.0.
>>869581123
>>881129почему я могу найти? или у тебя китайский фаервол?>>881138ясно
>>881152>почему я могу найти?Потому что ты фантазёр.
>>869574Нихуя. Дергать резолвы ручками можно только при конфигурации контейнера.Иначе вся суть контейнеров пропадает. В бизнес-логику лезет какой-то блядский код контейнера, если решим спрыгнуть с контейнера или перелезть на другой придётся вычищать кучу этой хери.Так что не надо дергать ресолв там где не надо.
Я совсем ньюфаг и не понимаю. Пример с msdn:public string Name { get { return name; } set { name = value; } }Что делает set? Что за виртуальная переменная value, которую не нужно объявлять? Как set участвует в вызове этого самого свойства?
>>881279Ой пиздец. Set устанавливает свойство. value это значение которое передается в set которое требуется установить.ClassName fuck = new ClassName();fuck.Name = "fuck"; // - вызовется метод set, в качестве value будет строка "fuck".
>>881279есть более простой вариант>string Name { get; set; }если хочешь начальное значение задать, то просто добавляешь в конец >= "имя"
>>881338А зачем такой дикий геморой с установкой значений полей? Для того, чтобы закладывать логику обработки от исключений или что?
>>881460когда тебе функционала полей недостаточно, а поступать как в жабе getField() setField() не комильфо но сиравно компилятор сгенерит методыну и всякая такая вещь как инкапсуляция
>>881461я нюфаня и ничего не понял, до сих пор живу категориями полей структур из Си
>>881463у тебя есть класс с публичным полем Nameработа инстансов этого класса в дальнейшем по приложению сопряжена с тем, что Name не должен быть null/empty/whitespace, если длина не более 16см, а начинаться с заглавной буквы - это вообще пиздец как недопустимоу тебя есть два пути: создать метод SetName(string name) или проводить проверку перед каждым вызовом obj.Name = {value}. фактически - первое реализовано как свойства в .NET. get {} это == GetName() {return name;}. set{} это == SetName(string name) { CheckName(); name = {value}; }
>>881254Запили абстракцию над контейнером. И если ты внезапно решишь пойти на другой - просто поменяешь в одном месте.возможны мы вообще об одном и том же говорим но по-разному?
>>880783Ну же, господа! Мне и вправду нужно знать ваше мнение.
>>881480Контейнер конфигурируется и присутствует только в проекте исполнения. Никаких резолвов не надо дергать. Все инжектится через конструкторы, если требуютя разные реализации, то применяется регистрация по условию. Все уважаемые DI фреймворки это умеют.
>>881495ну да, пока всё совпадает. инжекция в конструкцию - или какой-то абстрактный резолв - это уже детали, бро.
>>880354а что бы ты хотел увидеть?Вот например проекты серьёзныеhttps://github.com/search?o=desc&q=language%3AC%23&ref=advsearch&s=stars&type=Repositories&utf8=%E2%9C%93
>>881489Ну коллега прав.По факту у тебя тырфейс IHuyService должен содержать тоже методы Get, Delete, Modify, Add.Сначала покажется что дублирование кода. но на самом деле у тебя в интерфейсе сервиса может быть например 3 метода Get, Save, Delete. А Save уже по своей логике будет вызывать Add или Modify.Потому для сервисов и репозитроиев отдельные интерфейсы
Подскажите чего почитать по P/Invoke в C#. Желательно не отдельные книги, а статьи в интернетике. А в идеале, просто поясните, правильно ли я понимаю суть P/Invoke'а - с помощью него можно делать всякие низкоуровневые штуки путём импорта функций из различных .dll и объявлений в коде соответствующих структур? Может, подкинете примеров из своего опыта, что можно мощного сделать на P/Invoke?
>>881584Вот тебе пример:>>879860>>879863>>879865Ссылка например https://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspxСтатьи в интернетике обычно не существуют.Гуглится всё следущим образом.Сначала тебе нужна какая-нибудь функция, как правило она на C++ и как правило вызывает виндовую dll. Иногда может быть другая dll.В случае если функция виндовая, но гуглится на msdn. Например недавно я гуглил функцию GlobalMemoryStatusEx, которой нет в C#. Нашел. Дальше в гугле вбиваю "GlobalMemoryStatusEx Pinvoke", после чего гугол находит мне объявление этой функции вместе со структурой которая там используется: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public class MEMORYSTATUSEX { public uint dwLength; public uint dwMemoryLoad; public ulong ullTotalPhys; public ulong ullAvailPhys; public ulong ullTotalPageFile; public ulong ullAvailPageFile; public ulong ullTotalVirtual; public ulong ullAvailVirtual; public ulong ullAvailExtendedVirtual; public MEMORYSTATUSEX() { this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX)); } } [return: MarshalAs(UnmanagedType.Bool)] [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);А дальше я просто вызываю эту функцию таким образом: public static ulong GetFreeMemoryMb() { WinApi.MEMORYSTATUSEX memoryStatus = new WinApi.MEMORYSTATUSEX(); WinApi.GlobalMemoryStatusEx(memoryStatus); return memoryStatus.ullAvailPhys / 1024 / 1024; }И всё.Случаев чтобы какая-либо виндовая функция не гуглилась и не находилась её декларация у меня еще не было, поэтому самостоятельно даже не приходится всё это писать, достаточно нагуглить и скопипастить. Иногда бывают не самые оптимальные объявления, но как правило они оптимальные. В крайнем случае можно изучить как это всё маршалится и заебенить всё самому, но в результате будет всё по сути то же самое.
>>878292БампНеужели перевелись wpf мастера в русских селениях на двощах.
>>881639Где INPC?
>>881338Спасибо, ты расшарил в паре предложений то, что не могли расшарить мне трое других людей.А зачем вообще свойства требуются? Почему нельзя просто объявить поле public string name в другом классе и уже с ним оперировать?
>>881466А, ты уже ответил. Спасибо.
>>881639в WPF окна, не формы.мне лень заморачиваться и вчитываться откуда и куда ты кидаешь коллекцию, но я заметил, что ты селектед индекс биндишь к свойству, но тут есть 3 проблемыуа первых: ващпе, для биндинга принято делать класс, который в паттерне MVVM будет выполнять роль ViewModel. в конструкторе окна делаешь DataContext окна объектом этого нового класса-ViewModel. при биндинге xaml'а именно в вроде бы первом назначенном, не равном null, контейнере контрола, на котором обрабатывается текущий биндингDataContext'e ищется свойство, которое ты привязываешьуа втарых: в классе ViewModel реализуешь интерфейс INotifyPropertyChanged, там всего 1 событие.у третьих: свойство для биндинга придется делать не автореализуемое, а поле + свойство, + в set {} рекомендуется делать проверку, что новое значение != текущему, ну и вызываешь событие из INotifyPropertyChanged примерно таким образом:if (PropertyChanged!=null)PropertyChanged.Invoke(this, new PropertyChangedEventArgs("propertyName"))или, если не ебёшь говно мамонта и при этом пишешь на wpf, ну пиздец, а пишешь на C# 6.0 , то одной строкойPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedIndex)));у пятых, по дефолту биндинг в режиме OneWay, т.е. когда ты кликнешь на другой элемент три вью, селектединдекс не изменится, чтобы он изменился, нужно уебать режим биндинга (в кзамле) OneWayToSource
>>881747студия для WPF уже достаточно давненько предлагает накатить атрибут, по-моему InvokationTargetName, который подсовывает по-умолчанию значение, аналогичное nameof(InsidePropertyName), что позволяет вызвать ивэнт как PropertyChanged.Invoke(this), что, мне кажется, достаточно крутецкой альтернативой
Посоны, поясните ньюфане один момент:Вот есть Class A{ int YOBA; public A (int i) { YOBA=i; }}Class B: A{}Выдает ошибку, потому что у класса А нет контсрукторов, принимающих 0 аргументов. Чому так? Как мне тогда унаследовать без стандартного конструктора?
>>882170protected A() { }
>>882176is inaccessible due to its protection level
>>882177http://pastebin.com/bay8WfAtПочитай про свойства
>>882181А в чем разница между public int YOBA {get; set;} и public int YOBA?
>>882184Свойство и поле соответственно.>Почитай про свойства и поля
Посоны, а если я передаю в функцию или получаю List, я получаю ссылку на конкретный лист или копию этого самого листа?
>>882188>>882181Спасибо, разобралси.
>>880753>подключил Microsoft.AspNet.WebApi.Owin.Зачем ты это делал? Это же одна из фич новой mvc - объединение mvc и web api (никакого дублирования кода, удобство, полная объдиненные роуты), а ты от этого собственноручно отказываешься. Тебе же на стеке ответили: наследуйся от Controllers.Может все же стоит документацию глазами пробежать? ;)
>>882195Ссылку, ведь это же ссылочный тип
>>882200потому, что это объединение также уебищно, как и в старом mvc наличие actionresult. фактически я не могу сконструировать статически типизированное api, имея при этом возможность возвращать statuscode в случае чего стандартными средствами. приходится городить хуй знает што
>>882237Но зачем? Если все хорошо - он сам добавит 200, если плохо - ты явно вернешь это (return StatusCode(418);)Это же тип стандарт. Да и, думаю, если задаться - можно поискать где переопределить так, чтоб не забыдлкодить, няш)
Котики, скажите вот что, есть класс Корпус, а в него ставится Пилот. Когда вставлется пилот, бафы(бонусы) которые пилот дает переносятся в список бафов корпуса. Каждый раз когда пилот добавляется, добавляются бафы, потом идет пересчет характеристик внутри корпуса. А есть еще оборудования в Корпусе. И тут хуйня, вот добавил пилота, а пилот дает +50 к реактору. А потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактор. Ибо дает корпус за счет реактора, а не сам реактор. И тут я думаю, что наверное надо кидать бафы в оборудование( типа +50 реактор), а не в корпус. Вроде же совсем просто, но что-то меня тут смущает.
>>869105 (OP)Каким способом в C# можно реализовать циклическую очередь? Может ли System.Collections.Queue решить вопрос, или проще вообще юзать указатели. Просто это как-то небезопасно
>>877296>ServiceLocator - который сейчас считается антипаттерномПо мнению одного бородатого пидора, который заебал везде пиарить свою книгу по DI. С объяснениями уровня "generic методы абсолютное зло, их бесконечное число, и вообще нарушают инкапсуляцию". Ну и полным отсутствием понимания что такое антипаттерн вообще (поди и паттерн тоже).
Ананасы, а кто как свои веб-приложения деплоит? У нас в компании просто отбитая нахуй политика безопасности и из-за этого невозможно сделать расшаренную папку на веб-серваках куда бы все и деплоилось. Поэтому все деплоится все ретардксим способом: приходится паблишить на локальные компьютер, подключаться по rdp к серверам( а их целых 2) и копировать с локального компьютера в папку с веб-приложениями. Меня это заебало и я просто написал powershell скрипт, который занимается деплоем на самом деле нихуя, начальству и тут что-то блять не нравится в 1 клик на оба сервака. Приложение естественно не в облаке, а на удаленных машинах под виндой. Слышал, что есть от мелкомягких какая-то тулза sync, которая занимается из коробки этим, но так и не понял как она работает. Билд сервер вроде teamcity я думаю просто так хуй мне разрешать поставить. Интересно было бы послушать про ваших стори кто как этим занимается.
>>882331Я читал что там возможны проблемы с утечкой памяти, тк servicelocator это синглтон.Лично мне не нравится что тесты усложняются. Я не могу закинуть зависимости в конструктор, мне в каждом тесте приходится реализовывать фейковый SerLoc.
>>882324нам в универе для этого рекоммендовали делать АТД, у которого 0 и 1 элемент коллекции указывают на начало очереди и количество элементов в очереди соответственно, ну и от этого плясать. у меня вроде даже реализация осталась. если интересно - скину.
>>882296ты понимаешь всю уебищность ситуации? у меня API с возвращаемыми объектами типа IActionResult. это может быть ObjectResult(UserDto), FileStreamResult, null, еще какая-нибудь хуйня. а если результат экшена будет тот же UserDto, то я уже никаким боком не втулю StatusCodeResult. конечно, можно пойти тем путем, которым это сделано в старом WebAPI - если нада статус кодэ, бросаемся HttpResponseException(StatusCode.Kek), а фильтры сделают все остальное. и, возможно, было бы неплохо, но я на основе исключений уровня BLL формирую нужные мне статус коды и возвращаемые объекты. посему от такой хуйни как try {} catch {throw new} ушел.
>>882316вопрос в чем? когда ты вставляешь что-то куда-то, тебе нужно чекать эффекты, накладываемые вставляемым объектом и прокидывать их выше по уровню. т.е. тебе нужно построить дерево со связями от дочернего элемента к родительскому (либо двусторонний тип связи), ну и дальше все остальное>>882362ну тут всякое у меня бывало. от ручного копирования по rdp/ftp (и правки всех конфигурационных файлов, которых было пиздец как), до билд сервера, который менеджит все экварменты, включая продакшн и говнодев. удобнее всего, конечно, пользоваться Deploy опцией с Visual Studio, но это для серъезных проектов обычно не подходит
>>882389>вопрос в чем? Не, брат, выше прокидывать не нужно. Поставил пилота в корпус, накинул баф на оборудование. Вопрос в том что так делать номрально? Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs(), или может это проеб архитектуры?
>>882324>или проще вообще юзать указателиЗабудь про указатели, почитай про ссылки в c#
>>882331Ты хотел сказать по мнению небыдлокодеров
>>882455> потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактора тут ты предлагаешь гадать, что и как ты делаешь и что у тебя кому не дает> Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs()вещь, которая тебе в дальнейшем устроит спагетти в коде. да и вообще такие штуки опасны в публичном доступе. на уровне internal, а лучше всего private в какой-нибудь абстрактной абстракции - идеальное место для этих методов
>>881662>>881747>>881872INotifyPropertyChanged не помог.Но я всё-таки понял, в чём был косяк. Нужно было привязать свойство Text комбобокса.Почитал про INotifyPropertyChanged и появился вопрос:pastebin.com/2ugnhW0aЭти записи равноценны? В 1-ом варианте неявно вызывается Invoke или как? Объясните в чём разница
>>882513http://pastebin.com/2ugnhW0aфикс
>>882513дыа.
Шарпаны, как запускать выполнение хамарина из визуал студио? При запуске эмуль долго думает и в итоге выдает "сбой развертывания".
>>882716Попробуй файрвол вырубить.
Шарпаны, поясниет чего хочет от меня студия.Есть буквально пара строк кода. Сразу оговорюсь, что код работает. Но студии он ненравится.var g = Graphics.FromImage("test.bmp");g.DrawString("test", new Font("Microsoft Sans Serif", 99.9F, FontStyle.Bold, GraphicsUnit.Point), new SolidBrush(Color.White), new Rectangle(0, 100, 200, 200), stringFormat);Куча предупреждений на эту строку.вызовите System.IDisposable.Dispose для объекта 'new SolidBrush(Color.White)' перед тем, как все ссылки на него будут вне области видимостиИ так для каждого аргумента, для SolidBrush, для Rectangle. Короче для всего что я создаю через new. Ругалось и на stringFormat, но его я создаю отдельной переменной. Добавил строкой ниже stringFormat.Dispose() и на него ругаться перестало. На остальные продолжает. Но я не могу им сделать Dispose.Я где то хуй или это можно спокойно игнорировать?
>>882917Graphics же IDisposable по-моему?
>>882917using(var brush = new SolidBrush(Color.White))using(var rectangle = new Rectangle(0, 100, 200, 200)){g.DrawString("test", new Font("Microsoft Sans Serif", 99.9F, FontStyle.Bold, GraphicsUnit.Point), brush, rectangle, stringFormat);}>Я где то хуй или это можно спокойно игнорировать?По идее метод Dispose вызывается в деструкторе, так что утечки быть не должно. Но это считается плохим тоном - не освобождать неуправляемые ресурсы сразу после использования.
>>882763Короче попробовал и в визуале и хамарин студио накатить, что-то не работает нихуя.Есть где-то нормальный гайд как начать пилить приложухи на андроид?
Народ, можно ли при помощи linq вынимать элементы из Сыстема.Колехции.Общее.Очередь?
>>883261А что мешает взять и попробывать?
>>882974в деструкторе вызывается protected void Dispose(bool), если он есть
>>883304Я не знаю как создать запрос. Вот допустим у меня есть очередь A из объектов B. Как мне выдрать объекты где B.rule = 42?
>>883447.Where(x => x.rule == 42)
>>883458Спасибо, помог. Вот ещё глупый вопрос, ну я только начинаю.http://pastebin.com/0WuNjwPEВот класс. В нём при запуске кода происходит NullReferenceException хотя я и юзаюSomeCycleQueue.Cenqueue(penny); То есть я посылаю объект, он должен копироваться в newcoin. Я хотел попробовать принимать ссылку на объект, там создавать объект Coin конструктором копий по этой ссылке и его уже в enqueue. Но блин, как-то это всё запарено. Должен быть простой метод.
>>883462PS: Паста сырая и переменная size не работает как следует. Но мне бы решить проблему с передачей объекта, то фигня.
>>883463Двач, сорян за беспокойство. Я просто забыл инициализировать очередь. А ещё, спите ночью а не сычуйте. Умоляю :З
анон. что значит "Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно"?
>>883530Блять, ну ты бы хоть контекст подкинул о чем речь. Как я понял разговор про тестирование - когда ты тестируешь что-то и в коде есть метод, который цепляет данные из БД, то тебе не обязательно использовать реализацию этого метода, которая работает напрямую через БД. К примеру у тебя есть интерфейс и реализация интерфейса, которая работает с базой. За место использовния этой реализации ты создаешь мок-объект, который возвращает какие-то данные а какие - ты сам можешь определить в рамках тестирвоания и дальше ими уже оперируешь. Про мок-объект я надеюсь нагуглишь.
>>883534я не про тестирование.задание дали вот такое:>Прочитать из базы данных массив объектов Animal>Передать массив в виде модели в представление>Отобразить данные, используя шаблон>Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно.в представлении написать форму добавления новой записи, при этом сервер должен вернуть готовый для вставки html(это как блядь?)
>>883538Ты бы спросил у того кто задание тебе дал, ибо 1-ый и 4-ый пункты противоречат сами себе. По поводу готового html: тут имеется ввиду может быть partial view какой-то, либо можешь сгенерировать читый html на сервере с помощью простой строки, либо t4 шаблона и сохранить эту строку в модель, а во вьюхе вызвать это говно таким образом: @Raw(Model)
>>883538>>883554Дополню: если верить последнему пункту, то ты можешь в принципе создать статический класс какой-нибудь, который будет содержать массив объектов над которыми ты и будешь выполнять CRUD операции - чем не замена работы с БД?
>>883538Есть сборник? Я б порешал, а то в голову не лезут задачи на ооп, а в универских методах одна математика
Вопрос к паттерналистам.Я придумал такой паттерн (пикрилейтед).Суть его в том что многие объекты (в реальном приложении - разных классов) могут одновременно использовать общие объекты, имея на них ссылки. Эти используемые объекты (на пикче класса SUBJ) довольно большие в плане занимаемой памяти, поэтому делать клоны этих объектов каждый раз нежелательно из-за того что растет потребление памяти. В то же время эти объекты (типа SUBJ) могут изменяться их владельцами. Из-за того что у них могут быть и другие владельцы, это ведет к тому что у других владельцев фактически происходит подмена данных, чего быть не должно.Я придумал хранить количество ссылок на объект типа SUBJ при его прикреплении к родительскому (на пикче типа USER) и если объекту USER требуется поменять состояние SUBJ, то:1. Если число ссылок равно единице, то просто меняем состояние SUBJ.2. Если число ссылок больше единицы, то клонируем объект, число ссылок в старом уменьшаем, в новом (клоне) увеличиваем и становимся его единственным владельцем, после чего меняем его состояние не боясь затронуть остальных владельцев SUBJ.Вопрос: как называется этот паттерн? Я помню читал книгу про паттерны, но по-моему не встречал такого. Алсо, интересно есть ли более продуманные реализации данной схемы.
>>883793Хуй знает. Я не паттерналист, но мысль вкину. Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе. Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектов (т.е. по-сути делал бы глубокое копирование твоего толстого объекта и возвращал копию). А GC сам бы всю работу делал по утилизации всего этого говна, когда объект user уничтожался бы. Это вообще на паттерн не очень похоже ибо в реализации и поддержке как-то уж геморно получается и слишком специфичная хуйня.
>>883829>Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе.При бросании объекта SUBJ счетчик ссылок у него уменьшается. Но это не обязательно и даже если счетчик ссылок будет выше реального количества ссылок это приведет только к лишнему клонированию, но не к неработоспособности программы. Вести учет ссылок действительно геморно, но в моем случае учитывать присоединение объекта (т.е. увеличение счетчика) (а это самое главное) было легко, а уменьшение счетчика трудно, но последнее не является для меня проблемой, по крайней мере пока.> Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектовЭто приведет к сильному расходу памяти, что неприемлемо.
>>883843А можешь пример какой-то привести, где это можно использовать в реальном приложении? Мне почему-то кажется, что есть вариант получше и ты просто не в ту сторону копаешь.
>>883847Так я уже по сути привел всё описание.- Есть объект SUBJ.- Его могут использовать разные классы.- Некоторые из них могут его менять.- Объект SUBJ очень большой, поэтому лишних клонирований в идеале быть не должно.- Изменение каким-либо классом объекта SUBJ не должно сказываться на остальных владельцах этого SUBJ (за исключением случаев когда это делается намеренно).
>>883853Не-не, ты меня не понял. Я имел ввиду какое-то реальное приложение в котором бы это было задействовано и как бы оно использовалось. И типа что это за приложение: веб / десктоп / мобилки; откуда эти тяжелые данные бы брались и т п. Твою идею я понял, но мне интересно реальный кейс какой-то было бы почитать.
>>883861И что это поменяет? Я просто не понимаю смысл. Придумаешь как надо поменять приложение (т.е. ТЗ) чтобы его можно было выполнить проще?Ну ок.Приложение десктопное для анализа фин.рядов, что-то типа тестера стратегий.Объект SUBJ содержит массив баров финансового инструмента и может использоваться для показа на экране в MDI-окне (условно объект класса USER в моих картинках выше, в реальном приложении объект называется Graph, который через цепь объектов в конечном итоге принадлежит MDI-окну) и для прогона по нему стратегии (объект класса Strategy, на картинках я его не показывал, т.к. это сути не поменяло бы) и индикатора (класс Indicator).График можно:- Загрузить из файла в MDI-окно.- Скопировать из одного окна в другое.- Изменить состояние графика в окне (изменить таймфрейм, удалить часть баров, добавить новые, слить с другим и так далее). Это не должно отразиться на других окнах куда или откуда был скопирован этот график ранее.- Использовать в качестве входного графика для стратегии или индикатора. Последующее редактирование графика в окне не должно повлиять на график выбранный для стратегии. Для стратегии можно выбрать любой график из любого MDI-окна.
>>883881чем-то, чессгря, напоминает микс пула объектов и прототипа. причем, последний - одна из стратегий, инкапсулированная под капотом пула
Суп шарпаны,выполняю простенькие задания для студентов и немного застрял в реализации (задача номер 5 http://www.itmathrepetitor.ru/prog/zadachi-na-vychisleniya) В чем именно ошибка? Видимость переменной же должна быть в пределах цикла.
>>884091int i=0,int j=0
>>884102Niet
>>884104Зачем i два раза. В for() убери его
Vseravno niethttps://dotnetfiddle.net/BZaAvi
>>884112using System; public class Program{ public static void Main() { const int maxi = 4, maxj = 13; char[,] arrayD = new char[maxi, maxj]; bool flag = true; for (int i = 0, j = 0; j < maxj; j++) { arrayD[i, j] = '*'; if (flag) i++; else i--; if (flag && i == 3) flag = false; if (!flag && i == 0) flag = true; } for (int i = 0; i < maxi; i++) { for (int j = 0; j < maxj; j++) { Console.Write(arrayD[i, j]); } Console.Write('\n'); } }
>>884091Ошибка была во "flag ? i++ : i--;" - так делать нельзя (хотя жаль что нельзя, да).
>>884125Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку. Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?
>>884126>Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку.Я и сам удивился. Вообще в 90-х такое часто случалось с компиляторами, а сейчас это редкость.>Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?По сути нет. Есть функция Array.Clear, но она заполняет нулями и является целой функцией со своим кодом.Алсо, двухмерные массивы что ты используешь достаточно медленные в своей работе. Если приложение "performance critical" то их лучше не использовать. Впрочем это явно не про студенческие лабы.
>>884140Я вроде использую что ни наесть стандартные двумерные прямоугольные массивы. Есть решения, которые позволяют работать с такими данными быстрее?
>>884144jagged-arrays же.
>>884144Но если тебе только для лабы, то можешь не заморачиваться. Просто на работе могут сказать чтобы не юзал их.
А почему зубчатые быстрее? Мне казалость компилятору без разницы как рассчитывать адрес ячейки или тут другая механика? Я просто до этого на Си писал для контроллеров, более менее в программирование умею.
>>884148То же не понимаю, ведь они один фиг лежат в памяти подряд строка-за-строкой.Желательно только ходить по ним последовательно и горизонтально что кэш проца работал.
>>884104в for можно описать несколько переменных вот так>int i,j,k = 0
>>884152Niet, только так >int i = 0,j = 0
>>884149>То же не понимаю, ведь они один фиг лежат в памяти подряд строка-за-строкой.Там это связано с плохой реализацией.http://stackoverflow.com/questions/597720/what-are-the-differences-between-a-multidimensional-array-and-an-array-of-arrays>If you write some simple code using jagged and multidimensional arrays and then inspect the compiled assembly with an IL disassembler you will see that the storage and retrieval from jagged (or single dimensional) arrays are simple IL instructions while the same operations for multidimensional arrays are method invocations which are always slower.
анон подскажи.из конроллера во вюху передаю list<person>. во вюхе обозначил>@model list<test.model.person>данные вывожу через foreach.но есть проблема.мне на этой же странице надо добавить форму, которая должна быть написана на шарпе(тобишь html.editfor/labelfor и др.), но т.к. у меня модель - перечисление, то нихуя так не получится?
>>884160Просто не юзай строго-типизированные хелперы, а используй обычные html-теги, либо хелперы, которые строки принимают. В чем проблема?
>>884168задача состоит именно в этом. я уже ебанулся с этой хуйней. нужно использовать именно хелперы
>>884171Ну так я и написал - используй обычные хелперы по-типу @Html.TextBox("Название поля")
>>884157На macOS с CoreClr разница не такая большая - пик1Все намного хуже, если сравнивать с MONO - пик2MONO в работе с массивами сейчас рвет CoreClr в ~40 раз
>>884173Если в MONO увеличить кол-во интераций до 100 (разогреть), то разница увеличивается.Вообщем хорошо что в ASP.NET редко приходится возиться с массивами чисел.
Прочитав этот тред, я проиграл так, как не проигрывл очень давно. Нет, я знал что на дуднетах пишут анальные рабы мелкософта, и всё, что связано с дотнет парашей - оплачивается на уровне пхп (а то и ниже). Но что их уровень настолько низок - не знал.И уж точно не подозревал, что хамарин "программисты" не слышали про FireBase TestLab. А господа дуднет-рабов из мелкософта понтуются библиотечками для распознавания лиц, и совместимостью с Linux в 2016.Посмотрев мельком скрины в треде, стало понятно, что в мелкософте есть 2 типа дизайнеров: офисная крыса с кризисом среднего возраста, которая уже лет 10 пьёт чаёк, и молодой любитель лсд, который учится по заветам старшего.Ладно, дебилы, поссал на вас - и пошёл дальше работатьмимо-джава-господин-150к
>>884208> и пошёл дальше работать>мимо-джава-господин-150кАга, пиздуй.безработобоярин
>>874018Учусь на очке, работаю разрабом под .core в Екатеринбурге, подал просто на шару, взяли =)
>>884267>.core в ЕкатеринбургеНу и как оно, что делаешь?Спидом еще на заразился? :3
>>884268Хуячим жирное asp.net core приложение, что ж еще)>Спидом еще на заразился? :3Через интернет не передается
Помогите решить, что лучше установить на свежеустановленную винду - 2017 студию, или пока всё же 2015? Кто-нибудь может вангануть, когда релизнут её?
>>884287Установи обе версии - в чем проблема? 2017 сгодится как песочница какая-нибудь, где поиграться можно. А в 2015 можешь что-то писать / открыть другие проекты у которых будут проблемы с совместимостью из под 2017 студии.
>>884289А так можно?
>>884291Спроси у мамки, если разрешит, то можно.да, студии уже давненько независимо друг от друга устанавливаются и друг другу не мешают
Аноны, подскажите такую штуку.Есть класс с двумя функциями, назовем скажем Foo() и Bar()Функцию Foo() вызываю я сам, функцию Bar() вызывает другой элемент фреймворка, в неизвестный момент времени после вызова метода Foo(). Вопрос: Как мне, фп-way, передать некое значение из метода Bar() в точку вызова метода Foo()?Если кому-то интересно - язык C#, платформа Xamarin.AndroidИсходники - http://pastebin.com/NLuNXA6c если убрать все лишнее
>>884351Самое простое это сохранить в приватное поле
>>884356Не функционально получается.
>>884372Ну а как ты сейчас определяешь что OnActivityResult вызвался и нужно вызвать Login?
>>884429Login вызывается до OnActivityResult
>>884636OK, раз методы вызываются в разное время тут без промисов не обойтись.Я бы заюзал Task + TaskCompletionSourceЕще что бы не забивать активити лишним кодом, вынес бы логику в отдельный класс PromiseFactoryи положил бы в какую-нибудь папочку типа Utils или Common
>>884675Кстати, там можно сделать чуть проще. Заменивreadonly List<TaskCompletionSource<T>> sources = new List<TaskCompletionSource<T>>();на event Action<T> notify;
>>884675Fira Code?
Сишарпач, расскажи каким DI контейнером пользуешься. Каким пользовался. Плюсы и минусы того или иного контейнера, так сказать из личного опыта. Что можете посоветовать?
>>884702Никакими и всегда их на хую вертел. Не понимаю нахуя они и какой от них профит, кроме гемора.
Пытаюсь вкатиться в дотнет (asp mvc), смотрю курсы, считаю книги. Очень не хватает самостоятельной практики, отсюда и вопрос: а с чего начать ? Можете подсказать сайты с задачами/лабами ?
>>884768Я тоже вкатываюсь, только мне больше интересен десктоп. Пока, чтобы набить руку, решаю элементарнейшие задачи для студентиков - уже нашел нашёл множество моментов, которые были не так очевидны. Если у тебя с этим (базой) проблем нету, то просто начни делать сайты, в чем проблема? Сейчас популярны всякие интернеты вещей. прикрути прослойку между, например, народмоном и телеграммом. Двач имеет апи, сделай сайт которой этот апи бы использовал. Исходить нужно не из выучу язык -> придумаю задачу, а наоборот - вижу задачу, использую язык для ее решения.
>>884773где задачи для студентиков берешь братюнь?
>>884702Ninject - медленныйSpring.NET - еще более медленныйUnity - не сказать, что пользовался. так, на проекте был, мне не мешал, сам никуда не лез. ничего особенного сказать не могуStructuremap - последние версии, которыми я пользовался, имели просто охуительный эффект, связанный с уровнем доверия к сборкам, т.к. использовал рефлексию во всех загруженных сборках при старке. и посему приходилось там, где не надо, явно указывать подобные секьюрити вещи, что, мягко говоря, печально подходит к сереезным приложениям. надо отдать должное, самый негемморный (если не считать вышеописанного) при встраивании в многослойные аппликухи (ну как по мне). параллельный отряд товарищей работал с ним на супир-пупир-большом приложении, им ничего не мешало. возможно, дело во мнеServiseStack - ничего особенногоMicrosoft.DependencyInjection - я уже бугуртил где-то выше по поводу него. ну так-то, в целом, резолв делает. что еще от него надо?
>>884776Тереблю вот этот список https://tproger.ru/digest/competitive-programming-practice/Особенно понравился вот этот сайт http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/ - полный набор: арифметика, классы, гуи, многопоточность и прочее и прочее.
Начал недавно пилить сайты на MVC, это нормально что загрузка без отладки идет по 2-3 минуты ? Железо core i5, 8gb ram 250 ssd.
>>884813а если с отладкой, есть что-то подозрительное в диагностических сообщениях?
>>884816Например что?
>>884820например ты увидишь, какой из шагов выполняется долго и вообще, что происходит в момент запуска приложения (возможно не нужного на этапе запуска)
>>884689Hasklig У фиракода буквы как-то непривычно расположены/spoiler]
>>884780Autofac ?
>>884848не юзал и не стремлюсь особо
>>884850В отличие от того ninject - он активно пилится и поддерживает .netstandard
>>884780SimpleInjector пробовал? У меня на предыдущем месте работы его активно использвали. По скорости к сожалению не могу сказать в сревнении с остальными контейнерами, но настраивать и использовать удобно.
>>884864В одной из больших таблиц сравнения контейнеров simpleinjector ебет всех по скорости кроме ручного new конечно же
>>884860я активно защищаю ninject иль ты просто к слову?не только autofac пытается поддерживать ~core, в отличии от того же всего остального>>884864глянув на статистику https://github.com/danielpalme/IocPerformance, решил DryIoc заюзать. но потом все плюнул и вернулся к дефолтному Microsoft.DependencyInjection посчитав, что на данном этапе бОльшим геморроем является его настройка, а профит, возможно, не так уж и заметен>>884870не всех
Шарпаны, вчерашний нюфаня снова врывается в тред. Продолжаю решать студентческие задачи и упёрся в ограничение C# на изменение строк.Коротко задача: обнулить в числе каждое вторую цифру:>45678 -> 40608. Какими средствами лучше всего будет воспользоваться для такой задачи?
>>884876средствами языка c#ты чуть что сюда бежишь или хоть немного пытаешься подумать?
>>884878У меня в голове как минимум 2 решения: StringBuilder и конвертация в промежуточный числовой массив, но мне они кажутся слишком монструозными. Мб есть какое-то более оптимальное решение?
>>884880а что в StringBuilder тебе кажется монструозным? не, ну смотря, что ты собираешься сделать, конечно. но с его помощью все решение упрется в один цикл и даже без ифа
>>884880string s = Console.ReadLine();s.ToCharArrayДальше пробегаешься и заменяешь пробелами, потом каким-нибудь Split или что там убираешь пробелы.
>>884880Можно изменить саму строку через unsafe-код. Но если она используется в другом месте, то это может привести к багам.
>>884876>Какими средствами лучше всего будет воспользоватьсяnew Regex("(\\d)\\d").Replace(... дальше сам
>>884687Можно тут подробнее?
>>884675А расскажите про промиссы, плз
>>884848заебись DI, и поддержка на PCL годная и core
>>884816Какие такие диагностические сообщения?
>>885005Output -> Debug
>>884985пик (заменили List<T> проста на C# event)>>884985>А расскажите про промиссы, плзЭто когда вместо результата ты возвращаешь "обещание когда-нибудь верунуть результат"В комбинирование с await позволяет писать линейный простой код.https://ru.wikipedia.org/wiki/Futures_and_promises
>>884780>>884864Спасибо.Что-то можете сказать о Castle.Windsor?
>>885175не более того, что ты сам можешь найти
>>885014>Output -> DebugКакой output?Если ты говоришь про обычный f5, то какие сообщения, никогда не было
>>885015Неплохо, хотя первый вариант понравился больше. Где подсмотрел такую годноту (про первый вариант тоже)?
>>884675Но это же все равно не очень фп получается
>>885193есть такая вещь как модальное окно Output в Visual Studioкогда билдишь приложение, например, тебе в него пишут всякую хуйню типа 1> Projectname start task compile. так вот, там есть дропдаун, в котором можно выбрать Debug
>>885202Не бывает 100% программ даже когда пишешь на Clojure, а мы тут вообще говорим про OOP язык C#.Функциональным должно быть ядро / биз.логика, а инфраструктура может быть любой.
>>885220Круто, что полезного через него можно выудить?
>>885278ну вот попробуй посмотреть
>>885292Че грубишь? Я посмотрел, мало что полезного, вот и спрашиваю: может в каких-то особых кейсах, или может я не знаю каких-то инсайдов
>>884903>>884931Спасибо анончики, самое оно что требовалось.
кому нибудь доводилось ковырять вот этого пацана ↓[DllImport("kernel32.dll", SetLastError =true)]static extern int VirtualQueryEx(IntPtr hProcess, IntPtr lpAddress, out MEMORY_BASIC_INFORMATION lpBuffer, uint dwLength);через p/invoke?что делать, если при вызове функции для произвольного уже работающего процесса появляется исключение: Access Denied?на msdn'е грят, что у процесса должен быть какой то enum стоять в ACCESS_ALL_ALLOWED, который воткнуть, похоже, можно только при создании, и что тогда делать с уже работающими процессами?алсо, при вызове функции скармливаю ей следующие параметры:VirtualQueryEx(theProcess.Handle, new IntPtr(), out MBI, Marshal.Sizeof(typeof(MEMORY_BASIC_INFORMATION)));где theProcess - процесс, MBI - экземпляр структуры MEMORY_BASIC_INFORMATION, описанной в соответствии с "ГОСТом" или как это блять правильно назвать, стандартом с++-функции?
>>885846ну тут поц пытается нотэпад просканировать этим методом: https://www.codeproject.com/articles/716227/csharp-how-to-scan-a-process-memory. подсмотри различия чтоли
>>885855а вот тут ньюанс, у меня нормально считывает инфу с хрома и ноутпада. думаю, есть еще какие нибудь процессы, о которых можно получить эту инфу, но я пока что не понял, по какому признаку различать такие процессы, и мне не нужно, чтобы такой признак вообще был. я хочу получить memory basic information любого процесса, но за ссылку посмотрю, мб найду что нибудь нового
>>885861Ты эту поебень читал?https://msdn.microsoft.com/en-us/library/windows/desktop/aa366907(v=vs.85).aspx
>>885876да у меня уже заработало. как оказалось, у процесса из System.Diagnostics некошерно брать дескриптор, нужно, блять, через другую pinvoke функцию (см статью вот этого анона >>885855, спасибо кстати) взять хэндл интересующего процесса, и только потом искать MSI, ну и я структуру MEMORY_SYSTEM_INFO заколхозил, теперь она отличается от каноничной - всё, что не указатель - long. хуйня эти ваши инвоуки, вообщем потому что от них у меня горит очаг.
Дорогие сосцы мойкрософта, запрашиваю ваш ответ.Я хочу податься в веб(студентота), как у вас с этим дела?PHP - язык нелюдей и опущенцев.Python - язык хипстеров с подворотами.Ruby - нет работ.А что касательно связок Asp.net/typescript? Можно ли найти работу разбираясь с этой области? Или лучше таки PHP? Я слышал что он отмирает в угоду node.js, но всё ж таки? js очень уж нелогичный язык, мне неприятно на нем писать. А C# очень нравится, был бы рад приобщиться, но нужна сводка по работам. Живу в мухосранске и если у нас что-то есть - то только по php, так что ориентир на фриланс.
>>886063> ruby - нет работсирисли?> ориентир на фрилансна фрилансе, насколько я знаю, тоже доминирует рнр и питоны всякие. ну, руби точно есть, насчет asp здешние товарищи убеждали, что работы хватает, но я не встречал прям большого выбора (потомушто не искал)
Анон, дали курсовой по .net сделать интернет магазин. Cтэк: N-tierasp MVCautofacEF CodeFirst Должно быть 4 слоя: 1) Репозиторий (Абстрагирует от типа БД)?2) Домен (Хранит сущности с помощью которых заполняется БД по средствам EFCF??)3) Сервисы (Реализация интерфейсов репозитория??)4) MVC(Это просто UI? БизЛог в отдельном проекте?)Помоги пожалуйста, я все правильно понимаю или нет? Буду искренне благодарен!
>>886457это ты начертил мегасхемку? если нет, то даже не знаю, что это значитmvc - слой, реагирующий на действия пользователя. тут же происходит валидация инпутов, правильное составление ответа юзерусервисы - и есть твоя бизнес-логикадомен - можно сказать, это набор комплексных операций с моделью/моделямирепозиторий - круд, отвязанный от конкретной базы данных
>>886457И это блять курсовая? Ебануться, у меня диплом и того меньше.
Анон, недавно портировал один проект под net45 под netcoreapp1.0, чтобы он работал в CoreCLR на дебиане. Перенёс всё это заставив проект импортировать библиотеки под dnxcore50 и ещё portable-net45+win8+wpa81. Поэтому появился вопрос. Есть одна библиотека https://www.nuget.org/packages/NAudio/ . Собирается под net35 и win8. Можно ли её будет каким-то образом использовать, чтобы всё работало и на дебиане?Поясни, пожалуйста, за платформо-совместимость или ссылкой, чтобы это было поподробнее расписано.
Что почитать про юнит тесты, чтобы научиться их писать? Много раз слышал, но сам не пользовался.
>>887026любой говногайд в интернетах типа "как песать тесты на сешарп анлайн учебник"
>>869105 (OP)Шарящие анонычи, подскажите. Работаю сейчас в C# с Windows Forms под Visual Studio 2012. Проблема такая, есть 2 одинаковых набора всяких объектов интерфейса (надписи, групбоксы с радио-кнопками, просто кнопки), хочу их загнать в какую-то структурку, чтобы не дублировать один и тот же код с разными названиями кнопочек.Типа естьgroup1Btn1.Visible = false;...group2Btn1.Visible = false;А хочу чтобы было примерноgroup = group1;group.Btn1.Visible = false;...Главный вопрос: как можно автоматизировать весь этот процесс замены первого варианта на второй? Или мб есть еще какие-то иные варианты для решения проблемы?
Создайте новый тред, еле этот нашел на дне.
>>887039выделяешь интерфейс -> инкапсулируешь поведение конкретных контролов
PEREKOThttps://2ch.hk/pr/res/887100.htmlhttps://2ch.hk/pr/res/887100.html
>>887026Просто про юниттесты - книга roy osherove unit tests чегототам, в целом дает норм представление и многие моменты разъясняет. Толковый справочник xunit test patternsПо мне, юнит тесты дают максимум выхлопа при tdd. Мой путь был таков:Unit tests for fridy cats like me на pluralsightЕще пачка видосов от туда по этой теме, вплоть до курса марка симанаКнижка growing object oriented software guided by tests - вот после нее все встало на свои места и теперь мне без test first жизнь не мила. сори за неровный почерк, пишу с чучелки
>>886476Да, я рисовал. Спасибо большое!