Этого треда уже нет.
Это копия, сохраненная 17 декабря 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
31 Кб, 317x372
.NET THREAD #4 (C#[s]/F#/VB[/s]) #869105 В конец треда | Веб
Тред единственной элитной платформы в мире программирования.

Шапка: https://github.com/CSharpShapka/SharpHat/wiki

(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)

Прошлый тред тонет здесь: https://2ch.hk/pr/res/856099.html (М)
3704 Кб, 444x250
#2 #869107
ну шоб не утонул.
#3 #869110
Есть кто на ф# пробовал писать? Как этот огрызок окамла по ощущениям? Чо по перформансу? инб4: как напишешь
#4 #869112
не успел спросить, уже перекатили

как нормально регистрировать зависимости абстракций и реализаций в нормальных приложениях?
если, допустим, есть:
ClientApp
_BllCoreLib
_BllImplLib
__DalCoreLib
__EfDalImplLib
__RedisDalImplLib
где, соответственно, Client не знает о Impl-ах, а работает только с интерфейсами Core-ов?

на моей памяти либо юзали XML-конфигурации, либо всю регистрацию впихивали в Shared-проект, откеда доступ был всему от всего. но нормальные ж люди как-то делают адекватно все это?
>>869245
#5 #869245
>>869112
тебе di нужен или што?
>>869264
#6 #869264
>>869245
мне нужен подход, по которому я, не нарушая целостность и изолированность слоев в n-tier приложении мог бы использовать это самое di/ioc
>>869574
#7 #869437
>>869110
Очень сомневаюсь, что тут есть хоть кто-то, пишущий не на С#
да и нахуя этот ф-шарп нужен?
#8 #869574
>>869264
возможно я что-то не понимаю, но например в одном проекте ты пишешь что-то типа

container.RegisterGeneric(typeof(BaseRepository<>))
.As(typeof(IRepository<>))
.InstancePerDependency();

а в проекте уровнем выше резолвишь эту поеботу.

container.Resolve<IRepository<Foo>>();
>>869581>>881254
#9 #869581
>>869574
возьмем самый простой пример: вебапп->проект бизнес-логики->проект доступа к бд. в каждом из них есть свои публичные интерфейсы, от которых зависит проект цепочкой выше, и конкретные реализации, которые зависят от 3-пати либ
мне, для того, чтобы зарегистрировать irepository as myrepository надо: либо протянуть от вебапп к dal метод, который бы проводил регистрацию (что, по меньшей мере, чревато наличием в вебапп зависимостей от библиотек, которые использует ДАЛ, ну и доступ к интерфейсам этого проекта в придачу; либо вынести всереализации в четвертый шаред-проект и с помощью билд-ивэнтов или еще какого-нибудь шаманства, скопировать библиотеки в ин веб приложения (подход так се, не взирая ни на что). более адекватным решением я видел использование возможностей xml-регистрации зависимостей. но тут приходится зависеть от строковых значений, левых файлов и, вообще, не всякий инжектор так умеет.

самое нормальное решение, что я попробовал найти, это использование mef для поиска компонентов, осуществляющих регистрацию зависимостей. все-равно придется прибегать к шаред-проекту и устанавливать в нем зависимость от di-библиотеки. но хоть так

буду за компуктером, поделюсь ссылкой
#11 #870117
Какие есть курсы по C# по типу https://ru.hexlet.io? С проверкой домашнего задания и ревью кода?
>>872268
#12 #870173
>>869581
Dependency Injection in .NET охуенная книга на эту тему. Автор там как раз примеры дает того, как использовать это все в разных приложениях.
>>870360>>878038
#13 #870184
>>869110
По ощущениям это даже не огрызок окамла — это С# с лицом ML. Как фп язык это самый кривой огрызок потому что в первую очередь это ООП язык, вся инфа гуглится да и сам понять должен если работал раньше хоть раз с тем же окамлом. собственно цена за возможность полного интеропа с шарпом и остальным дотнетом, который в той же скале по обратным причинам очень кривой

Если же тебе нужен сшарп с почти полноценным выводом типов, паттернматчингом и кастрированным адт и возможностью писать дсл прям "на лету" как в скале — в целом неплохо. То же самое и по перформансу — именно код в функциональном стиле дотнет оптимизирует очень слабенько.
#14 #870360
>>870173

>Dependency Injection


По этому целую книгу написали? Пиздец, нахуй.
>>872528
#15 #870529
Шарпач, подскажи, есть ли достойная замена решарперу работающая в отдельном потоке? А то на моем некроноуте VS с решарпером постоянно подвисает и тормозит, чего без решарпера не происходит. Отказаться от его советов пока не могу, пишу нашарпах всего 3й месяц
>>870572
#16 #870562
аноны, какая есть объемная литература по коллекциям?
>>870572>>876892
#17 #870572
>>870562
описанного у рихтера тебе недостаточно? может ты что-то конкретное хочешь узнать?

>>870529
что такого тебе постоянно подсказывает тебе решарпер, что ты не можешь отказаться от него? подобное говно приводит к привыканию, потом еще надо постараться написать полтора класса без указок
использую решарпер, в основном, как навигатор + быстрый добавлятор usingов
>>870602
#18 #870602
>>870572
Юзинги, циклы в методы расширения, ну и мелочи всякие типо лишних скобок в условиях
#19 #871728
{}
#20 #871743
https://habrahabr.ru/company/jugru/blog/314524/

– Вы планировали выпустить релиз (Rider) осенью. Получится?

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

Пиздос. Ещё месяца три релиза ждать.
>>871878>>874409
#21 #871878
>>871743

> Rider


> платный


ох яебу
#22 #871893
>>869105 (OP)
как выгрузить файл на гугл диск иди другое хранилище? Пробовал использовать WebClient.UploadFile(ссылка, которая успешно работала при загрузке файла с диска,путь к файлу); но нифига не вышло
>>871930
#23 #871930
>>871893
использовать либы, желательно от производителя
#24 #871986
>>869110
В треде об ФЯП писал, тут повторюсь.

На работе пишу на нем скрипты в linqpad, вместе с type providers ваще огонь для всяких одноразовых интеграционных задач.
Сборка мелких проектов на FAKE - там относительно удобный dsl и много чего из коробки.
Пет-проекты на нем пилю, оче нравится.

В нем есть все, что есть в c#, кроме unsafe, так что проблем особых не вызывает.

Что за монадки и как ими пользоваться я понял после чтения статей на fsharpforfunandprofit до этого прочтя кучу статей про монады в хаскеле и ничего не поняв, Скотт отлично объясняет. Появилась зависимость.

Выведение типов делает меня плакать при возврате к написанию кода на c#, композиция функций делает код компактнее, АДТ позволяют лучше моделировать предметку, паттерн-матчингом красиво пишутся сложные для if-else и switch-case условия.

Там же в треде про ФЯП мне пояснили, что F# говно по сравнению с другими языками ml-семейства, но я на них не писал, по-этому не страдаю особо.

На hh изредка появляются вакансии, где он желателен была вакуха в касперском, сейчас мдмбанк, но чистых фшарпистов последние 2 года точно не искали.
#26 #872443
Как использовать 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);

Запускается все равно на новом чистом профиле.
>>872455
#27 #872455
>>872443
может быть надо имя профайла указывать
FirefoxProfileManager myProfile = new FirefoxProfileManager();
var profile = myProfile.GetProfile("anon");

а не путь до него
>>872871
#28 #872528
>>870360
Что не так?
Несмотря на всю простоту концепта, очень многи умудряются проебаться и нахуярить сервис локаторов, которые конфигурируются через xml.
>>872594
#29 #872594
>>872528
все эти концепты, шаблоны, подходы имеют красивое и лаконичное до нельзя назначение, но как реализуешь все в проекте, начинается блять
#30 #872629
Объясните одну вещь.
Вот на подходе .net core - он будет давать делать только webapi/mvc проекты? А если, например, хочу что то для линя написать на шарпе то это ксамарин/моно? Ещё видел презентацию, где шарп компилили в нативный исполняемый файл в убунте. Я запутался что и для чего нужно. Объясните.
>>872670>>874416
#31 #872670
>>872629
.net дает тебе возможность писать только asp.net проекты?
#32 #872755
Мне нужно сравнить 2 слова. Например, первое TeamA, а второе может быть teama, Team A, T.e.a.m.A., Team-A и так далее, в таком случае вывести положительный результат, а если там будет например Team B, то уже отрицательный. Чето с регулярными не смог допереть, как это сделать. Подскажите плз, C#
>>872769
#33 #872769
>>872755
Что-то вроде этого? Подставь просто в замену нормальный символы какие тебе нужно, а не строки как у меня и норм по-идее.
https://dotnetfiddle.net/lZXRAr
>>872772
#34 #872772
>>872769
Да, спасибо, кажется это должно работать. Пиздец я тупой и не додумался до этого сейчас, хотя совсем недавно именно это и делал.
#35 #872871
>>872455
Пробовал, все равно не взлетает
#36 #873654
Кто-нибудь может объяснить принцип работы async/await РУССКИМ языком (понятным, для даунов, дебилов)? Из всего, что я прочитал, понял только, что это будто какое-то маняврирование, чтобы избежать потоков, которое в итоге все равно создает отдельный поток (task). Нахуя это нужно, чем лучше обычных потоков? Если кто-то пояснит с примером, буду очень благодарен.
>>873666
#37 #873657
Почоны, дайте тестов по шарпу уровня среднего или высокого. Я нашел квизфул, но там анальная регистрация и деньги деньги эйчар собеседование.
>>874354
#38 #873666
>>873654
http://blog.stephencleary.com/2012/02/async-and-await.html - вполне себе годное объяснение.

tl;dr

Если ты вызываешь асинхронный метод через await, то выполнение данного метода приостанавливается до тех пор, пока асинхронный метод не вернет какой-то результат. В это время - пока мы еще ожидаем выполнение этого метода - управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода). Как только асинхронный метод завершает свою работу, то метод, который ожидал завершения его выполнения просто продолжает свою работу. А нахуй это нужно - для удобства разработчика, т.к. создавать потоки и самому всей этой хуйней управлять не очень удобно, асинки - напротив, просты в освоении и предоставляют уницифированный интерфейс для работы.
>>873676
#39 #873676
>>873666

>управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода)


Да это я понял, а в то время когда вызывающий контекст возвращается к работе, и если там не просто какие-то кнопочки тыкать, а сложные длительные вычисления происходят, в это время тот код который начал работу в асинхронном методе не выполняется, а ждет пока эти вычисления закончатся?
>>873679
#40 #873677
Кто-нибудь сможет пояснить за memory mapped file?
Допустим, я сортирую внешней сортировкой 1ГБ файл.
Зачем тут использовать mmf? Когда можно просто построчно читать файл, скидывать в новый файл, сортировать внутри, потом сливать все файлы.
>>873866>>874123
#41 #873679
>>873676
Да, если ты вызываешь этот метод через await, то код в этом методе ждет завершения асинхронного метода.
>>873684
#42 #873684
>>873679
Кажется, ты не про то ответил, я хуево написал. Код, который вызвал метод, в котором есть await, продолжает выполнятся сразу после вызова метода через await, а метод, вызванный через await, ждет завершения этого кода? Они же не могут параллельно выполняться, так как находятся в одном потоке.
>>873688>>873693
#43 #873688
>>873684
Нет, он будет ждать завершения работы метода в котором await есть. А вообще чтобы вызвать этот метод, в котром есть await, ты должен будешь его вызывать либо через await (т.к он помечен как async), либо завернуть это дело в Task.
>>873697
#44 #873693
>>873684
Хотя я может быть напиздел по поводу того, что он ждать будет. Сейчас нету возможности проверить, так что либо у себя попробуй хули ты сразу не проверил? это ж 5 минут , либо жди пока кто-то поумнее появится.
91 Кб, 1500x825
#45 #873697
>>873688
Вот супер схему запилил. На первой M1 и m3 же не могут одновременно работать, так как у нас нет нескольких потоков (или есть (???)).
На второй m3 ждет, когда M1 выполнится. Вторая верна или нет?
#46 #873707
>>873697
Не, параллельно они не будут выполняться. Во втором случае m3 будет ждать, когда m1 выполнится.

Вот кстати наглядный пример с объяснением даже - http://ru.stackoverflow.com/questions/316990/Как-работают-await-async
>>873716
#47 #873711
>>873697
мимо третий
какую-то ты еболу намалевал на своей картинке, сам запутался и у других ответа не получишь
https://m.youtube.com/watch?v=lh8cT6qI-nA
здесь все должно быть яснее
насчет супирпупир длительных операций: если это IO операция, она практически гарантированно уйдет в другой поток. если нет, CLR может вполне легально принять решение о переводе операции во многопоточность, если оно затягивает выполнение
>>873765
24 Кб, 671x415
#48 #873716
>>873707

>Во втором случае m3 будет ждать, когда m1 выполнится.


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

Вот с той же ссылки пример, его запустил, он почему-то выполняется параллельно.
>>873718
#49 #873718
>>873716
Так логично, что параллельно - у тебя метод My вызывает без await'a, а для этого тебе нужно возвращать Task или Task<T> из метода My.
>>873723
#50 #873723
>>873718
Но я же тут >>873697 нарисовал, и вы сказали, что параллельно он не будет выполняться?
>>873751
#51 #873751
>>873765
17 Кб, 320x310
#52 #873765
>>873751
Спасибо! Тут вообще какая-то неразбериха с потоками, почему-то только кек уходит во второй поток, а все остальное в одном делается. Ладно, мне не дано понять, посмотрю лысого дядю >>873711 и пойду баеньки. Бобра вам.
>>873795
#53 #873795
>>873765
ну таск.ран работает в принципе чуть по-другому. я еще проебался, надо было бы вызвать Result у асинхронного метода, там тоже CLR может принять решение о выполнении задачи в потоке
>>873874
#54 #873866
>>873677
Алло ;(
#55 #873874
>>873795

>CLR может принять решение о выполнении задачи в потоке


>CLR может


Что-то у меня бомбит от этого.
Ты так говоришь, будто при разработке не знаешь как будут выполняться таски.
>>873882
#56 #873882
>>873874
ну как и execution plan субд - насчитает одно, но есть вероятность, что выполнится другое
#57 #873943
Ньюфаг репортинг - решил сделать для начала прогу, сохраняющую все картинки с треда. Беда только в том, что не знаю с чего начать. В какую сторону копать?
#58 #873951
>>873943
Самый простой вариант: Пилишь простое windows service приложение, которое будет брать ссылки на треды из какого-нибудь файла и будет парсить треды вытягивая оттуда картинки (пожалуй с парсинга и вытягивания начни), а потом просто сохраняешь себе на диск. Ну и работать сервис через таймер будет какой-нибудь, который автоматически ьудет перезапускаться.

Ну или еще проще: пилишь веб-приложение с одним инпутом, куда забиваешь ссылку на тред ну и дальше все точно так же (парсинг, еботня и все это), но эта хрень сама естественно не будет сама перезапускаться и ручками придется.
>>874009>>874264
56 Кб, 652x373
#59 #873978
>>873943

>прогу, сохраняющую все картинки с треда


>В какую сторону копать?


Главное - прикрути функциональное программирование задача позволяет.
>>874014
44 Кб, 745x569
#60 #873990
>>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, он в себе содержит информацию о файлах. Дальше сам разберёшься.
>>874001>>874014
29 Кб, 448x588
#61 #874001
>>873990
Прошу прощения, но я немного обосрался. Судя по всему, тебе придётся немножко поебаться с сериализацией, т.к. эта поебота не сконвертировала то, что тебе нужно.

Значит смотришь на мой предыдущий пик и создаёшь класс File, который содержит в себе все свойства с пика (то, что лежит внутри переменной 'files'). Обрати внимание, что регистр свойств и тип переменных должен совпадать, чтобы конвертер не послал тебя нахуй.

Затем вместо object подставляешь этот File в текущем пике.
70 Кб, 600x596
#62 #874004
PHP макак вкатывается в тред

1) хочу написать UWP приложение под десктоп/мобил/xbox
for fun. Где посмотреть хелло ворлд? С чего вообще начать? Т.к. предвижу winforms мне не совсем нужен будет

