Какое отношение это имеет к разведке? Элементарные действия вроде использования одноразовых симок и «птичьего языка» сводят к нулю ценность этой системы против злоумышленников. Зато эффективно против людей, которые ничего плохого не замышляют, и, следовательно, не скрываются.
Ну как минимум есть разница в работе исполнительной и судебной власти в России и США, и разница в отношении государства к человеку. При чем здесь пропаганда и информационная война я не совсем понимаю. Проверять достоверность утверждений и контекст докладов ведомств США не очень хочется, так что позвольте с вами не начинать об этом спор.
Это будет использоваться для поиска и устранения покушающихся на государственный строй. Ну и плюс один источник информации обо всех для имеющих власть и деньги.
> Подобными вещами занимаются правительства всех стран и видимо это объективная реальность с которую нужно воспринимать.
Разница в мотивации и общем уровне «дозволенности» для властей. Есть большая разница между адресной слежкой по решению суда, и слежкой за всеми без разбора гражданами. Это просто плевок в лицо правам человека.
Это все хорошо, но как же инвалидация кеша? При инкапсуляции кеша за интерфейсом репозитория есть хотя бы шанс прозрачно его инвалидировать при вызове метода записи. При размазывании кеширования по слою бизнес-логики это будет кошмар.
На одном конце спектра — явные intention-revealing методы навроде GetActiveCustomers, GetPendingBills, и все такое. Красиво, явно, читабельно, внутри максимально заоптимизировано, ничего никуда не течет. Но — количество таких методов растет как комбинация всех вариантов поиска/фильтрации (а у нас еще есть сортировки, группировки и агрегаты), а если какого-то метода недодали, то придется использовать локальную обработку на сервере со всеми вытекающими.
Наверное, лучше всего использовать эти методы и возвращать из них IQueryable<T>, но использовать его только для гридов или OData, а не для бизнес-логики.
Ну так если представить, что httpclient — это интерфейс репозитория, то все так и получается — внутри добавлена цепочка миддлвеа, добавляющая функциональность без изменения интерфейса.
Карали именно за то, что ты «очень богатый». Что для батрака значило «имеешь какое-нибудь хозяйство». Потому что батраки — это не бедные угнетаемые барином-кровопийцей добряки (как пишут в детских книжках), а лентяи, тунеядцы и алкаши. И по сей день ничего не изменилось, ничегошеньки, любой подтвердит, кто знаком хотя бы по рассказам с сельским бытом. Потому что кто сам поднял свое хозяйство, никогда не пойдет забирать соседское, зато всякие обиженные злыми помещиками любят рассказывать, что им мешает кулаки, дожди, жара, америка и т.п. Хотя на самом деле мешает залитая с утра рюмашка.
Лично я являюсь противником generic CRUD репозиториев и предпочитаю создавать бизнес методы в репозитории, например FindAllActiveCustomers.
Я понимаю, что в этом случае часть бизнес логики уезжает в репозиторий, но, на мой взгляд, это лучше, чем ad-hoc linq запросы в бизнес методах. К тому же, есть вероятность, что сложная выборка переедет в базу, и лучше инкапсулировать ее в репозитории. Да и тесты писать проще, т.к. не нужно мокать данные так, чтобы не обрезало фильтром.
Некая путаница возникает из-за того, что есть два смысла "репозитория" — как интерфейс для доступа к бизнес объектам и как реализация этого интерфейса при помощи, к примеру, EF. И если запихивать кеширование и аудит в реализацию вперемешку с доступом к данным — это, очевидно, плохая идея, то сделать, например, кеширующий или логирующий прокси репозитория — это нормально, как по мне.
Проблем с тестированием чего?
С тестированием бизнес логики нет проблем — код работы с состоянием вынесен в репозиторий, получаются практически stateless сервисы.
С тестированием репозитория — обычно тесты на репозиторий не пишу, т.к. код типовой и использует ORM.
Для меня паттерн "репозиторий" выполняет две функции:
Отделяет код работы с внешним состоянием (хранилищем, кэшем) от бизнес-логики (я предпочитаю SOA и anemic model), позволяя писать тесты с моками.
Инкапсулирует код работы с данными, который потенциально может изменить место выполнения: например, был LINQ-запрос, стала table function, было ORM-сохранение, стала хранимая процедура.
Не всех евреев, а только небольшой народности, которая имеет подтвержденный повышенный IQ (относительно современных людей). И вдобавок к этому повышенную вероятность генетических болезней.
>> Например жил был вид, и вот у особи нового поколения выросла острота зрения как днем так и ночью, стал лучше видеть, больше кушать, меньше хищникам попадаться, чем это не положительное изменение?
В реальных экосистемах это вызовет резкое (в эволюционных масштабах) изменение условий в популяции хищников, которые питаются этим видом. Что приведет к их совершенствованию и уравниванию в возможностях с жертвой. Это т.н. гонка вооружений.
Фрилансеров не хотят брать, потому что со стороны это выглядит как шаг назад. И работодатель считает, что причина в том, что человек «не справился», другими словами, плохой работник.
Практически все пункты (кроме первого) применимы и к обычным людям, меняющим работу.
И, традиционно для рекрутеров, отношение к соискателю как к «просящему», и, следовательно, обязанному идти на уступки и унижаться перед работодателем ради потенциальной работы.
>> Раз атеист.значит не мракобес!
К сожалению, мракобесов полно и среди атеистов. Тут я с вами полностью согласен. ГМО, гороскопы, гомеопатия (и это только на букву «Г»). Люди хотят легких ответов, вместо правильных.
Не совсем так. Есть определенное состояние, определяемое набором симптомов. Обнаруживая этот набор у человека, вы ставите ему диагноз. Пока ничего не говорит о том, испытывает ли человек страдания. При многих психиатрических болезнях сам человек вообще не только не страдает, но даже и наоборот. Например, при алкоголизме. Зато страдают окружающие. При любви никто не страдает — поэтому это не болезнь, но симптомы состояния есть.
>> Я не первый раз встречаю подростков с гуглом головного мозга — как раз позиции отказа от применения своих когнитивных способностей к более сложным вещам в силу того что гугл все знает и помнит.
Ну кто знает, к чему это в итоге приведет — не к качественному ли переходу в обработке информации человеком?
> Подобными вещами занимаются правительства всех стран и видимо это объективная реальность с которую нужно воспринимать.
Разница в мотивации и общем уровне «дозволенности» для властей. Есть большая разница между адресной слежкой по решению суда, и слежкой за всеми без разбора гражданами. Это просто плевок в лицо правам человека.
Это все хорошо, но как же инвалидация кеша? При инкапсуляции кеша за интерфейсом репозитория есть хотя бы шанс прозрачно его инвалидировать при вызове метода записи. При размазывании кеширования по слою бизнес-логики это будет кошмар.
Наверное, лучше всего использовать эти методы и возвращать из них
IQueryable<T>, но использовать его только для гридов или OData, а не для бизнес-логики.Ну так если представить, что httpclient — это интерфейс репозитория, то все так и получается — внутри добавлена цепочка миддлвеа, добавляющая функциональность без изменения интерфейса.
Лично я являюсь противником generic CRUD репозиториев и предпочитаю создавать бизнес методы в репозитории, например FindAllActiveCustomers.
Я понимаю, что в этом случае часть бизнес логики уезжает в репозиторий, но, на мой взгляд, это лучше, чем ad-hoc linq запросы в бизнес методах. К тому же, есть вероятность, что сложная выборка переедет в базу, и лучше инкапсулировать ее в репозитории. Да и тесты писать проще, т.к. не нужно мокать данные так, чтобы не обрезало фильтром.
Некая путаница возникает из-за того, что есть два смысла "репозитория" — как интерфейс для доступа к бизнес объектам и как реализация этого интерфейса при помощи, к примеру, EF. И если запихивать кеширование и аудит в реализацию вперемешку с доступом к данным — это, очевидно, плохая идея, то сделать, например, кеширующий или логирующий прокси репозитория — это нормально, как по мне.
Проблем с тестированием чего?
С тестированием бизнес логики нет проблем — код работы с состоянием вынесен в репозиторий, получаются практически stateless сервисы.
С тестированием репозитория — обычно тесты на репозиторий не пишу, т.к. код типовой и использует ORM.
Для меня паттерн "репозиторий" выполняет две функции:
В реальных экосистемах это вызовет резкое (в эволюционных масштабах) изменение условий в популяции хищников, которые питаются этим видом. Что приведет к их совершенствованию и уравниванию в возможностях с жертвой. Это т.н. гонка вооружений.
Практически все пункты (кроме первого) применимы и к обычным людям, меняющим работу.
И, традиционно для рекрутеров, отношение к соискателю как к «просящему», и, следовательно, обязанному идти на уступки и унижаться перед работодателем ради потенциальной работы.
К сожалению, мракобесов полно и среди атеистов. Тут я с вами полностью согласен. ГМО, гороскопы, гомеопатия (и это только на букву «Г»). Люди хотят легких ответов, вместо правильных.
Ну кто знает, к чему это в итоге приведет — не к качественному ли переходу в обработке информации человеком?