2) Много ли платят в отрасли? Я имею ввиду мне сейчас платят 2к евро дистанционно и сижу на жеппе ровно. Будет ли существенный прирост? В пыхе есть частые халтурки и можно работать из дома. Плюс работы очень много.
Смогу ли я найти на апворке или на тематических форумах таски по быстрому если научусь кое как говнокодить?

3) Если ответ на 2ой вопрос положительный. Во что развиваться? В .ASP, .NET или Xamarin чтобы опять же сидеть на жеппе так же ровно и получать бабло?

4) можно ли писать легковесные и шустрые приложухи на .asp или это не поворотливая хрень?

Всем добра
#63 #874009
>>873951
Лол, а вопрос как распарсить страницу это совсем дниве? Прост я до этого только в Юнити хуярил.
>>874082
#64 #874011
>>874004
1) начни с http://metanit.com/sharp/
2) не сказал бы, что .NET фриланс прибыльней/перспективней, чем рнр (ИМХО). одновременно с этим не сказал бы, что .NET дешевле (мне в помощь статистика на ДОУ, как дела в реальном мире, могу только догадываться)
3) MVC/WebAPI все еще живут, ASP.Core, если выстрелит, то будет крутяковым перспективняком. ну а так остается Xamarin и WPF. мобильные, ясен пень, имеют бОльший вес на рынке
4) если завязываться на IIS, то, в целом, все будет достаточно слабоповоротным (хотя бы благодаря инфраструктуре). но белые люди придумали OWIN, ~Core работает через Kestrel - короче, есть достаточно легкие вещи в окружении
>>874018
#65 #874014
>>873990

>Что может быть проще?


Вот это >>873978 (плюс это работает и на 4chan и еще где угодно)

Ты блин усложнил, ему надо картинки скачать, а ты прилагаешь писать клиент двача.
api/кодогерация - в интерпрайзе что ли работаешь?
>>874025
#66 #874016
>>874004

>PHP макак вкатывается в тред


>сидеть на жеппе так же ровно и получать бабло?


Попробуй nodejs без шуток, опыт знакомста с php мартыханами - говорит что он не способны работать со статической типизацией
#67 #874018
>>874011

>WPF


мерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)

>MVC/WebAPI


Галеры на кровавый тырпрайз по поддержке кода написанного 10 лет назад индусами

>ASP.Core


Единственное перспективное направление, но фиг работу найдешь
#68 #874023
>>874018

> мерт вместе с winforms


to be honest - нет
естессно, писать впф тебе скажут только в одном шансе из 10, но и не каждый пишет на c++, что не мешает ему не быть мертвым
моя охуевшесть была охуевшей, когда выкатили работоспособное и (относительно) перспективное приложение на Silverlight

> по поддержке кода написанного 10 лет назад индусами


от этого никуда не денешься
>>874028
#69 #874025
>>874014
Да, если нужна поддержка форча и не нужна будет сложная логика, то твой вариант будет проще в использовании. Только там ещё надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmp, т.к. ему только картинки скачать надо.

Нет. Поддерживаю всякое говно (Xamarin, Ionic, бэкенд на шарпе без тестов и архитектуры) на удалёнке в мухосранске за 20к, арендую однушку за 14к. Хуже меня уже нет.
>>874026>>874028
#70 #874026
>>874025
я делал kursach1 студентоте, разве это не хуже червя-пидора?
>>874028
127 Кб, 985x768
#71 #874028
>>874023

>не каждый пишет на c++, что не мешает ему не быть мертвым


Я думаю с учетом ОС/игр/браузеров там на много порядков больше разработчиков

>>874025 >>874026
Вы нашли друг друга не печальтесь вы еще молодые и шутливые, у вас все в переди.

>надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmp
Массив SupportExtensions в строке 5
>>874034>>874550
#72 #874034
>>874028

> на много порядков больше разработчиков


сомневаюсь

> Вы нашли друг друга


я ж не говорю, что продолжаю это делать о сих пор
>>874036
#73 #874036
>>874034 На hh в Москве разница на порядок
#74 #874082
>>874009
Бумп вопросу - что нужно знать, чтобы распарсить страницу и что я в итоге получу, распарсив
>>874087>>874118
#75 #874087
>>874082
в гугле забанили? https://htmlagilitypack.codeplex.com
>>874117
#76 #874117
>>874087
А без сторонних библиотек?
>>874248
#77 #874118
>>874082
что распарсишь, то и получишь.
ебанутый вопрос какой-то не?
#78 #874123
>>873677
я, наверна, не то загуглил, но какое отношение имеет mmf к сортировке?
>>874139
#79 #874139
>>874123
Работа с большим файлом
#80 #874248
>>874117
Если нужен код для парсинга конкретного сайта, то регулярные выражения.
#81 #874259
>>874248
Этим говном еще кто-то занимается в 2016? Я сам этого не делал, но слышал, что в плане производительно это та еще жопаболь, как и в плане сложности.
#82 #874262
>>874248
Хтмл не парсят регулярками, дурной тон.
#83 #874264
>>873951
А как открыть файл, имея на него ссылку или сохранить на диск?
>>874266
#85 #874354
>>873657
Справочник по c# 6.0
#86 #874400
Шарпаны, как я понимаю в реальной работе используется только EF?
И если да, то зачем в Троэлсене столько рассказывается про подключенный и автономный уровни?
>>874403>>874404
#87 #874403
>>874400
1 абсолютно не только
2 уметь пользоваться только хай-левел фреймворком без представления об основах, которые составляют его базу - признак макакена
>>874419>>874552
#88 #874404
>>874400
Я бы не сказал. В реальности за место EF может использоваться какая-нибудь микро ORM вроде linq2db или dapper, где ты будешь сам писать запросы. А если EF и используется, то часто он служит лишь для мэппинга на DTO сущности и структурирования баз по отдельным классам, а при работе с таблицами вся работа производится через чистый sql, ибо то, что генерирует EF при обращении к БД очень сильно бьет по производительности.
#89 #874408
>>869581
Ананс, зачем тебе целый проект под DAL?
Или ты собрался менять EF на Dapper? Шо прям хайлоад назрел и EF не справляется?

Все равно на NoSQL быстро переехать не получится - тебе домены прийдется перекраивать, что на рабочем солюшене стоит дорого.
>>874455
#90 #874409
>>871743
Ну посмотрим, сколько денег. 15 пока отлично справляется, интересно, чем заманивать собрались.
#91 #874416
>>872629
"он будет давать делать только webapi/mvc проекты?" - не только - еще console app.

Для линя, что ты на шарпе хочешь писать и главное нахуа?

Core CLR - basement для web way - довольно плотно конкурирует с UAP и они перенимают друг у друга некоторые концепции и реализации, в свою очередь UAP много берет от Mono - тот же AOT вместо JIT. Но все подводится под .NET Standard.
>>874428>>874455
#92 #874419
>>874403
А чего б и не?
Нужно понимать хотя бы на 1 уровень абстракций ниже, чем тот на котором ты пилишь.

Или переехал ты на другой проект, а там NHibernate и все, ты обосрался, потому, что базовых концепций не знаешь.
#93 #874428
>>874416

>UAP много берет от Mono - тот же AOT вместо JIT


mono aot кто-то реально пользуется или это просто концепт с демками?
>>874430>>874444
#94 #874430
>>874428
А как он на iOS по твоему работает?
Тот же .net native уже давно не концепт.
>>874445
#95 #874444
>>874428
Нет не концепт, реально работает - arm архитектура -> Hololens, IOT вот это вот всё.
>>874445
#96 #874445
>>874430
Кроме iOS конечно, там не было выбора и это не интересно.
Я имел ввиду для десктопа к примеру.

>>874444

>Hololens, IOT


mono на хололенс? можно ссылочки на рабочие проекты (или это только теория)?
>>874463
#97 #874455
>>874416

> нахуа


потому, что можно

>>874408
ну идея бизнес-логики в контроллерах меня слабо привлекает. и из ДАЛа у меня не только рсубд: есть граф, есть файл-сторедж. чтобы по фен-шую без слоя не обойдешься
ну и да, с ЕФ я, в перспективе хочу слезть. а лучше вообще в постгрес какой-нибудь сраный
ну и юнит-тестирование, окакжэ
проект для себя, хочется идеала, хотя уже не получается
>>874465
#98 #874463
>>874445
На Hololens не моно, а UAP. UAP взял у Mono AOT.
Но там честно говоря звиздец. Нормальной рефлексии нету, а соответственно Automapper, IoC работают с ограничениями. Ну и вёрсточка UI там неебовая.
#99 #874465
>>874455
Я не писал про бизнес-логику в контроллере. Бизнес логика в бизнес слое. Но смысла с репозитория при использования EF не вижу. EF даёт нормальную абстракцию IQueryable.
Честно говоря, я не вижу смысла с юнит-тестов которые проверяют в бизнес-слое создание объектов без сохранения в базе - я ж так понимаю, ты мокаешь свой репозиторий.
В рантайме, если запрос в EF кривой все и развалится, при работающих юнит-тестах.

НУ плюс адекватно построение связей не протестишь. По-моему. если замешано использование БД, тут уж без интеграционных тестов не обойтись.
>>874481
#100 #874481
>>874465
ну, я не пишу repository<t> поверх dbset<t> и unitofwork поверх dbcpntext, но ведь какой-то слой command/query должен же быть дабы переиспользовать функционал?
122 Кб, 1000x707
#101 #874550
>>874028

>удаленка на дотнете


Лол что, а разве так бывает?
>>875802
#102 #874552
>>874403
Я не хочу быть макакеном, в Троэлсене читаю всё подряд, правда
#103 #874577
Аноны, а киньте ссылку на гитхаб с годными веб-проектами в плане архитектуры - на которую можно равняться так сказать (бизнес логика в отдельном слое, юнит тесты, все вот это). Core / Mvc /Web api не так важно.
#104 #874586
>>874004
Почему программистов всегда изображают в виде няшненьких в плохом смысле слова бородатых толстячков-патлачей в очках?
>>874591
#105 #874591
>>874586
Я дрыщатик-патлач.
#106 #874699
где есть примеры создания собственных коллекций?
>>874707
#107 #874707
>>874699
для чего?
>>874717
#108 #874717
>>874707
да в шараге задание дали, реализовать коллекцию. Короч, как встроенные коллекции, только методы и свойства своими руками. Я так понял...
>>874720>>874752
#109 #874720
>>874717
берешь, короче, рефлектор, смотришь в System.Collections имплементацию любой понравившейся коллекции. упрощаешь по вкусу и гришь преподу мол "смотри старый хрыч с указателями заебашил и с IL".
#110 #874740
Анон, как дебажить обфусцированную программу? Хочу, чтобы как в OllyDbg запустил её и пошагово проходишь. Есть что-нибудь подобное?
#111 #874752
>>874717
по сути, выбора немного: либо с использованием массива для хранения элементов (при этом твоей задачей будет контролировать длину массива и переинициализировать его в случае переполнения); либо через связный список
>>874783>>874945
#112 #874783
>>874752
ну значит я в правильном направлении двигаюсь

спасиб
#113 #874945
>>874752
А дерево ебануть слабо? Черное, красное, АВЛ, с проходами прямыми и обратными, вглубь и в ширину, бинарное и произвольное. Фантазия безгранична здесь.
>>875032
#114 #874963
>>869105 (OP)
Вы ебанутые? В чем прикол учить net в 2016, когда есть java, где все тоже самое только еще и linux runnable? вы сами себя ограничиваете
>>875031>>875048
#115 #875031
>>874963
а как же .NET Core?
>>875054
#116 #875032
>>874945
ну дык реализацию дерева придется все-равно делать на основе однонаправленного связного списка. только связей будет не одна, а несколько
можно массивом, наверное, но я хз, насколько это эффективно
#117 #875048
>>874963
Вообще то наоборот, как язык C# гораздо мощнее Java и уже без костылей запускается на Linux/macOS.

Я допустим пишу на нем бэкенды (CoreCLR + EF Core) для своих мобильных проектов и деплою на дешевый ubuntu vps.
>>875054
#118 #875054
>>875048
>>875031
зачем вы дауна кормите?
>>875056
#119 #875056
>>875054
может быть он находится в неведении
3 Кб, 188x99
#120 #875088
Из бд извлекаю таблицу в DataTable и привязываю к DataGrid'у. Возникло несколько вопросов:
1. В бд имеется поле дата типа date. При отображении в гриде дата принимает формат со временем (пик). Как пофиксить?
2. Как задать заголовкам столбцов дружественные имена. Через маппинг не получается.
http://pastebin.com/8YvyWSne
>>876542>>877819
9 Кб, 532x151
#121 #875238
Есть тут аноны, которые пишут/писали под андройд на С# с помощью Xamarin?
Прошу у вас помощи. Я установил Android SDK ещё когда устанавливал Android Studio, потом решил писать на C# и скачал Xamarin. Создаю проект, а когда пробую компилировать, вылазит пикрилейтед. Как исправить? Что я делаю не так?
>>875247
23 Кб, 770x449
#122 #875247
>>875238
Проверь, может быть в настройках студии путь к Android SDK не указан.
>>875286
#123 #875286
>>875247
обнови jdk
#124 #875293
>>874018

>мерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)


Winforms еще как применяется для по которое было написано больше 6 лет назад и требует поддержки и направлено на постсовок, в котором много где еще 2000 винда стоит и хр в офисах
>>875330
#125 #875294
>>874248
НА SO сказали что парсят регулярками только дауны, там самый топовый вопрос с этим связан.
#126 #875330
>>875293

>в котором много где еще 2000 винда стоит и хр в офисах.



Да неее, щас же повсеместно (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?
>>875687
#127 #875353
Поясните ньюфагу за отличие экземпляра класса, от экземпляра структуры.
>>875371
#128 #875371
>>875353
один располагается в куче (первый), другой - в стеке
>>875460
#129 #875460
>>875371
насчёт стека - не всегда
http://stackoverflow.com/a/4853251
17 Кб, 731x469
#130 #875622
Я конечно не получу тут ответ, но на всякий случай спрошу.

Код примерно такой (пикрилейтед): в цикле создаем массивы по 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 что сейчас), то зависания нет, есть только обычный расход памяти приложением, что можно отследить по диспетчеру задач.
17 Кб, 731x469
#130 #875622
Я конечно не получу тут ответ, но на всякий случай спрошу.

Код примерно такой (пикрилейтед): в цикле создаем массивы по 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 что сейчас), то зависания нет, есть только обычный расход памяти приложением, что можно отследить по диспетчеру задач.
#131 #875623
>>875622
Бля, какой мудак убрал неразрывные пробелы? Трифорсить нельзя что ли?
#132 #875624
#133 #875626
Пиздец, даже треугольник ставить нельзя. Ну всё, пизда бордам.
Впрочем похуй. Отвечайте на мой ответ. >>875622
#134 #875687
>>875330

> (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?


Не, можно и на 2000 - хр, если десктоп приложение со вторым фреймворком.
153 Кб, 765x452
Visual Studio для macOS #135 #875707
Аллилуйя братья, они наконец то возьмутся за Xamarin Studio и сделают из этого что-то приличное.

http://www.cnews.ru/news/top/2016-11-14_microsoft_vypuskaet_visual_studio_dlya_kompyuterov

На VSCode можно только мелко-сайтики пилить, а Rider не может запускать Xamarin проекты.
>>876774
#136 #875717
>>875622
У меня MemoryFailPoint выбрасывает исключение на ~200 итерации цикла, соотвественно никаких зависаний. win7 16gb
>>875753
#137 #875753
>>875717
Хм, интересно, спасибо. Хотя это тоже странно, 200 итераций это около 1ГБ данных и это не должно быть проблемой. Скомпилировано под x64?
(Хотя у меня стоит any cpu, но приложение запускается как x64).
>>875786
87 Кб, 400x216
#138 #875785
>>875622

>Если кто будет тестить, то осторожно


>пользовательские классы, код даже не скомпилируется

>>875794
#139 #875786
>>875753
Да, стояла галочка "prefer 32-bit", что и происходило. Исключение было OutOfMemory т.е. это похоже был не MemoryFailPoint.
Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.
>>875794
#140 #875794
>>875786

>Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.


Найс. Это уже другое поведение, отличающееся от моей винды. Может дело в том что она у меня пиратская?

>>875785
Все классы кроме функции Trace я выложил. Суть Trace и так ясна, это обычный текстовый вывод.
А, там я оставил MList. Вроде убирал M, странно, ну ладно. Извиняюсь. Можно заменить на простой List, там разницы не будет. MList это по существу тот же List, только с возможностью доступа к массиву напрямую, но она в коде не используется.
>>875804
#141 #875802
>>874550
Бывает. А что не так?
#142 #875804
>>875794

>пиратская


Тут комментарий про эту страну и про программное обеспечение.
Ты говоришь, что у тебя диск начинает, это потому что у тебя своп включен, поэтому и винда виснет
>>875807
#143 #875807
>>875804
ОК, значит своп нужно выключить и проблем не будет? Завтра попробую.
>>875811
#144 #875811
>>875807
Ну я побоялся включать во избежание того что у тебя в первом посте написано.
>>875830
#145 #875830
>>875811
Выключил своп и с виндой перестали происходить зависания и наконец-то стали появляться исключения. Хотя в первый раз экран погас и стал черным, после нажатия Ctrl+Alt+Del стал синим, выбрал диспетчер задач, и обнаружил что куда-то пропала Студия из панели задач. Ну и хуй с ней. В остальные разы почему-то такого не было.
#146 #875831
Антон!

В парсер надо добавить немного гибкости кастомными клиентскими скриптами так чтобы им можно было передавать объекты из приложения для обработки например.
Когда-то давно был же WHS - полез искать, а там ебать колотить сколько скриптоговна напридумали и у все это слегка различается по методам использования т.к. видимо под разные задачи заточено. Кроме WHS есть некий компайлинг на лету и подключение этой сборки (как?), есть всякие сторонние JInt-ы и подобные пэкиджи. Что из этого лучше всего использовать чтоб в парсере выполнять скрипты аля vba-код в мс-оффисе или тупо из внешних файлов/базы?
Подозреваю что вот эта компиляция на лету для дотнета ваще нативная и наиболее быстрая, но не понимаю что именно у гугла спрашивать, чтоб подробно раскуриться
7 Кб, 584x211
894 Кб, 2434x1632
#147 #875963
Продолжаю экспериментировать с переполнением памяти.
В том коде что я приводил >>875622 в случае наличия свопа торможение винды начинается при заполнении массива, а не при выделении. При отключенном свопе падение происходит при выделении массива, с исключением.

В реальном приложении заполнение памяти происходит в несколько потоков. При отключенном свопе во всех потоках сразу происходит исключение OutOfMemoryException при попытке выделения памяти для массива как правило. Код потока взят в try-catch, и этот catch ловит OutOfMemoryException, при этом делая успешную запись в лог этого факта. После чего управление чаще всего не достигает точки в которой происходит ожидание окончания выполнения потоков: на первом пикрилейтеде управление не достигает строки "Log.Trace("Threads finished.");" поскольку в логе эта строка так и не появляется.

Поведение при исчерпании памяти бывает разное:

- Иногда управление очевидно таки передается в точку ожидания завершения потоков, но это бывает редко. Вычислено по паре случаев нормальной обработке всех исключений программой.
- Был случай исключения null reference exception.
- Иногда приложение исчезает.
- Иногда приложение падает с крэшем.
- Был случай "неизвестного исключения".
- В одном из случаев с винды слетела тема Aero, перед этим приложение исчезло.
- Был случай гашения экрана и исчезновения Студии (упоминался выше).
- Постоянно падает дебагер Студии.
- Невозможность запустить диспетчер задач.
- Был случай когда выпал BSOD (пикрилейтед).

На данный момент теория следующая: При исчерпании памяти когда происходит попытка выделить массив происходит исключение - такое какое и должно быть. После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов. То что код приложения не выдерживает таких издевательств и то что аналогичное происходит с другими приложениями это еще можно объяснить, но почему к этому оказывается неготова сама винда - вот это открытие.
7 Кб, 584x211
894 Кб, 2434x1632
#147 #875963
Продолжаю экспериментировать с переполнением памяти.
В том коде что я приводил >>875622 в случае наличия свопа торможение винды начинается при заполнении массива, а не при выделении. При отключенном свопе падение происходит при выделении массива, с исключением.

В реальном приложении заполнение памяти происходит в несколько потоков. При отключенном свопе во всех потоках сразу происходит исключение OutOfMemoryException при попытке выделения памяти для массива как правило. Код потока взят в try-catch, и этот catch ловит OutOfMemoryException, при этом делая успешную запись в лог этого факта. После чего управление чаще всего не достигает точки в которой происходит ожидание окончания выполнения потоков: на первом пикрилейтеде управление не достигает строки "Log.Trace("Threads finished.");" поскольку в логе эта строка так и не появляется.

Поведение при исчерпании памяти бывает разное:

- Иногда управление очевидно таки передается в точку ожидания завершения потоков, но это бывает редко. Вычислено по паре случаев нормальной обработке всех исключений программой.
- Был случай исключения null reference exception.
- Иногда приложение исчезает.
- Иногда приложение падает с крэшем.
- Был случай "неизвестного исключения".
- В одном из случаев с винды слетела тема Aero, перед этим приложение исчезло.
- Был случай гашения экрана и исчезновения Студии (упоминался выше).
- Постоянно падает дебагер Студии.
- Невозможность запустить диспетчер задач.
- Был случай когда выпал BSOD (пикрилейтед).

На данный момент теория следующая: При исчерпании памяти когда происходит попытка выделить массив происходит исключение - такое какое и должно быть. После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов. То что код приложения не выдерживает таких издевательств и то что аналогичное происходит с другими приложениями это еще можно объяснить, но почему к этому оказывается неготова сама винда - вот это открытие.
>>875983>>876000
#148 #875983
>>875963

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


что ща хуйню я читаю? OOMException выпадает же до того момента, как куча начинает выделять память под новые объекты
пики не смотрел ибо мобильный клиент их не подгрузил пидар
>>875987
#149 #875987
>>875983
ОК, найди другое объяснение почему начинает глючить другой код, в том числе из других приложений и из самой винды. По-моему это от того что он не может обрабатывать исключения связанные с нехваткой памяти.

>>875983

>пики не смотрел ибо мобильный клиент их не подгрузил пидар


Там всё-равно ничего интересного.
>>875998
#150 #875998
>>875987

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


Очевидно, что в других приложениях возникает необработанная ошибка выделения памяти. Возникает в рэндомном месте и в рэндомный момент времени. Поэтому разнообразные глюки вываливаются.
#151 #876000
>>875963

Может у тебя и вправду винда кривая. Можешь попробовать создавать MFP не в потоках, а до их создания, еще в синхронном коде. Ты бы виртуалку себе сделал с нормальной msdn виндой, и там бы веселился в controlled то environment.
#152 #876023
Ох лолед. Запустил я опять тот код >>875622
Он отработал и выдал исключение. Приложение осталось, память вся выжрана.
Беру Студию (была открыта). И смотрю как она сможет работать. Начинаю просто ходить по главному меню даже не кликая по его пунктам, и тут хуяк - Студия падает нахуй с крешем. Если бы я закрыл своё выжравшее память приложение, то всё работало бы нормально. Вывод: Студия не обрабатывает OutOfMemoryException.
Отсюда еще один вывод: обрабатывать OutOfMemoryException не нужно, потому что код винды и других приложений, в том числе приаттаченные DLL и судя по всему даже код самой CLR, не обрабатывают это исключение и падают. Какой бы идеальный код с этой точки зрения вы не писали, он всё равно завалится, либо от того что упадет используемая чужая Dll, либо от крэша стороннего приложения, либо от крэша винды.
>>876046
#153 #876046
>>876023

Так тип включи своп обратно и это уже проблемы винды)))
#154 #876081
Выручайте, дали мне оборудование секретное дохуя (китайское нонейм говно), по факту принтер с встроеным серваком, который отдаёт мне на конкретные реквесты, конкретную инфу. Так вот, если приходит HttpWebResponse больше 5Мб, то ReadToEnd() возвращает кракозябры в странной кодировке, ни одна из распространённых кодировок не подходит, да и производитель клянётся, что utf-8, никаких gzip и томуподобного.
>>876085
11 Кб, 490x162
#155 #876085
5 Кб, 713x87
#156 #876181
Подскажите нубасу Как обработать NullReferenceException ? Хочу чтобы метод возвращал true если принимает две null ссылки. T - реализует Comparable<>, Equatable<> Хз как ее ограничить на null типы
#157 #876193
>>876181
where InsideT : class
>>876204
#158 #876204
>>876193
Это не совсем то что нужно Я собираюсь использовать типы значений вроде Nullable<Int32>
>>876216
#159 #876216
>>876204
ну можно сделать MethodName<TContainer, TValue>(...) where TContainer : Nullable<TValue> where TValue : struct, но это будет дичь дикая не уверен, скомпилится ли вообще. как вариант ограничиться только констраинтом, что Т - это структура и пытаться выдоить из нее нужный тебе нуллабл
#160 #876221
>>876181
а вообще тебе == надо использовать, а не Equals
>>876227
#161 #876227
>>876221
Поля Value типа T Тобиш == приводит к вызову этой же перегрузки на == И из-за этого я и не могу сравнить ее с null
>>876228
#162 #876228
>>876227

ReferenceEquals
13 Кб, 904x176
#164 #876261
>>876244
Не канает :(
#165 #876274
>>876181

>Хочу чтобы метод возвращал true если принимает две null ссылки


if (op1 == null && op2 == null) return true; - не работает что ли?
>>876278
#166 #876278
>>876274
== Приводит к вызову этого же метода
>>876283
#167 #876283
>>876278
Окай, тогда
if (RefecenceEquals(op1, null) && RefecenceEquals(op2, null)) return true;
>>876284>>876288
#168 #876284
>>876283
Reference*
>>876288
#169 #876288
>>876283
>>876284
Ух ты! А вот это сработало Спасибо!
#170 #876542
>>875088
Бамп
>>876558
#171 #876558
>>876542

Так нагуглил бы уж давно.
>>877819
#172 #876774
>>875707
Ну прям, конфу смотришь? Твой манямир еще не ахуел?
>>876857
#173 #876777
Лучик жизни этому мертвому треду.
Connect 2016
https://events.techdays.ru/Connect/2016-11/?wt.mc_id=AID522253_EML_4670175
>>876826
#174 #876782
Даже с линукса один из директоров пришел и сказал что корпорация добра заебись. В ява треде наверное пожар сейчас
#175 #876789
Студия 17
79 Кб, 1072x550
79 Кб, 1060x552
#176 #876795
реал тайм редакторы, полное покрытие часов телеков от эпл андройдов и прочую хуйню. Холивар окончен. ГГВП.
73 Кб, 1061x561
59 Кб, 1064x559
#177 #876799
Студия для мака. КЕК. Кого-то только что жеско выебали.
>>876800
63 Кб, 1063x533
#178 #876800
>>876799
туда же
>>876801
57 Кб, 1063x559
#179 #876801
>>876800
Что бы не пиздели список приложений ниже еще прокручивается
>>876803
60 Кб, 1064x562
#180 #876803
>>876801
работа с кором прямо с гейоси (на пике через хром)
41 Кб, 1059x557
47 Кб, 1059x596
49 Кб, 1062x567
59 Кб, 1058x554
#181 #876815
Джабу ебучую унижают на собственом поле. Можем наблюдать как работу приложения находящего на хабе переносится в мобайл центр где оно тестится на тысячах современных устройст с кучей сладких графиков и отчетностей рассылается по тестерам и всё остальное. За ебаные 5 минут времени.
63 Кб, 1064x572
69 Кб, 1063x596
45 Кб, 1061x560
50 Кб, 1065x562
#184 #876818
>>876815
Ява встала скален и пошла сразу НАХУЙ
94 Кб, 1068x564
107 Кб, 1068x569
#186 #876825
Релизы на сегодняшний день и выебоны что Azure сервера ебут гугл и амазон вместе взятые
#187 #876826
>>876777
Спасибо, няша.
Студия 2017 доставила.
74 Кб, 1062x595
64 Кб, 1063x555
68 Кб, 1061x527
55 Кб, 1057x532
#188 #876827
>>876825
какие клёвые датацентры
81 Кб, 1066x531
#189 #876828
>>876825
и это только один, а их дохуя
#190 #876834
>>876825
Пусть лучше уже новую студию выпустят.
>>876835
54 Кб, 780x580
#191 #876835
>>876834
А какая последняя сейчас? У меня 2015 Enterprise.
85 Кб, 1059x565
#192 #876836
Добавление превращение приложение в докер в 2 клика
#193 #876840
новинка в Azure (Azure function)
SQL 2016 (Самая защищенная, самая сладкая)
>>876842
53 Кб, 1064x559
#194 #876842
>>876840
цифры не могут врать
>>876844
67 Кб, 1064x559
61 Кб, 1068x562
#195 #876844
>>876842
Как раньше было хуево с кучей версий и ограничей и как стало
>>876847
97 Кб, 1058x557
#196 #876847
>>876844
ОЙ А ЧТО ЭТО У НАС ТУТ?!
>>876852
#197 #876848
Ебать, нигеркодерша, впервые вижу.
34 Кб, 1058x559
36 Кб, 1064x558
#198 #876852
>>876847
Кластеризация таблиц в новой SQL. Это помимо остальных клёвых новых ништяков алгоритмов компресия\сжания и прочие
47 Кб, 1067x564
#199 #876853
Внезапно
55 Кб, 1056x564
59 Кб, 1058x552
#200 #876854
Кучу всяких апи запилили по распознованию голоса, лиса, текста, размера члена которые в реал тайме обрабатываются
#201 #876857
>>876774

>Ну прям, конфу смотришь? Твой манямир еще не ахуел?


Включил минут 10 назад и все пропустил. Сейчас качаю VS for Mac.

В чем суть, можешь вкратце пояснить?
>>876858
#202 #876858
>>876857
Блин качает по 100kb/sec - видимо все ринулись качать новую студия и положили их azure.
>>876860
#203 #876860
>>876858
Это просто ребрендинг ксамарина, расслабься.
Анонсировали ещё пару дней назад — сайт вообще лежал.
>>876877
63 Кб, 1060x560
70 Кб, 1057x561
66 Кб, 1063x558
71 Кб, 1064x561
#204 #876861
>>876854
Тестовая работа киоска без всяких ID карточек кодов и прочего
67 Кб, 1062x558
72 Кб, 1063x563
68 Кб, 1063x561
#206 #876864
>>876854
Это так мило, скоро омежки будут с киосками дружить <3
#207 #876865
>>876854

>Female


>38


По мне так:

>Male


>55

>>876867
57 Кб, 1051x546
82 Кб, 1064x561
#208 #876866
>>876854
Запилить подобную няшность можно в Azure bot service. Там же гайды, шаблоны, тесты и всё остальное
>>876868
#209 #876867
>>876865
Это же та самая шутка про волшебные говорящие зepкала: есть те, что очень льстят, а есть разбитые.
#210 #876868
>>876866
Что бы не было потом вопросов ВИ майкрософта зовут Luis (Луис)
>>876870
77 Кб, 1059x555
70 Кб, 1054x527
#211 #876870
>>876868
Именно перед ним вам придется КАЯТЬСЯ
>>876872>>876875
79 Кб, 1064x534
#213 #876875
>>876870
И именно он будет решать ваши проблемы взаимодействуя с другими апи
57 Кб, 1061x559
83 Кб, 1058x557
92 Кб, 1065x599
#214 #876876
Развлечение не выходя из дома для белого человека.
#215 #876877
>>876860
Мне (как Xamarin разработчику) в главное что он теперь официально "VS" те:
- их будут обновлять параллельно
- начнут шарить код
- в каком-то виде там увеличится команда разработчиков
В итоге он будет развиваться быстрее и там будет больше фич.

P.S. Вот бы еще выкинули нахрен mono и заменили все на core clr.
>>876879>>876895
#216 #876879
>>876877
Работой по мультплаформированию продуктов VS занимается 19к(!) разработчиков
69 Кб, 1064x558
61 Кб, 1069x602
57 Кб, 1051x550
58 Кб, 1062x555
#217 #876884
Еще больше сахара в новой студии.
Указание меток прохождения тестов, новые подсказки, реал тайм проверки прохождения тестов. Сладка.
76 Кб, 1061x555
#218 #876885
>>876884
подсказки по рефакторингу по лучшим заветам предков для соблюдения чистоты командного кода
>>877605
70 Кб, 1056x560
67 Кб, 1059x559
#219 #876886
>>876884
Новые ИКОНКИ, группировка данных для интелсенса для работы со сложными апи
>>877605>>879380
70 Кб, 1063x560
#220 #876887
>>876884
сокращения из коробки
58 Кб, 1071x601
60 Кб, 1065x595
#221 #876888
>>876884
Сахарок, сахарочек.
Подсказки по структуре
106 Кб, 403x402
#222 #876889
>>876884
Шо там по C# 7.0 (primary constructor завезли)?
61 Кб, 1057x542
61 Кб, 1057x555
63 Кб, 1058x558
59 Кб, 1056x555
#223 #876891
>>876884
Просто расскажи что тебе нужно и тебе посыплют всё сахаром
>>877605
#224 #876892
>>870562
Альбахари
62 Кб, 1062x595
59 Кб, 1058x559
65 Кб, 1061x559
#225 #876894
>>876884
Больше сахара
>>877605
#226 #876895
>>876877
А вот мне как маководу главное чтобы они наконец перестали лезть в залупу, запилили addinmaker который сломали вместе со всеми плагинами в 6 версиии — иначе единственная нормальная IDE на OS X просто сокращается до шарпа.
>>876897
#227 #876897
>>876895

> запилили addinmaker


Никогда не слышал, что это такое?
>>876900
#228 #876900
>>876897
Хуитка для разработки плагинов.
Как её сломали — расширений просто нет.
#229 #876901
Картинок по сути нет но как я понял теперь тесты написаные один раз в студии могут прогнать любой код будь он написан на любом из поддерживаемых языков.
#230 #876905
Продолжение с болтовнёй после мэйн эвента смотреть с 4 часа

https://connectevent.microsoft.com
70 Кб, 1063x566
#231 #876910
Возвращаясь к VS для гейоси связанные приложения. Всё что нужно для хуяривания под всё из коробки
>>876919
#232 #876914
Бля, шарпаны, я заебался
218 Кб, 1292x620
#233 #876919
>>876910
Скоро узнаешь, чем она лучше Xamarin
>>876931>>877119
#234 #876931
>>876919
Я скоро спать пойду, я тут конечно выдержек по постил на первые 2 с половой часа но блядь там уже 7 час идет а у меня ночь на дворе
#235 #877119
>>876919
Так чем же? инб4: ничем
#236 #877254
>>877119
Сейчас, обновлю обычную Xamarin и сравню (может туда тоже завезли что в VS)
#237 #877280
Посоны, где в изображении располагается геотег? интересно его вытащить программно
78 Кб, 397x610
#238 #877292
>>877119
Интересный факт:

Версия у Visual Studio for Mac = 7.0, а у последней стабильной Xamrin = 6.x.
81 Кб, 879x448
288 Кб, 1440x896
270 Кб, 1440x900
#239 #877296
>>877119
Появился непонятный шаблон проекта состоящий из:
1) AspNet Core WebApi сайт
2) Shared Project с MVVM частью мобильного приложения
3) Xamarin/Android - версии приложения

Из интересного: в комлекте с (2) идут сорцы реализации:
ServiceLocator - который сейчас считается антипаттерном и
MessagingCenter - синглтон для обмена сообщения между разными частями кода
IMessageDialog - интерфес с методами showMessage/Toast/Confirmation (тоже всегда его сам реализовывал)
>>882331
26 Кб, 481x207
#240 #877311
Как же бесят такая хуйня, ну почему мы не можем это делать проще :RAAAAAGE:

В каком-нибудь Kotlin это можно вынести в библиотеку и мутить "observable property" одно строкой.
>>877555
69 Кб, 511x471
#241 #877521
Боже мой, как достало это каждый раз писать. Ананасы, как вы справляетесь с такой фигней?

В каждом гребанном классе есть как минимум одна зависимость, которую надо сохранить в поле.

Пропозал на "Primary Contructor" https://github.com/dotnet/roslyn/issues/9517 зарубили сначало для в C# 6.0, теперь и в 7.0
Говорят "может кода нибудь будем, пока непонятен синтаксис", ну какого хера...
>>877525>>877527
#242 #877525
>>877521
Сделай их публичными свойствами и инициализируй как обычные поля в конструкторе:
new MySevice { Dependency1 = dependency1, Dependency2 = dependency2 }.
Но это будет опционально. А вообще я не вижу тут серьезных проблем. Жалко один раз конструктор написать что ли?
>>877534
#243 #877527
>>877521

>Ананасы, как вы справляетесь с такой фигней?


Копипастой и column edit-ом.

>ну какого хера


Ну это не скала и не котлин, тут думают о нововкатывающихся челиках.
>>877534
27 Кб, 472x207
#244 #877534
>>877525

>Сделай их публичными свойствам


Какие еще проперти, это тебе нет Point { X = 1, Y = 2 }
Это сервис с бизнес логикой и зависимостями на другие сервисы.
В теории они должны проставляться через DI и по канону должны быть иммутабельны.

>>877525 >>877527

>Жалко один раз конструктор написать что ли?


>Ну это не скала и не котлин


Вот именно, когда половину времени пишешь на Kotlin (где это есть) - начинает не хило бомбить
что они вот уже два релиза языка копротивляютися, но при это везде орут про эти ненужные тюплы.
57 Кб, 532x377
Sage #245 #877555
>>877311
Есть Fody, а INPC посасывает.
>>877587
#246 #877561
Вечер в тредик, кодинг в радость, господа. Пишу тут небольшой сервис и появилось несколько вопросов к бывалым .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. Сегодня в течение дня искал эту фигню и не нашёл ничего особо годно, поэтому буду весьма благодарен, если кто скажет, что здесь лучше использовать.
>>877574>>877598
#247 #877574
>>877561
1) System.Uri.IsWellFormedUriString("http://google.com/", UriKind.Absolute)
>>877763
#248 #877587
>>877555
Что-то не могу в нугете его найти.

Он совместим с PCL Xamarin или netstandard 1.5 ?
>>877728
#249 #877598
>>877561

> получения сокращённой строки из длинной


ты сжатие имеешь ввиду?
>>877763
#250 #877605
>>876891
>>876894
>>876886
>>876885
Хоть бы написал что это.
#251 #877629
Многие фичи из этого ивента оказывается есть в 2015 Студии, в частности подсветка заголовка блока при наведении на его закрывающую скобку и строки вида $"{fuck.this.shit}". А я и не знал, уже год как пользуюсь этой студией. Что значит идиот.
#252 #877728
>>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
#253 #877763
>>877598
Да, но без потерь и биективное.
>>877574
Благодарю, но это валидация URI, куда входят, как URL, так и URN. Мне нужна валидация именно URL по его стандарту/microsoft реализации. URN должны отсеиваться.
#254 #877786
добрый анон, поясни за мой говнокод. что я делаю не так? как улучшить код?
http://pastebin.com/ffp1wvfg
>>877817>>877828
#255 #877817
>>877786
if if if if while if if using if if
попробуй сначала инвертировать условия, дабы добиться намного меньшего уровня вложений. ну а после хотя бы попытаться разделить функционал по методам

я думал, это и есть самое страшное, но тут оказался Invoke и Thread. хуй знает, что тобой двигало, когда ты писал это вот, но я бы советовал никогда от слова по возможности не прибегать к этому вот
>>877831
#256 #877819
>>875088
Бамп.
Как я понял, маппинг не работает без DataSet.

Что делать с датой формата mm/d/yyyy hh:mm:ss AM? Как мне убрать время?

>>876558
Пытался, но увы
>>877822
#258 #877828
>>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 - он сам эту хуйню тебе должен подставить.
>>877837
#259 #877831
>>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.
обращаться с помощью делегатов? тогда на сколько это правильно?
>>877835
#260 #877835
>>877831

>Как переписать обращение из потока к winforms контролам?


Постарайся не использовать такие низкоуровневые штуки, как потоки. Для таких задач придумали async/await.
>>877838>>879801
#261 #877837
>>877828
- SqlSelect метод void, т.е. он не возвращает ничего. назвал его потому, как в него попадают select команды
- sqlcommand является object т.к. этот метод вызывается из потока
- с названиями переменных понял, ок. спасибо
- string.format заменю. спасибо
- на сколько знаю, using вызывает метод dispose
>>877839
#262 #877838
>>877835
а смысл от этого async/await? все равно создается отдельный поток, который самостоятельно вызывает invoke для контролов или я нубло ебаное которое не может в dev?
>>877847
#263 #877839
>>877837

>на сколько знаю, using вызывает метод dispose


В свою очередь, объект, реализующий интерфейс IDisposable, должен освобождать все неуправляемые объекты в методе Dispose. В данном случае, метод Dispose для NpgsqlConnection должен выглядеть примерно так:
public void Dispose()
{
this.Close();
}
>>877840>>877841
#264 #877840
>>877839
ок. спасибо!
#265 #877841
>>877839

>должен освобождать все неуправляемые объекты


самофикс: все неуправляемые ресурсы, конечно же
#266 #877847
>>877838
async/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/");
}
>>877848
#267 #877848
>>877847
хорошо, убедил.
данная конструкцию будет работать со всеми контролами? или с некоторыми надо танец с бубном подключать?
>>877853
#268 #877853
>>877848
Данная конструкция не имеет вообще никакого отношения к контролам. Ты точно так, же можешь возвращать результат в какую-то переменную.

Так что:

>данная конструкция будет работать со всеми контролами


this
#269 #877930
В общем. Осилилил я основную часть книги RB Whitaker - The C# Player's Guide - 2015 (в оригинале).
С# Ставил целью изучить, для своего хобби. Делаю модификацию для dota 2 с использованием инструмента https://github.com/SteamDatabase/ValveResourceFormat.

Проблема в том что в книге были небольшие задачи и примеры по изучаемым темам, но там не было нихера самого главного - как написать программу. Вот есть у меня задача - создать инструмент с помощью которого я смогу делать множество операций, которые я ранее делал ручками, изменения в клиенте игры касаемо музыки и звуков. А с чего начать, как это все писать - в душе не ебу. Может есть какая то литература, которая сосредоточена не на объяснении основ языка как в случае с книгой вайтекера, а литература которая демонстрирует и учит написанию практических программ?
>>878013>>878028
#270 #877942
Изучаю тут F#, дошел до мемоизации. Вот пример кода -
http://www.fssnip.net/8P
А теперь объясните те, кто шарит - каждый рекурсивный вызов новой мемоизированной функции (fibs) ведь должен создаваться новый, внутренний словарь, так какого хуя все функции вроде как работают с одним и тем же словарем и все в конце работает?!
Нихрена не понимаю.
>>878037
#271 #877974
>>877822
Спасибо няша.
#272 #878013
>>877930

>Ну тащемта в этом и смысл. Ты такой сидишь и думаешь как это реализовать получая за это бабло.

>>878036
#273 #878028
>>877930

>в книге были небольшие задачи и примеры по изучаемым темам


Ты, блядь, язык изучаешь или как программы писать? Определись уже.

>А с чего начать, как это все писать - в душе не ебу.


Начать писать код, а не ебать другим мозги
>>878036
#274 #878036
>>878028
>>878013
Ясен хуй я не учил язык ради изучения языка. Просто вот прочел я про кучу всякой поебени, структуры, классы, гетеры, сетеры, полиформизмы и кучу прочей еботни, которую понял, но никогда не использовал. В итоге просто не понимаешь как огромное количество всех этих вещей объеденить в то что будет программой. Хер знает с какого конца схватится.

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

В моем случаем мне вообще надо будет работать с файломи. Парсингом. Конвертированием. Желательно исходников софта на эту тему. Хотя выебываться особо не буду, любый интересны, что помогут немного разобраться.
>>878046>>878065
#275 #878037
>>877942
Потому что memoize возвращает функцию, а не значение. Это сочетание замыкания и ленивого вычисления.
>>878351
#276 #878038
>>870173
Поясните за концепт DI.
Это тип для макак, которые не могут нормально зависимости тащить?
>>878039
#277 #878039
>>878038
А как ты классы тестируешь с дофига зависимостями?
Подожди...
Дай угадаю...
никак
#278 #878046
>>878036
Мне кажется ты какой-то умственно отсталый или гуманитарий, что, в принципе, одно и тоже. У тебя в голове бардак.
Чтобы что-то научиться делать, надо взять и начать вот это что-то делать.

>В итоге просто не понимаешь как огромное количество всех этих вещей объеденить


Да ладно? Если взять нехуя раз нехуя и объединить, то получится нехуя.
>>878063
#279 #878063
>>878046
Хотел было возразить, и выебнуться тем в чем я спец, но потом подумал - чего спорить с чсв уебаном.

Я по человечески попросил - мне что бы понять это ваше ооп, какие нибудь исходники не сильно сложной программы, но написанной грамотно и по науке. Что бы посмотреть как вообще все это организовано, структурировано и т.д. Я могу прямо сейчас сесть и начать писать, но это будет лютейший говнокод и ужас. Возможно и к такому варианту прибегну, надо же с чего то начинать. Но пока подумалось, что может кто из опытных, подкинет образец и пример.
>>878067>>878099
364 Кб, 535x384
#280 #878065
>>878036

>Ясен хуй я не учил язык ради изучения языка.

>>878066
#281 #878066
>>878065
Ну есть пердолики, которые пердолятся ради пердолинга(нормальные же люди пердолятся ради решения проблем и достижения целей). Не слышал о таких?
>>878069
#282 #878067
>>878063
Чувак, реально. Бери и делай. Это этап, который не миновать. Ты в любом случае начнешь делать говно, сколько бы ты книг не прочитал. Чем раньше начнешь делать говно, тем раньше поймешь как его не делать. Попутно можешь читать Clean Code. Но только попутно, загодя смысла нет, это просто потерянное время.
>>878071>>878114
#283 #878069
>>878066
Я думаю если человеку хочется попердолить веб-сайт, то ему стоит пройти в РНР тред и не тревожить дотнет-господ.
#284 #878071
>>878067
Спасибо за дельный совет.
#285 #878099
>>878063
Возьми исходники какой-нибудь библиотеки. Но я не думаю что будет легко понять ООП по ней.
#286 #878114
>>878067

>Clean Code


The Clean Coder: A Code of Conduct for Professional Programmers
Это оно?
>>878229
Sage #287 #878229
>>878114
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Вот только http://tinyurl.com/gu7tlyj
Азаазаза, тот, кого нельзя называть
>>878279>>879152
#288 #878279
>>878229
Ну вот, а я хотел почитать...
#289 #878292
Аноны, помогите.
Имеется главная форма с листвью, к который биндится коллекция. Поля "Имя" можно менять через комбобокс дочерней формы.
На дочернюю форму передаю саму коллекцию (для биндинга) и значение выделенного элемента поля "Имя". Но значение свойства SelectedIndex комбобокса равно -1. IsEditable комбобокса установлен в True.
Что-то делаю не так? Подскажите как решить проблему (получить правильный индекс).
http://pastebin.com/ZeDqUNiF
>>880840>>881639
#290 #878327
В старый тред написал >>878319
>>878328
#291 #878328
>>878327
Настало время переустанавливать.
>>878390
#292 #878351
>>878037
Да, дошло, что лямбду возвращаем. Спасибо.
#293 #878390
>>878328
Это норма?
#294 #878409
Аноны, вкатываюсь в asp.net. Имеет ли смысл учить asp.net mvc 5 или сразу asp.net core задрачивать в 2016-то году?
>>878449>>878459
#295 #878449
>>878409
что тебе мешает учить 5, изредка поглядывая на core?
#296 #878459
>>878409
asp.net - на 99% это ебанное ЛЕГАСИ

если хочешь вкатиться на галеры чтобы на дошик хватало, то конечно 5
>>878467>>878765
#297 #878467
>>878459

>asp.net - на 99% это ебанное ЛЕГАСИ



Мало того, что не по теме вопроса анона, так еще что другое ты можешь предложить?
>>878508
#298 #878508
>>878467
Я так понял, он хотел посоветовать учить Core.
#299 #878765
>>878459
А почему вы считаете ЛЕГАСИ как что-то плохое?
Ведь в любом языке и технологии легаси дохуя.
#300 #878768
Как считаете на core уже можно, пет-проект какой-нибудь хотя бы, или сыроват еще? Кто пробовал, отзовитесь
>>879043
#301 #879043
>>878768
я пробую, брат жив
приглашали на собес в фирму, которая уже стартует коммерческий проект на Core
>>879482
#302 #879152
>>878229

>Вот только http://tinyurl.com/gu7tlyj



Это критика книги Clean Coder, а не Clean Code, дурында.
>>879236
197 Кб, 980x1102
#303 #879235
Как в кросплатформенной игре на OpenTK "программно" нажать кнопку на клавиатуре?
В гугле нашел SendKeys, но он какой-то хуевый и вроде не работает на системах с UAC.
Sage #304 #879236
>>879152
Ссылка на клин код тоже была, потерлась из-за спам-фильтра.
#305 #879380
>>876886

>var (a, b) =...


Аноны, разве так можно? Что за конструкция? Первый раз вижу
МОАР
>>879384
#306 #879384
>>879380
Потому что это новая для шарпа, так ей полтора десятка лет фича — кортеж называется. Первый раз видишь потому что языков знаешь с гулькин хуй, очевидно.

Собственно, там нечего моарить:
(int, int, string) getTuple(){ return (1, 2, "hui"); }
var (_, _, hyu) = getTuple()
WriteLine(hyu) // ""hui"
>>879391
#307 #879391
>>879384
С какой версией сисярпа идет?
Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <>?
>>879474
#308 #879474
>>879391

>С какой версией сисярпа идет?


А какую представляли на конфе, вась? С семёркой, и пока что не идёт (точнее идёт только в первью версиях студии)

>Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <?


Когда выйдет — узнаешь. Судя по показанному синтаксису — как анонимный тип.
>>879639
#309 #879482
>>879043
Как по ощущениям? Удобнее обычного asp.net или одна хуйня?
#310 #879485
>>879482

> Удобнее обычного asp.net или одна хуйня?


Ебать, его теперь под линапсем можно запускать, лично меня, на данный момент, удобство волнует мало.
мимодругой
#311 #879544
Анон, есть ресурс в xaml'е вида:
<sys:String x:Key="TestString">Некоторая срань</sys:String>

Как его с типом стринг забиндить на свойство во вьюмодели?
#312 #879555
>>869105 (OP)
Вечер в хату. Подскажите как делается динамическая замена плюсовых dll во время выполнения .Net программы. Надо при выполнении какого-то условия подгрузить С++ либу A.dll из папки 1, а при не выполнении С++ либу A.dll из папки 2.
>>879614>>879860
#313 #879614
>>879555

SetDllDirectory попробуй
5 Кб, 450x178
#314 #879636
Создаю .Net core web application, ничего не ломая, жму F5, получаю пикрилейтед. Кто сталкивался?

VS2015, Windows 10
>>880027
#315 #879639
>>879474
Вроде как новый тип ValueTuple
#316 #879645
>>879482
Я пробую, по ощущениям - почти прорыв: что-то допилили до конца (асинхронные партиалы, теперь называются компоненты), что-то объединили (web api and mvc теперь от одного класса наследуется), а эти сладкие nuget пакеты... очень продуманно с модульностью, такое чувство, что еще чуть и можно будет собирать приложение как конструктор
#317 #879745
>>879482
конфигурация самого приложения мне напоминает старый добрый owin (это плюс)
объединение webapi и mvc мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебапп. вот тут я сразу не понял сути пространства имен Microsoft.aspnetcore.webapi. то, что оно делает, не стакается с ~.mvc и в рантайме получается какой-то трешак (некоторые полезные в обеих случаях штуки, к примеру, роут атрибуты, присутствуют только в мвс). для поддержки перекатывания был выпущен webapicompatshim, но получается, что в одной части ты работаешь с httprequestmessage, в другой с httpcontext и это мне показалось странным
еще у меня есть претензии к нативному dependency inhection фреймворку, но есть вариант, что это говно просто вот так работает и я чего-то не знаю

в целом я особо не жалуюсь. как тут один товарищ упомянул модульность - она прям самое то, что надо

если кито знает, есть ли серьезная просадка в перфомансе при использовании .netfx библиотеков в .netcore приложении?
>>879748>>879921
#318 #879747
TFW нашел пример, на котором программа падает, но не успел запомнить контрольные значения, но потом все последующие тесты работают на ура.
#319 #879748
>>879745

>мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебапп


Ну а вывод тут один: надо делать SPA на typescript + WebAPI, остальные подходы устарели.
>>879751>>879830
#320 #879751
>>879748
нахуя мне тогда коре, если я вернусь обратно в сраный асп 5?
>>879755
#321 #879755
>>879751
linux сервера без костылей mono + перформанс + docker + можно разрабатывать на маке в VSC попивая смузи
sage #322 #879801
>>877835

> Для таких задач придумали async/await.



Кое-где до сих пор под второй .net пограмируют легаси говно, а ты про 4.5 фреймворк говоришь.
#323 #879818
>>879801
По-моему с таких проектов валить нужно (может даже из компании), если на таком старом говне пишешь. Сам сейчас на 4.0 пишу, а то и ниже лол, а до этого на 4.6 сидел. Не хватает конечно async / await, да и сахара из 4.6. Теперь страдаю от этого говна и собираюсь перекатываться в другое место.
>>879835>>879924
#324 #879830
>>879748
Пилил недавнополгода назад сдк к одному WEB API на TypeScript + Angular + Karma + Jasmine. Скажем так, прикольно, но не удобно:
- Некоторые вещи приходится реализовывать хаками, так как TypeScript видите ли такую запись не поддерживает (promises, d.ts файлы - вот это все из этой оперы).
- Некоторые вещи не покрываются тестами вообще не в какую.
- Часто приходилось отходить от строгой типизации. Меня часто просто вынуждал язык использовать any. Хотя, казалось бы, писал довольно тривиальные вещи. Возможно язык станет лучше, если запретить это слово к применению, но нет нормальных замен.
Возможно я чего-то не понимаю, в целом TypeScript не понравился.

>>879801

>Кое-где до сих пор под второй .net пограмируют легаси говно


Что мешает перейти на 4.6.х? Обычно эти вопросы решаемы при должном обосновании. Мне часто приходится решать задачи на экспериментальных фреймворках/утилитах, так как почти всегда не достаточно просто написать код, чтобы он работал. Код должен быть эффективным и простым среди аналогов.
>>879839
sage #325 #879835
>>879818

>валить нужно (может даже из компании),


А если даже на собеседование никуда не приглашают, потому что опыта 0 в резюме
Я же не синьор у которого 20 вакансий на выбор. Меня пригласили на целых 3 собеса за 3 месяца.
>>879839>>879840
#326 #879839
>>879830
Зависит от руководства на самом деле. Я например сейчас на корейцев работаю и у них свое мышление от которого можно охуеть порой. т.е. если ты захочешь перевести проект на новый фреймворк это нужно обоснавать в письменном виде какие это плюшки принесет, почему, нахуя и т п. И да - у них своё понимание плюшек.

>>879835
Набирайся опыта, учи попутно core / mvc 5 тогда, хули. А на сколько вакансий ты примерно откликнулся?
#327 #879840
>>879835

>целых 3 собеса за 3 месяца


Что ты такое в резюме написал, что все так плохо?

>опыта 0 в резюме


Так не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.
>>879850
#328 #879850
>>879840

>Что ты такое в резюме написал, что все так плохо?


То что знаю, то и написал + образование.

> Так не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.


Я писал проекты, они конечно не йоба, а чтобы продемонcтрировать что я не хуй с горы.
Это наверное рандом
Знакомого на галеру взяли: он показал пару лаб, спросили английский и попросили сделать реверс строки. Второй попал на галерные курсы и после них взяли веслать.
Уже все подзабыл, что связанное с вебом, потому что все технологии, которые используются на проекте, 2005 года.
#329 #879860
>>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 - переменная типа "делегат_с_сигнатурой_функции"
>>879863>>881610
#330 #879863
>>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);
>>879865>>881610
#331 #879865
>>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);
>>881610
#332 #879921
>>879745
Только напоминает? Он построен на Owin
Что-то не понял где объдинение mvc и webapi дало сбой? Подробнее плз
DI все мои потребности покрывает, мне нравится, чем тебя не угодил?) Кстати, можешь любой другой поставить
>>880067
#333 #879924
>>879801
>>879818
Async/await, говорят, можно завести на net framework 2.0. Только немножко с nuget кое-чего подключить.
Ведь основное (конечный автомат) делает компилятор
80 Кб, 1440x702
#334 #879928
Наше время пришло! Готовьтесь остаться на помойке истории.
#335 #879943
>>879928

>не менее 5 лет


>в коммерческие проекты


>хачкель



Это такой тралленг? Сразу бы программиста на Rust с 5+ годами искали, чего уж.
>>880026
#336 #880026
>>879928

>то самое чувство, когда какой-то мудозвон протащил хаскель в проект и съебал


>>879943
Ты же понимаешь, что эти объявления постят эйчарки?
#337 #880027
>>879636
Ну же, аноны!
>>880034
#338 #880034
>>880027
dotnet run
что показывает?
>>880351
#339 #880035
>>879928

>> хаскель


>> глубокое понимание ООП.


Сижу проигрываю в голосину блять!
#340 #880067
>>879921

> Только напоминает? Он построен на Owin


я, может, невнимательно читал, но сей детали не увидел. а даже если и увидел, то что это меняет в моем сообщении?

> Что-то не понял где объдинение mvc и webapi дало сбой? Подробнее плз


http://stackoverflow.com/questions/40464546/asp-core-nullreferenceexception-in-apicontroller-executeasync
вот мой квесщн собственно. там почитать будет интересней, чем я тут буду объяснять

> DI все мои потребности покрывает, мне нравится, чем тебя не угодил?)


я пытался заиспользовать контекст базы данных (зарегистрированным как AddScoped<>) в одном из Middleware (причем, не как чайлд самого класса миддлеваре, а как созданный инстанс в рамках исполнения метода). так вот эта хуйня не диспоузала dbcontext при выходе из метода и фактически протаскивала этот инстанс везде, где только он дальше использовался даже в рамках другого реквеста. я, конешно, подозреваю, что мой подход был так себе, но и документация тогда получаецца врет ибо контекст жизни для Scoped-зависимостей - это Context, а не реквест

> Кстати, можешь любой другой поставить


ну зачем, собственно? тимболие што я, субъективно, вижу (пока что) в этом больше геморроя, чем толку
>>880459
#341 #880197
Какие задачи вообще асперы решают? Хочу вкатиться в веб и asp.net, но у меня опыта в вебе нуль. Надо ли уметь верстать, обязательно ли знать js и его фреймворки?
Из опыта только си, и то на начальном уровне.
>>880207
#342 #880207
>>880197

> Надо ли уметь


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

по большей части - это корректировка/расширение API и бизнес-логики приложений. если нету специально обученных DBA, то еще попросють влезть в кверяние базы данных
59 Кб, 1080x1080
#343 #880227
Покажите пожалуйста профессионально написанную серьезную программу на шарпе. А то, я все лабы пишу, хочу разобраться на примере.
>>880228>>880250
#344 #880228
>>880227
купи у какой-нить софтвэр-компании продукт, и декомпилируй его и охуей от уровня говнокода
#346 #880351
>>880034

>что показывает?


Project WebApplication1 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: ...\WebApplication1\src\WebApplication1
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

Он и через студию, если ctrl+F5 нажать запускается. Эта ошибка будет, если просто собраться его попробовать по F5, как по идее и должно быть
#347 #880354
>>880250
Если честно, я даже не знаю, как к этому подступиться.
>>881511
#348 #880459
>>880067
Че-то я не понял какой apicontroller в core? Тем более system.web? Щито ты творишь?

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

>контекст жизни для Scoped-зависимостей - это Context, а не реквест


О каком ты контексте говоришь?
>>880541
#349 #880541
>>880459

> какой apicontroller в core?


Microsoft.aspnetcore.webapi.controllers.apicontroller
но я могу ошибаться с пространством имен ибо с телефона

> Тем более system.web?


где там сустем.веб? щито ьы городишь?

> могу найти, если хочешь


даже если ты что-то мне найдешь, это отменит тот факт, что дбконтекст не убивался после выполнения запроса?

>О каком ты контексте говоришь?


system.runtime.remoting.context
>>880599
#350 #880599
>>880541

>где там сустем.веб? щито ьы городишь?


У тебя в вопросе на стэке "inherited from System.Web.Http.ApiController"

>тот факт, что дбконтекст не убивался


Значит ты что-то делаешь не так

Что это за контекст?

Кстати, где документацию читаешь?
>>880753
#351 #880753
>>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, потому стало тоже неинтересно
>>880780>>882200
#352 #880780
>>880753
Можешь кинуть код, где ты в конифигурации прописываешь зависимсть для класса, который не диспозится? Когда-то у самого были проблемы с незакрывающими соединениями из за DI и на БД весели тысячи соединений, хотя я конечно использовать сторонний DI фреймворк. Так что интересно было бы посмотреть, что у тебя не так там.
Мимодругой-анон
>>880842
#353 #880783
Господа синьёры-архитекторы, поясните, пожалуйста, за этот код:
https://gist.github.com/anonymous/fc97f14fc6a1476d0d61e0b3754b1ce4?ts=4

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

Мой коллега говорит, что я еблан, и сервис не должен реализовывать интерфейс репозитория. Но я в душе не ебу, как это можно сделать по другому.
>>880785>>881489
23 Кб, 200x340
#354 #880785
>>880783
С каким же быдлом я здесь сижу
#355 #880840
>>878292
Бамп вопроса.
#356 #880842
>>880780
у меня не создавалось много контекстов, у меня все проходило через один, соединение с которым было открыто практически с самого начала работы приложения

код - это будет громоздко и неинформативно, тимболия я его снес
суть в том, что в одном из Middleware (об котором ни одна хуйня в интернетах не обмолвилась, что инстанс создается при старте и является статическим для всех реквестов), вызывалась такая штука
var service = (IServiceCollection).Resolve<MyGovnoService>(), одной из дочерних зависимостей которого был контекст. регистрация зависимости DbContext происходила буквально таким образом: services.AddScoped(typeof(DbContext), typeof(MyContext))
>>880850
#357 #880850
>>880842
Хм, по-идее все ок должно быть, но с этим встроенными DI фреймворком хуй знает как все работает. Я бы еще попробовал бы регистрацию через services.AddScoped<type, type>(); или
services.AddSingleton<type, type>();
>>880857
#358 #880857
>>880850
<T1, T2> не получалось т.к. дбконтекст находится на один уровень ниже в архитектуре WebApp-Bll-DAL и недоступен для веб-приложения. посему мне приходилось с помощью MEF коллектить зависимости в виде {SourceType, DestinationType, Scope} и уже вот таким говном их регистрировать
ну DbContext как Singleton у меня не возникло мысли регистрировать
45 Кб, 521x456
#359 #880911
Что-то я не понял, в каком порядке книги читать? Что после The C# Player's Guide?
>>880929
#360 #880929
>>880911
clr via c# Рихтера, а затем можно курить доки по asp.net на офф. сайте. Либо сразу начинай читать доки по asp.net. Ну это в случае веба естественно.
>>880930
#361 #880930
>>880929
а EF когда?
>>880932
#362 #880932
>>880930
Про EF можно и в доках asp.net читать - благо там много знать не нужно. Да и на EF весь свет клином не сошелся. Можно выбрать какую-нибудь мини-orm типа дапера или linq2db, хотя с EF в любом случае придется работать, да.
#363 #881129
Сап, ребят, а есть С# 6.0 Троелсена на русском? Никак найти не могу где скачать бы.
Слабоват пока в английском, посоветовали одновременно читать его на русском и английском, нашёл только 5.0.
>>881152
#364 #881138
>>881152
#365 #881152
>>881129
почему я могу найти? или у тебя китайский фаервол?

>>881138
ясно
>>881195
#366 #881195
>>881152

>почему я могу найти?


Потому что ты фантазёр.
#367 #881254
>>869574
Нихуя. Дергать резолвы ручками можно только при конфигурации контейнера.
Иначе вся суть контейнеров пропадает. В бизнес-логику лезет какой-то блядский код контейнера, если решим спрыгнуть с контейнера или перелезть на другой придётся вычищать кучу этой хери.
Так что не надо дергать ресолв там где не надо.
>>881480
#368 #881279
Я совсем ньюфаг и не понимаю. Пример с msdn:
public string Name
{
get { return name; }
set { name = value; }
}
Что делает set? Что за виртуальная переменная value, которую не нужно объявлять? Как set участвует в вызове этого самого свойства?
>>881338>>881341
#369 #881338
>>881279
Ой пиздец. Set устанавливает свойство. value это значение которое передается в set которое требуется установить.
ClassName fuck = new ClassName();
fuck.Name = "fuck"; // - вызовется метод set, в качестве value будет строка "fuck".
>>881460>>881731
#370 #881341
>>881279
есть более простой вариант

>string Name { get; set; }


если хочешь начальное значение задать, то просто добавляешь в конец >= "имя"
#371 #881460
>>881338
А зачем такой дикий геморой с установкой значений полей? Для того, чтобы закладывать логику обработки от исключений или что?
>>881461
#372 #881461
>>881460
когда тебе функционала полей недостаточно, а поступать как в жабе getField() setField() не комильфо но сиравно компилятор сгенерит методы
ну и всякая такая вещь как инкапсуляция
>>881463
#373 #881463
>>881461
я нюфаня и ничего не понял, до сих пор живу категориями полей структур из Си
>>881466
#374 #881466
>>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}; }
>>881733
sage #375 #881480
>>881254
Запили абстракцию над контейнером. И если ты внезапно решишь пойти на другой - просто поменяешь в одном месте.

возможны мы вообще об одном и том же говорим но по-разному?
>>881495
94 Кб, 378x480
#376 #881489
>>880783
Ну же, господа! Мне и вправду нужно знать ваше мнение.
>>881512
#377 #881495
>>881480
Контейнер конфигурируется и присутствует только в проекте исполнения. Никаких резолвов не надо дергать. Все инжектится через конструкторы, если требуютя разные реализации, то применяется регистрация по условию. Все уважаемые DI фреймворки это умеют.
>>881508
sage #378 #881508
>>881495
ну да, пока всё совпадает. инжекция в конструкцию - или какой-то абстрактный резолв - это уже детали, бро.
sage #379 #881511
>>880354
а что бы ты хотел увидеть?

Вот например проекты серьёзные

https://github.com/search?o=desc&q=language:C#&ref=advsearch&s=stars&type=Repositories&utf8=✓
sage #380 #881512
>>881489
Ну коллега прав.
По факту у тебя тырфейс IHuyService должен содержать тоже методы Get, Delete, Modify, Add.

Сначала покажется что дублирование кода. но на самом деле у тебя в интерфейсе сервиса может быть например 3 метода Get, Save, Delete. А Save уже по своей логике будет вызывать Add или Modify.

Потому для сервисов и репозитроиев отдельные интерфейсы
#381 #881584
Подскажите чего почитать по P/Invoke в C#. Желательно не отдельные книги, а статьи в интернетике. А в идеале, просто поясните, правильно ли я понимаю суть P/Invoke'а - с помощью него можно делать всякие низкоуровневые штуки путём импорта функций из различных .dll и объявлений в коде соответствующих структур? Может, подкинете примеров из своего опыта, что можно мощного сделать на P/Invoke?
>>881610
#382 #881610
>>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;
}

И всё.
Случаев чтобы какая-либо виндовая функция не гуглилась и не находилась её декларация у меня еще не было, поэтому самостоятельно даже не приходится всё это писать, достаточно нагуглить и скопипастить. Иногда бывают не самые оптимальные объявления, но как правило они оптимальные. В крайнем случае можно изучить как это всё маршалится и заебенить всё самому, но в результате будет всё по сути то же самое.
#382 #881610
>>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;
}

И всё.
Случаев чтобы какая-либо виндовая функция не гуглилась и не находилась её декларация у меня еще не было, поэтому самостоятельно даже не приходится всё это писать, достаточно нагуглить и скопипастить. Иногда бывают не самые оптимальные объявления, но как правило они оптимальные. В крайнем случае можно изучить как это всё маршалится и заебенить всё самому, но в результате будет всё по сути то же самое.
#383 #881639
>>878292
Бамп
Неужели перевелись wpf мастера в русских селениях на двощах.
>>881662>>881747
#384 #881662
>>881639
Где INPC?
>>882513
#385 #881731
>>881338
Спасибо, ты расшарил в паре предложений то, что не могли расшарить мне трое других людей.
А зачем вообще свойства требуются? Почему нельзя просто объявить поле public string name в другом классе и уже с ним оперировать?
#386 #881733
>>881466
А, ты уже ответил. Спасибо.
#387 #881747
>>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
>>881872>>882513
#388 #881872
>>881747
студия для WPF уже достаточно давненько предлагает накатить атрибут, по-моему InvokationTargetName, который подсовывает по-умолчанию значение, аналогичное nameof(InsidePropertyName), что позволяет вызвать ивэнт как PropertyChanged.Invoke(this), что, мне кажется, достаточно крутецкой альтернативой
>>882513
#389 #882170
Посоны, поясните ньюфане один момент:
Вот есть
Class A
{
int YOBA;
public A (int i)
{
YOBA=i;
}
}

Class B: A
{

}

Выдает ошибку, потому что у класса А нет контсрукторов, принимающих 0 аргументов. Чому так? Как мне тогда унаследовать без стандартного конструктора?
>>882176
#390 #882176
>>882170
protected A() { }
>>882177
#391 #882177
>>882176
is inaccessible due to its protection level
>>882181
#392 #882181
>>882177
http://pastebin.com/bay8WfAt
Почитай про свойства
>>882184>>882196
#393 #882184
>>882181
А в чем разница между public int YOBA {get; set;} и public int YOBA?
>>882188
#394 #882188
>>882184
Свойство и поле соответственно.

>Почитай про свойства и поля

>>882196
#395 #882195
Посоны, а если я передаю в функцию или получаю List, я получаю ссылку на конкретный лист или копию этого самого листа?
>>882204
#396 #882196
>>882188
>>882181
Спасибо, разобралси.
#397 #882200
>>880753

>подключил Microsoft.AspNet.WebApi.Owin.


Зачем ты это делал? Это же одна из фич новой mvc - объединение mvc и web api (никакого дублирования кода, удобство, полная объдиненные роуты), а ты от этого собственноручно отказываешься. Тебе же на стеке ответили: наследуйся от Controllers.
Может все же стоит документацию глазами пробежать? ;)
>>882237
#398 #882204
>>882195
Ссылку, ведь это же ссылочный тип
#399 #882237
>>882200
потому, что это объединение также уебищно, как и в старом mvc наличие actionresult. фактически я не могу сконструировать статически типизированное api, имея при этом возможность возвращать statuscode в случае чего стандартными средствами. приходится городить хуй знает што
>>882296
#400 #882296
>>882237
Но зачем? Если все хорошо - он сам добавит 200, если плохо - ты явно вернешь это (return StatusCode(418);)
Это же тип стандарт. Да и, думаю, если задаться - можно поискать где переопределить так, чтоб не забыдлкодить, няш)
>>882387
#401 #882316
Котики, скажите вот что, есть класс Корпус, а в него ставится Пилот. Когда вставлется пилот, бафы(бонусы) которые пилот дает переносятся в список бафов корпуса. Каждый раз когда пилот добавляется, добавляются бафы, потом идет пересчет характеристик внутри корпуса. А есть еще оборудования в Корпусе. И тут хуйня, вот добавил пилота, а пилот дает +50 к реактору. А потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактор. Ибо дает корпус за счет реактора, а не сам реактор. И тут я думаю, что наверное надо кидать бафы в оборудование( типа +50 реактор), а не в корпус. Вроде же совсем просто, но что-то меня тут смущает.
>>882389
#402 #882324
>>869105 (OP)
Каким способом в C# можно реализовать циклическую очередь? Может ли System.Collections.Queue решить вопрос, или проще вообще юзать указатели. Просто это как-то небезопасно
>>882385>>882486
#403 #882331
>>877296

>ServiceLocator - который сейчас считается антипаттерном


По мнению одного бородатого пидора, который заебал везде пиарить свою книгу по DI. С объяснениями уровня "generic методы абсолютное зло, их бесконечное число, и вообще нарушают инкапсуляцию". Ну и полным отсутствием понимания что такое антипаттерн вообще (поди и паттерн тоже).
>>882372>>882487
#404 #882362
Ананасы, а кто как свои веб-приложения деплоит? У нас в компании просто отбитая нахуй политика безопасности и из-за этого невозможно сделать расшаренную папку на веб-серваках куда бы все и деплоилось. Поэтому все деплоится все ретардксим способом: приходится паблишить на локальные компьютер, подключаться по rdp к серверам( а их целых 2) и копировать с локального компьютера в папку с веб-приложениями. Меня это заебало и я просто написал powershell скрипт, который занимается деплоем на самом деле нихуя, начальству и тут что-то блять не нравится в 1 клик на оба сервака. Приложение естественно не в облаке, а на удаленных машинах под виндой. Слышал, что есть от мелкомягких какая-то тулза sync, которая занимается из коробки этим, но так и не понял как она работает. Билд сервер вроде teamcity я думаю просто так хуй мне разрешать поставить. Интересно было бы послушать про ваших стори кто как этим занимается.
>>882389
#405 #882372
>>882331
Я читал что там возможны проблемы с утечкой памяти, тк servicelocator это синглтон.

Лично мне не нравится что тесты усложняются.
Я не могу закинуть зависимости в конструктор, мне в каждом тесте приходится реализовывать фейковый SerLoc.
#406 #882385
>>882324
нам в универе для этого рекоммендовали делать АТД, у которого 0 и 1 элемент коллекции указывают на начало очереди и количество элементов в очереди соответственно, ну и от этого плясать. у меня вроде даже реализация осталась. если интересно - скину.
#407 #882387
>>882296
ты понимаешь всю уебищность ситуации? у меня API с возвращаемыми объектами типа IActionResult. это может быть ObjectResult(UserDto), FileStreamResult, null, еще какая-нибудь хуйня. а если результат экшена будет тот же UserDto, то я уже никаким боком не втулю StatusCodeResult. конечно, можно пойти тем путем, которым это сделано в старом WebAPI - если нада статус кодэ, бросаемся HttpResponseException(StatusCode.Kek), а фильтры сделают все остальное. и, возможно, было бы неплохо, но я на основе исключений уровня BLL формирую нужные мне статус коды и возвращаемые объекты. посему от такой хуйни как try {} catch {throw new} ушел.
#408 #882389
>>882316
вопрос в чем? когда ты вставляешь что-то куда-то, тебе нужно чекать эффекты, накладываемые вставляемым объектом и прокидывать их выше по уровню. т.е. тебе нужно построить дерево со связями от дочернего элемента к родительскому (либо двусторонний тип связи), ну и дальше все остальное

>>882362
ну тут всякое у меня бывало. от ручного копирования по rdp/ftp (и правки всех конфигурационных файлов, которых было пиздец как), до билд сервера, который менеджит все экварменты, включая продакшн и говнодев. удобнее всего, конечно, пользоваться Deploy опцией с Visual Studio, но это для серъезных проектов обычно не подходит
>>882455
#409 #882455
>>882389

>вопрос в чем?


Не, брат, выше прокидывать не нужно. Поставил пилота в корпус, накинул баф на оборудование. Вопрос в том что так делать номрально? Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs(), или может это проеб архитектуры?
>>882498
#410 #882486
>>882324

>или проще вообще юзать указатели


Забудь про указатели, почитай про ссылки в c#
#411 #882487
>>882331
Ты хотел сказать по мнению небыдлокодеров
#412 #882498
>>882455

> потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактор


а тут ты предлагаешь гадать, что и как ты делаешь и что у тебя кому не дает

> Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs()


вещь, которая тебе в дальнейшем устроит спагетти в коде. да и вообще такие штуки опасны в публичном доступе. на уровне internal, а лучше всего private в какой-нибудь абстрактной абстракции - идеальное место для этих методов
#413 #882513
>>881662
>>881747
>>881872

INotifyPropertyChanged не помог.
Но я всё-таки понял, в чём был косяк. Нужно было привязать свойство Text комбобокса.

Почитал про INotifyPropertyChanged и появился вопрос:
pastebin.com/2ugnhW0a
Эти записи равноценны? В 1-ом варианте неявно вызывается Invoke или как? Объясните в чём разница
>>882514>>882531
#414 #882514
#415 #882531
>>882513
дыа.
#416 #882716
Шарпаны, как запускать выполнение хамарина из визуал студио? При запуске эмуль долго думает и в итоге выдает "сбой развертывания".
>>882763
#417 #882763
>>882716
Попробуй файрвол вырубить.
>>883249
#418 #882917
Шарпаны, поясниет чего хочет от меня студия.
Есть буквально пара строк кода. Сразу оговорюсь, что код работает. Но студии он ненравится.

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.
Я где то хуй или это можно спокойно игнорировать?
>>882962>>882974
#419 #882962
>>882917
Graphics же IDisposable по-моему?
#420 #882974
>>882917

using(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 вызывается в деструкторе, так что утечки быть не должно. Но это считается плохим тоном - не освобождать неуправляемые ресурсы сразу после использования.
>>883378
#421 #883249
>>882763
Короче попробовал и в визуале и хамарин студио накатить, что-то не работает нихуя.
Есть где-то нормальный гайд как начать пилить приложухи на андроид?
#422 #883261
Народ, можно ли при помощи linq вынимать элементы из Сыстема.Колехции.Общее.Очередь?
>>883304
#423 #883304
>>883261
А что мешает взять и попробывать?
>>883447
#424 #883378
>>882974
в деструкторе вызывается protected void Dispose(bool), если он есть
#425 #883447
>>883304
Я не знаю как создать запрос.
Вот допустим у меня есть очередь A из объектов B. Как мне выдрать объекты где B.rule = 42?
>>883458
#426 #883458
>>883447
.Where(x => x.rule == 42)
>>883462
#427 #883462
>>883458
Спасибо, помог.
Вот ещё глупый вопрос, ну я только начинаю.
http://pastebin.com/0WuNjwPE
Вот класс. В нём при запуске кода происходит NullReferenceException хотя я и юзаю
SomeCycleQueue.Cenqueue(penny);
То есть я посылаю объект, он должен копироваться в newcoin. Я хотел попробовать принимать ссылку на объект, там создавать объект Coin конструктором копий по этой ссылке и его уже в enqueue. Но блин, как-то это всё запарено. Должен быть простой метод.
>>883463
#428 #883463
>>883462
PS: Паста сырая и переменная size не работает как следует. Но мне бы решить проблему с передачей объекта, то фигня.
>>883464
#429 #883464
>>883463
Двач, сорян за беспокойство. Я просто забыл инициализировать очередь. А ещё, спите ночью а не сычуйте. Умоляю :З
#430 #883530
анон. что значит "Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно"?
>>883534
#431 #883534
>>883530
Блять, ну ты бы хоть контекст подкинул о чем речь. Как я понял разговор про тестирование - когда ты тестируешь что-то и в коде есть метод, который цепляет данные из БД, то тебе не обязательно использовать реализацию этого метода, которая работает напрямую через БД. К примеру у тебя есть интерфейс и реализация интерфейса, которая работает с базой. За место использовния этой реализации ты создаешь мок-объект, который возвращает какие-то данные а какие - ты сам можешь определить в рамках тестирвоания и дальше ими уже оперируешь. Про мок-объект я надеюсь нагуглишь.
>>883538
#432 #883538
>>883534
я не про тестирование.
задание дали вот такое:

>Прочитать из базы данных массив объектов Animal


>Передать массив в виде модели в представление


>Отобразить данные, используя шаблон


>Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно.



в представлении написать форму добавления новой записи, при этом сервер должен вернуть готовый для вставки html(это как блядь?)
#433 #883554
>>883538
Ты бы спросил у того кто задание тебе дал, ибо 1-ый и 4-ый пункты противоречат сами себе. По поводу готового html: тут имеется ввиду может быть partial view какой-то, либо можешь сгенерировать читый html на сервере с помощью простой строки, либо t4 шаблона и сохранить эту строку в модель, а во вьюхе вызвать это говно таким образом: @Raw(Model)
>>883559
#434 #883559
>>883538
>>883554
Дополню: если верить последнему пункту, то ты можешь в принципе создать статический класс какой-нибудь, который будет содержать массив объектов над которыми ты и будешь выполнять CRUD операции - чем не замена работы с БД?
#435 #883753
>>883538
Есть сборник? Я б порешал, а то в голову не лезут задачи на ооп, а в универских методах одна математика
37 Кб, 1476x502
#436 #883793
Вопрос к паттерналистам.

Я придумал такой паттерн (пикрилейтед).
Суть его в том что многие объекты (в реальном приложении - разных классов) могут одновременно использовать общие объекты, имея на них ссылки. Эти используемые объекты (на пикче класса SUBJ) довольно большие в плане занимаемой памяти, поэтому делать клоны этих объектов каждый раз нежелательно из-за того что растет потребление памяти. В то же время эти объекты (типа SUBJ) могут изменяться их владельцами. Из-за того что у них могут быть и другие владельцы, это ведет к тому что у других владельцев фактически происходит подмена данных, чего быть не должно.
Я придумал хранить количество ссылок на объект типа SUBJ при его прикреплении к родительскому (на пикче типа USER) и если объекту USER требуется поменять состояние SUBJ, то:
1. Если число ссылок равно единице, то просто меняем состояние SUBJ.
2. Если число ссылок больше единицы, то клонируем объект, число ссылок в старом уменьшаем, в новом (клоне) увеличиваем и становимся его единственным владельцем, после чего меняем его состояние не боясь затронуть остальных владельцев SUBJ.

Вопрос: как называется этот паттерн? Я помню читал книгу про паттерны, но по-моему не встречал такого. Алсо, интересно есть ли более продуманные реализации данной схемы.
>>883829
#437 #883829
>>883793
Хуй знает. Я не паттерналист, но мысль вкину. Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе. Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектов (т.е. по-сути делал бы глубокое копирование твоего толстого объекта и возвращал копию). А GC сам бы всю работу делал по утилизации всего этого говна, когда объект user уничтожался бы. Это вообще на паттерн не очень похоже ибо в реализации и поддержке как-то уж геморно получается и слишком специфичная хуйня.
>>883843
#438 #883843
>>883829

>Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе.


При бросании объекта SUBJ счетчик ссылок у него уменьшается. Но это не обязательно и даже если счетчик ссылок будет выше реального количества ссылок это приведет только к лишнему клонированию, но не к неработоспособности программы. Вести учет ссылок действительно геморно, но в моем случае учитывать присоединение объекта (т.е. увеличение счетчика) (а это самое главное) было легко, а уменьшение счетчика трудно, но последнее не является для меня проблемой, по крайней мере пока.

> Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектов


Это приведет к сильному расходу памяти, что неприемлемо.
>>883847
#439 #883847
>>883843
А можешь пример какой-то привести, где это можно использовать в реальном приложении? Мне почему-то кажется, что есть вариант получше и ты просто не в ту сторону копаешь.
>>883853
#440 #883853
>>883847
Так я уже по сути привел всё описание.

- Есть объект SUBJ.
- Его могут использовать разные классы.
- Некоторые из них могут его менять.
- Объект SUBJ очень большой, поэтому лишних клонирований в идеале быть не должно.
- Изменение каким-либо классом объекта SUBJ не должно сказываться на остальных владельцах этого SUBJ (за исключением случаев когда это делается намеренно).
>>883861
#441 #883861
>>883853
Не-не, ты меня не понял. Я имел ввиду какое-то реальное приложение в котором бы это было задействовано и как бы оно использовалось. И типа что это за приложение: веб / десктоп / мобилки; откуда эти тяжелые данные бы брались и т п. Твою идею я понял, но мне интересно реальный кейс какой-то было бы почитать.
>>883881
#442 #883881
>>883861
И что это поменяет? Я просто не понимаю смысл. Придумаешь как надо поменять приложение (т.е. ТЗ) чтобы его можно было выполнить проще?

Ну ок.
Приложение десктопное для анализа фин.рядов, что-то типа тестера стратегий.
Объект SUBJ содержит массив баров финансового инструмента и может использоваться для показа на экране в MDI-окне (условно объект класса USER в моих картинках выше, в реальном приложении объект называется Graph, который через цепь объектов в конечном итоге принадлежит MDI-окну) и для прогона по нему стратегии (объект класса Strategy, на картинках я его не показывал, т.к. это сути не поменяло бы) и индикатора (класс Indicator).
График можно:
- Загрузить из файла в MDI-окно.
- Скопировать из одного окна в другое.
- Изменить состояние графика в окне (изменить таймфрейм, удалить часть баров, добавить новые, слить с другим и так далее). Это не должно отразиться на других окнах куда или откуда был скопирован этот график ранее.
- Использовать в качестве входного графика для стратегии или индикатора. Последующее редактирование графика в окне не должно повлиять на график выбранный для стратегии. Для стратегии можно выбрать любой график из любого MDI-окна.
>>883888
#443 #883888
>>883881
чем-то, чессгря, напоминает микс пула объектов и прототипа. причем, последний - одна из стратегий, инкапсулированная под капотом пула
9 Кб, 268x336
#444 #884091
Суп шарпаны,
выполняю простенькие задания для студентов и немного застрял в реализации (задача номер 5 http://www.itmathrepetitor.ru/prog/zadachi-na-vychisleniya)
В чем именно ошибка? Видимость переменной же должна быть в пределах цикла.
>>884102>>884125
#445 #884102
>>884091
int i=0,int j=0
>>884104
10 Кб, 278x355
#446 #884104
>>884106>>884152
#447 #884106
>>884104
Зачем i два раза. В for() убери его
27 Кб, 613x410
#448 #884112
>>884124
#449 #884124
>>884112
using 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');
}

}
#449 #884124
>>884112
using 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');
}

}
#450 #884125
>>884091
Ошибка была во "flag ? i++ : i--;" - так делать нельзя (хотя жаль что нельзя, да).
>>884126
#451 #884126
>>884125
Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку.
Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?
>>884140
#452 #884140
>>884126

>Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку.


Я и сам удивился. Вообще в 90-х такое часто случалось с компиляторами, а сейчас это редкость.

>Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?


По сути нет. Есть функция Array.Clear, но она заполняет нулями и является целой функцией со своим кодом.
Алсо, двухмерные массивы что ты используешь достаточно медленные в своей работе. Если приложение "performance critical" то их лучше не использовать. Впрочем это явно не про студенческие лабы.
>>884144
#453 #884144
>>884140
Я вроде использую что ни наесть стандартные двумерные прямоугольные массивы. Есть решения, которые позволяют работать с такими данными быстрее?
>>884145>>884146
#454 #884145
>>884144
jagged-arrays же.
#455 #884146
>>884144
Но если тебе только для лабы, то можешь не заморачиваться. Просто на работе могут сказать чтобы не юзал их.
#456 #884148
А почему зубчатые быстрее? Мне казалость компилятору без разницы как рассчитывать адрес ячейки или тут другая механика? Я просто до этого на Си писал для контроллеров, более менее в программирование умею.
>>884149
#457 #884149
>>884148
То же не понимаю, ведь они один фиг лежат в памяти подряд строка-за-строкой.

Желательно только ходить по ним последовательно и горизонтально что кэш проца работал.
>>884157
#458 #884152
>>884104
в for можно описать несколько переменных вот так

>int i,j,k = 0

>>884153
#459 #884153
>>884152
Niet, только так

>int i = 0,j = 0

#460 #884157
>>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.

>>884173
#461 #884160
анон подскажи.
из конроллера во вюху передаю list<person>. во вюхе обозначил

>@model list<test.model.person>


данные вывожу через foreach.
но есть проблема.
мне на этой же странице надо добавить форму, которая должна быть написана на шарпе(тобишь html.editfor/labelfor и др.), но т.к. у меня модель - перечисление, то нихуя так не получится?
>>884168
#462 #884168
>>884160
Просто не юзай строго-типизированные хелперы, а используй обычные html-теги, либо хелперы, которые строки принимают. В чем проблема?
>>884171
#463 #884171
>>884168
задача состоит именно в этом. я уже ебанулся с этой хуйней. нужно использовать именно хелперы
>>884172
#464 #884172
>>884171
Ну так я и написал - используй обычные хелперы по-типу @Html.TextBox("Название поля")
12 Кб, 514x56
12 Кб, 530x48
#465 #884173
>>884157
На macOS с CoreClr разница не такая большая - пик1
Все намного хуже, если сравнивать с MONO - пик2

MONO в работе с массивами сейчас рвет CoreClr в ~40 раз
>>884184
10 Кб, 469x49
#466 #884184
>>884173
Если в MONO увеличить кол-во интераций до 100 (разогреть), то разница увеличивается.

Вообщем хорошо что в ASP.NET редко приходится возиться с массивами чисел.
#467 #884208
Прочитав этот тред, я проиграл так, как не проигрывл очень давно. Нет, я знал что на дуднетах пишут анальные рабы мелкософта, и всё, что связано с дотнет парашей - оплачивается на уровне пхп (а то и ниже).
Но что их уровень настолько низок - не знал.
И уж точно не подозревал, что хамарин "программисты" не слышали про FireBase TestLab. А господа дуднет-рабов из мелкософта понтуются библиотечками для распознавания лиц, и совместимостью с Linux в 2016.
Посмотрев мельком скрины в треде, стало понятно, что в мелкософте есть 2 типа дизайнеров: офисная крыса с кризисом среднего возраста, которая уже лет 10 пьёт чаёк, и молодой любитель лсд, который учится по заветам старшего.

Ладно, дебилы, поссал на вас - и пошёл дальше работать
мимо-джава-господин-150к
>>884262
#468 #884262
>>884208

> и пошёл дальше работать


>мимо-джава-господин-150к


Ага, пиздуй.

безработобоярин
#469 #884267
>>874018
Учусь на очке, работаю разрабом под .core в Екатеринбурге, подал просто на шару, взяли =)
>>884268
#470 #884268
>>884267

>.core в Екатеринбурге


Ну и как оно, что делаешь?
Спидом еще на заразился? :3
>>884269
#471 #884269
>>884268
Хуячим жирное asp.net core приложение, что ж еще)

>Спидом еще на заразился? :3



Через интернет не передается
#472 #884287
Помогите решить, что лучше установить на свежеустановленную винду - 2017 студию, или пока всё же 2015? Кто-нибудь может вангануть, когда релизнут её?
>>884289
#473 #884289
>>884287
Установи обе версии - в чем проблема? 2017 сгодится как песочница какая-нибудь, где поиграться можно. А в 2015 можешь что-то писать / открыть другие проекты у которых будут проблемы с совместимостью из под 2017 студии.
>>884291
#474 #884291
>>884289
А так можно?
>>884301
#475 #884301
>>884291
Спроси у мамки, если разрешит, то можно.
да, студии уже давненько независимо друг от друга устанавливаются и друг другу не мешают
#476 #884351
Аноны, подскажите такую штуку.
Есть класс с двумя функциями, назовем скажем Foo() и Bar()
Функцию Foo() вызываю я сам, функцию Bar() вызывает другой элемент фреймворка, в неизвестный момент времени после вызова метода Foo(). Вопрос: Как мне, фп-way, передать некое значение из метода Bar() в точку вызова метода Foo()?
Если кому-то интересно - язык C#, платформа Xamarin.Android
Исходники - http://pastebin.com/NLuNXA6c если убрать все лишнее
>>884356
#477 #884356
>>884351
Самое простое это сохранить в приватное поле
>>884372
#478 #884372
>>884356
Не функционально получается.
>>884429
#479 #884429
>>884372
Ну а как ты сейчас определяешь что OnActivityResult вызвался и нужно вызвать Login?
>>884636
#480 #884636
>>884429
Login вызывается до OnActivityResult
>>884675
99 Кб, 839x688
#481 #884675
>>884636
OK, раз методы вызываются в разное время тут без промисов не обойтись.
Я бы заюзал Task + TaskCompletionSource

Еще что бы не забивать активити лишним кодом, вынес бы логику в отдельный класс PromiseFactory
и положил бы в какую-нибудь папочку типа Utils или Common
#482 #884687
>>884675
Кстати, там можно сделать чуть проще.
Заменив
readonly List<TaskCompletionSource<T>> sources = new List<TaskCompletionSource<T>>();
на event Action<T> notify;
>>884979
#483 #884689
>>884675
Fira Code?
>>884847
#484 #884702
Сишарпач, расскажи каким DI контейнером пользуешься. Каким пользовался. Плюсы и минусы того или иного контейнера, так сказать из личного опыта. Что можете посоветовать?
>>884705>>884780
#485 #884705
>>884702
Никакими и всегда их на хую вертел. Не понимаю нахуя они и какой от них профит, кроме гемора.
#486 #884768
Пытаюсь вкатиться в дотнет (asp mvc), смотрю курсы, считаю книги. Очень не хватает самостоятельной практики, отсюда и вопрос: а с чего начать ? Можете подсказать сайты с задачами/лабами ?
>>884773
#487 #884773
>>884768
Я тоже вкатываюсь, только мне больше интересен десктоп. Пока, чтобы набить руку, решаю элементарнейшие задачи для студентиков - уже нашел нашёл множество моментов, которые были не так очевидны. Если у тебя с этим (базой) проблем нету, то просто начни делать сайты, в чем проблема? Сейчас популярны всякие интернеты вещей. прикрути прослойку между, например, народмоном и телеграммом. Двач имеет апи, сделай сайт которой этот апи бы использовал. Исходить нужно не из выучу язык -> придумаю задачу, а наоборот - вижу задачу, использую язык для ее решения.
>>884776
#488 #884776
>>884773
где задачи для студентиков берешь братюнь?
>>884781
#489 #884780
>>884702
Ninject - медленный
Spring.NET - еще более медленный
Unity - не сказать, что пользовался. так, на проекте был, мне не мешал, сам никуда не лез. ничего особенного сказать не могу
Structuremap - последние версии, которыми я пользовался, имели просто охуительный эффект, связанный с уровнем доверия к сборкам, т.к. использовал рефлексию во всех загруженных сборках при старке. и посему приходилось там, где не надо, явно указывать подобные секьюрити вещи, что, мягко говоря, печально подходит к сереезным приложениям. надо отдать должное, самый негемморный (если не считать вышеописанного) при встраивании в многослойные аппликухи (ну как по мне). параллельный отряд товарищей работал с ним на супир-пупир-большом приложении, им ничего не мешало. возможно, дело во мне
ServiseStack - ничего особенного
Microsoft.DependencyInjection - я уже бугуртил где-то выше по поводу него. ну так-то, в целом, резолв делает. что еще от него надо?
#490 #884781
>>884776
Тереблю вот этот список https://tproger.ru/digest/competitive-programming-practice/
Особенно понравился вот этот сайт http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/ - полный набор: арифметика, классы, гуи, многопоточность и прочее и прочее.
#491 #884813
Начал недавно пилить сайты на MVC, это нормально что загрузка без отладки идет по 2-3 минуты ?
Железо core i5, 8gb ram 250 ssd.
>>884816
#492 #884816
>>884813
а если с отладкой, есть что-то подозрительное в диагностических сообщениях?
>>884820>>885005
#493 #884820
>>884816
Например что?
>>884834
#494 #884834
>>884820
например ты увидишь, какой из шагов выполняется долго и вообще, что происходит в момент запуска приложения (возможно не нужного на этапе запуска)
#495 #884847
>>884689
Hasklig
У фиракода буквы как-то непривычно расположены/spoiler]
#496 #884848
>>884780
Autofac ?
>>884850>>885004
#497 #884850
>>884848
не юзал и не стремлюсь особо
>>884860
#498 #884860
>>884850
В отличие от того ninject - он активно пилится и поддерживает .netstandard
>>884871
#499 #884864
>>884780
SimpleInjector пробовал? У меня на предыдущем месте работы его активно использвали. По скорости к сожалению не могу сказать в сревнении с остальными контейнерами, но настраивать и использовать удобно.
#500 #884870
>>884864

В одной из больших таблиц сравнения контейнеров simpleinjector ебет всех по скорости кроме ручного new конечно же
>>884871
#501 #884871
>>884860
я активно защищаю ninject иль ты просто к слову?
не только autofac пытается поддерживать ~core, в отличии от того же всего остального

>>884864
глянув на статистику https://github.com/danielpalme/IocPerformance, решил DryIoc заюзать. но потом все плюнул и вернулся к дефолтному Microsoft.DependencyInjection посчитав, что на данном этапе бОльшим геморроем является его настройка, а профит, возможно, не так уж и заметен

>>884870
не всех
#502 #884876
Шарпаны, вчерашний нюфаня снова врывается в тред. Продолжаю решать студентческие задачи и упёрся в ограничение C# на изменение строк.
Коротко задача: обнулить в числе каждое вторую цифру:

>45678 -> 40608.


Какими средствами лучше всего будет воспользоваться для такой задачи?
>>884878>>884931
#503 #884878
>>884876
средствами языка c#
ты чуть что сюда бежишь или хоть немного пытаешься подумать?
>>884880
#504 #884880
>>884878
У меня в голове как минимум 2 решения: StringBuilder и конвертация в промежуточный числовой массив, но мне они кажутся слишком монструозными. Мб есть какое-то более оптимальное решение?
#505 #884882
>>884880
а что в StringBuilder тебе кажется монструозным? не, ну смотря, что ты собираешься сделать, конечно. но с его помощью все решение упрется в один цикл и даже без ифа
#506 #884903
>>884880
string s = Console.ReadLine();
s.ToCharArray
Дальше пробегаешься и заменяешь пробелами, потом каким-нибудь Split или что там убираешь пробелы.
>>885512
#507 #884928
>>884880
Можно изменить саму строку через unsafe-код. Но если она используется в другом месте, то это может привести к багам.
#508 #884931
>>884876

>Какими средствами лучше всего будет воспользоваться


new Regex("(\\d)\\d").Replace(... дальше сам
>>885512
#509 #884979
>>884687
Можно тут подробнее?
#510 #884985
>>884675
А расскажите про промиссы, плз
>>885015
#511 #884986
>>884675
А расскажите про промиссы, плз
sage #512 #885004
>>884848
заебись DI, и поддержка на PCL годная и core
#513 #885005
>>884816
Какие такие диагностические сообщения?
>>885014
#514 #885014
>>885005
Output -> Debug
>>885193
46 Кб, 543x439
#515 #885015
>>884985
пик (заменили List<T> проста на C# event)
>>884985

>А расскажите про промиссы, плз


Это когда вместо результата ты возвращаешь "обещание когда-нибудь верунуть результат"
В комбинирование с await позволяет писать линейный простой код.
https://ru.wikipedia.org/wiki/Futures_and_promises
>>885200
#516 #885175
>>884780
>>884864
Спасибо.
Что-то можете сказать о Castle.Windsor?
>>885178
#517 #885178
>>885175
не более того, что ты сам можешь найти
#518 #885193
>>885014

>Output -> Debug


Какой output?
Если ты говоришь про обычный f5, то какие сообщения, никогда не было
>>885220
#519 #885200
>>885015
Неплохо, хотя первый вариант понравился больше. Где подсмотрел такую годноту (про первый вариант тоже)?
#520 #885202
>>884675
Но это же все равно не очень фп получается
>>885256
#521 #885220
>>885193
есть такая вещь как модальное окно Output в Visual Studio
когда билдишь приложение, например, тебе в него пишут всякую хуйню типа 1> Projectname start task compile. так вот, там есть дропдаун, в котором можно выбрать Debug
>>885278
#522 #885256
>>885202
Не бывает 100% программ даже когда пишешь на Clojure, а мы тут вообще говорим про OOP язык C#.

Функциональным должно быть ядро / биз.логика, а инфраструктура может быть любой.
#523 #885278
>>885220
Круто, что полезного через него можно выудить?
>>885292
#524 #885292
>>885278
ну вот попробуй посмотреть
>>885383
#525 #885383
>>885292
Че грубишь? Я посмотрел, мало что полезного, вот и спрашиваю: может в каких-то особых кейсах, или может я не знаю каких-то инсайдов
#526 #885512
>>884903
>>884931
Спасибо анончики, самое оно что требовалось.
#527 #885846
кому нибудь доводилось ковырять вот этого пацана ↓
[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, описанной в соответствии с "ГОСТом" или как это блять правильно назвать, стандартом с++-функции?
>>885855
#528 #885855
>>885846
ну тут поц пытается нотэпад просканировать этим методом: https://www.codeproject.com/articles/716227/csharp-how-to-scan-a-process-memory. подсмотри различия чтоли
>>885861>>885883
#529 #885861
>>885855
а вот тут ньюанс, у меня нормально считывает инфу с хрома и ноутпада. думаю, есть еще какие нибудь процессы, о которых можно получить эту инфу, но я пока что не понял, по какому признаку различать такие процессы, и мне не нужно, чтобы такой признак вообще был. я хочу получить memory basic information любого процесса, но за ссылку посмотрю, мб найду что нибудь нового
>>885876
#530 #885876
>>885883
#531 #885883
>>885876
да у меня уже заработало. как оказалось, у процесса из System.Diagnostics некошерно брать дескриптор, нужно, блять, через другую pinvoke функцию (см статью вот этого анона >>885855
, спасибо кстати) взять хэндл интересующего процесса, и только потом искать MSI, ну и я структуру MEMORY_SYSTEM_INFO заколхозил, теперь она отличается от каноничной - всё, что не указатель - long. хуйня эти ваши инвоуки, вообщем потому что от них у меня горит очаг.
#532 #886063
Дорогие сосцы мойкрософта, запрашиваю ваш ответ.
Я хочу податься в веб(студентота), как у вас с этим дела?
PHP - язык нелюдей и опущенцев.
Python - язык хипстеров с подворотами.
Ruby - нет работ.
А что касательно связок Asp.net/typescript? Можно ли найти работу разбираясь с этой области? Или лучше таки PHP? Я слышал что он отмирает в угоду node.js, но всё ж таки? js очень уж нелогичный язык, мне неприятно на нем писать. А C# очень нравится, был бы рад приобщиться, но нужна сводка по работам. Живу в мухосранске и если у нас что-то есть - то только по php, так что ориентир на фриланс.
>>886137
#533 #886137
>>886063

> ruby - нет работ


сирисли?

> ориентир на фриланс


на фрилансе, насколько я знаю, тоже доминирует рнр и питоны всякие. ну, руби точно есть, насчет asp здешние товарищи убеждали, что работы хватает, но я не встречал прям большого выбора (потомушто не искал)
23 Кб, 1276x763
#534 #886457
Анон, дали курсовой по .net сделать интернет магазин.
Cтэк:
N-tier
asp MVC
autofac
EF CodeFirst

Должно быть 4 слоя:
1) Репозиторий (Абстрагирует от типа БД)?
2) Домен (Хранит сущности с помощью которых заполняется БД по средствам EFCF??)
3) Сервисы (Реализация интерфейсов репозитория??)
4) MVC(Это просто UI? БизЛог в отдельном проекте?)
Помоги пожалуйста, я все правильно понимаю или нет?
Буду искренне благодарен!
>>886476>>886488
#535 #886476
>>886457
это ты начертил мегасхемку? если нет, то даже не знаю, что это значит

mvc - слой, реагирующий на действия пользователя. тут же происходит валидация инпутов, правильное составление ответа юзеру
сервисы - и есть твоя бизнес-логика
домен - можно сказать, это набор комплексных операций с моделью/моделями
репозиторий - круд, отвязанный от конкретной базы данных
>>888285
#536 #886488
>>886457
И это блять курсовая? Ебануться, у меня диплом и того меньше.
#537 #886576
Анон, недавно портировал один проект под net45 под netcoreapp1.0, чтобы он работал в CoreCLR на дебиане. Перенёс всё это заставив проект импортировать библиотеки под dnxcore50 и ещё portable-net45+win8+wpa81. Поэтому появился вопрос. Есть одна библиотека https://www.nuget.org/packages/NAudio/ . Собирается под net35 и win8. Можно ли её будет каким-то образом использовать, чтобы всё работало и на дебиане?
Поясни, пожалуйста, за платформо-совместимость или ссылкой, чтобы это было поподробнее расписано.
#538 #887026
Что почитать про юнит тесты, чтобы научиться их писать? Много раз слышал, но сам не пользовался.
>>887034>>888113
#539 #887034
>>887026
любой говногайд в интернетах типа "как песать тесты на сешарп анлайн учебник"
#540 #887039
>>869105 (OP)
Шарящие анонычи, подскажите. Работаю сейчас в C# с Windows Forms под Visual Studio 2012. Проблема такая, есть 2 одинаковых набора всяких объектов интерфейса (надписи, групбоксы с радио-кнопками, просто кнопки), хочу их загнать в какую-то структурку, чтобы не дублировать один и тот же код с разными названиями кнопочек.
Типа есть
group1Btn1.Visible = false;
...
group2Btn1.Visible = false;

А хочу чтобы было примерно
group = group1;
group.Btn1.Visible = false;
...

Главный вопрос: как можно автоматизировать весь этот процесс замены первого варианта на второй? Или мб есть еще какие-то иные варианты для решения проблемы?
>>887072
#541 #887069
Создайте новый тред, еле этот нашел на дне.
#542 #887072
>>887039
выделяешь интерфейс -> инкапсулируешь поведение конкретных контролов
#544 #888113
>>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 жизнь не мила.

сори за неровный почерк, пишу с чучелки
#545 #888285
>>886476
Да, я рисовал. Спасибо большое!
Тред утонул или удален.
Это копия, сохраненная 17 декабря 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски