Почему сотни тысяч IT специалистов рожают мышь

Аватар пользователя maxwells demon

Предложение нарисовалось интересное и финансово выгодное. Но геморройное по обьему и взаимодействию. Думаю. Если соглашусь - не теряйте)))

В общем, есть такая контора Россельхознадзор. Так сказать уполномоченный орган по надзору за сельским хозяйством. И есть инструмент оного надзора, в просторечии "Меркурий". Официально - система "ВетИС" включающая в себя модули "Аргус", "Ассоль", "Атлас", "Веста", "ВетИс АРГ", "Гален", "Гермес", "Дюма", "Икар", "Ирина", "Меркурий", "Паспорт", "Сирано", "Тор", "Хорриот", "Цербер", "еСерт"...

Разработчиком оного кракозябра является ВНИИЗЖ. Да именно Всероссийский научно-исследовательский институт здоровья животных, ранее Научно-исследовательский ящурный институт. Наполненный одаренными, в том числе альтернативно, ящурологами IT специалистами.Теоретически идея была благая. Вывести из тени животноводство, дабы государство получило дополнительные доходы, ныне в основном оседающие в карманах хачиков и грачиков, а в упаковках перестало появляться из ниоткуда "молоко" и "мясо", по факту не имеющее отношения ни к тому, ни к другому. Плюс... Много еще благих пожеланий было, но...

Не срослось. В результате имеем написанное непальцами (это не национализм, а констатация факта использования разработчиками альтернативных частей организма при написании) нечто...

Чтобы не быть голословным приведу документ с официального сайта "Россельхознадзора". За авторством бывшего на тот момент руководителем проекта в ранге "заместителя Руководителя Россельхознадзора" знатного ящуролога  Николая Анатольевича Власова.

https://fsvps.gov.ru/news/eshhe-raz-o-registracii-ploshhadok-v-molochnom-sektore/

При чтении этого сока мозга семидесятилетнего деда волосы становятся дыбом.

у Исхаковой Равии Салимзяновны госветврача из Татарстана — 157 площадок с единственной неточностью (написала «лпх» вместо «ЛПХ») 

пишут «ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ» вместо «ООО» (при этом ЛПХ пишет аббревиатурой – т.е. правильно). Это вроде мелкая неточность, но небезобидная – таким образом излишне нагружается реестр, затрудняется фильтрация и поиск в реестре

В заключение о том, как следует заполнять данные по ЛПХ и КФХ. 

Нельзя писать: «лпх» вместо «ЛПХ».

Нельзя использовать родительный падеж: «ЛПХ Иванова Ивана Ивановича»

Нельзя не делать пробел после точки в аббревиатуре, например, нельзя писать «с.Новая Деревня» нужно писать «село Новая Деревня».

Нельзя не соблюдать правил написания ФИО: надо писать «Иванов Иван Иванович», нельзя писать: «Иванов И.И.», «ИВАНОВ И.И.», «ИВАНОВ ИВАН ИВАНОВИЧ», «Иван Иванович Иванов».

Нельзя писать «ИП КФХ Иванов Иван Иванович», «ИП/КФХ Иванов Иван Иванович», «К(Ф)Х Иванов Иван Иванович» и т.д.

Нельзя писать «КХ Иванов Иван Иванович» — крестьянское хозяйство (КХ) у нас может быть или крестьянско-фермерским (коммерческая деятельность и госрегистрация или ЛПХ – так называемая некоммерческая деятельность без госрегистрации). Соответственно не может быть «КХ Иванов Иван Иванович», а может быть или «КФХ Иванов Иван Иванович», или «ЛПХ Иванов Иван Иванович».

Я понимаю, что престарелому главному ящурологу, по недоразумению поставленному рулить айтишизацией невдомёк, что за время написания этого сока мозга можно было десять раз составить список из всех возможных организационных форм, вбить их в справочник, прикрепить его к окну ввода и забыть о "неправильностях" как о страшном сне. Это самое простое решение. Можно вообще подгружать все данные по запросу через ИНН, не заморачиваясь вообще с вводом, можно обрабатывать данные по лостфокусу с возвратом ошибки, можно...

Но о чём можно говорить с автором текста утверждающего, что капс в ФИО перегружает БАЗУ и затрудняет поиск в РЕЕСТРЕ. Это клиника. Это... Даже не незнание "математиком" что такое + и зачем он нужен, это ещё хуже. 

И в таком ключе построена вся "система". Извините, но из гавна и палок, через жопу, в строгом соответствии с руководящими указаниями. Проверки валидности? А что это такое, у нас в техзадании такого нет! Ещё бы оно там было, если ящуролога его писавшего - пятьдесят лет назад этому не учили! Подключение к радиоле не потребовал реализовывать - уже хорошо. 

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

https://fsvps.gov.ru/news/bolee-2-7-t-molochnoj-produkcii-iz-neizvestnogo-syrja-vyjavleno-v-tverskoj-oblasti-s-pomoshhju-komponenta-merkurij/

А показывающие только ущербность системы.

Уполномоченное лицо юридического лица ООО «Макларен», осуществляющего деятельность на территории города Твери, оформило транзакцию «производство/переработка» по которой из сырья «молоко пастеризованное ПФ м.д.ж. 3,5%-6%» объемом 2,7 кг были выработаны «нормализованные сливки» объемом 300 кг и «молоко обезжиренное коровье пастеризованное» объемом более 2,5 т.

Объем выработанной продукции превышает объем использованного сырья на 2,7 т, следовательно, происхождение части сырья не подтверждено никакими документами в компоненте «Меркурий» ФГИС «ВетИС».

Далее данная продукция была использована в качестве сырья при производстве мягкого сыра, в том числе с перцем чили и паприкой.

Что по факту произошло. В "Меркурии" каждая партия идёт по своему документу пока не переработается. Проще говоря сдаёт Сидор Хренников 2,7кг молока от своей коровы, на эти 2.7кг создается сопроводительный документ. Собрал скупщик с тысячи Хренниковых молоко - у него тысяча документов. При этом молоко по факту болтается в бочке давно перемешавшись, а документов по прежнему тысяча. И "гасить" их передавая в переработку надо ПО ОДНОМУ. Тверской "МакларИн" (привет безграмотным пресс-секретарям) перерабатывает сотни тонн молока В ДЕНЬ. Соответственно списывает подобные документы даже не тысячами. А контроля за списанием по весу в "Меркурии" нет. В смысле - как в любой нормальной системе, не дающей делать что-то из ничего. То есть по факту - девочка в запарке вместо документа на 2.7 тонн списала документ на 2.7кг. И система об этом даже не вякнула. Потому как системе по...й. А потом доблестные контролирующие нашли и сделали атата, с наложением штрафа и передачей материала в следком. Вот там матерились поди, когда разобрались.

В результате не "Макларин", а другой производитель предлагает написать прокладку между "ВетИС" и их учётом, дабы забыть о существовании сумрачных владимирских гениев как о страшном сне...

Задача в принципе решаемая. И дающая маслице к хлебу на порядок щедрее, чем катание курьером по городу))).  Вроде как грешно хаять дающих тебе возможность неплохо жить "власовых", под руководством которых изваяны мертворожденные "системы", "брекотиных", навпихивавших ораклообразных сапов, а после введения санкций сложивших "лапки" и ушедших в пропагандисты. Но блин...

Ягодкой на торт. Два. Два человека по моей оценке требуется на проект. Сроком на три месяца. При том, что не всё время они будут заняты именно на этом проекте. Сотни, если не тысячи человек годами ваяли недоразумение, которое необходимо привести в употребимый вид. Это к вопросу нехватки IT кадров.

Авторство: 
Авторская работа / переводика
Комментарий автора: 

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

Когда основным критерием информатизации является полнота освоения выделенных средств...

Число айтишников может увеличиваться бесконечно, а шанс написать что-то "отечественное" такой же, как у равного количество обезьян с пишущими машинками на повторение "Войны и мира".

Комментарий редакции раздела Идеи для России

Реально, что за знания у этих спецов?

Комментарии

Аватар пользователя Hanfis
Hanfis(3 года 7 месяцев)

Думаю. Если соглашусь

Соглашайся. Только соломки щедро подстели, чтобы потом крайним не сделали. 

Два человека по моей оценке требуется на проект

Минимум пятеро. И на полгода. Иначе никак.

Аватар пользователя maxwells demon
maxwells demon(8 лет 7 месяцев)

Поскольку интерфейса оператора не надо - мордодел из стандартной тройки выпадает. Если мотористу с сиквельщиком всучивать напарников - кпд падает до околонулевой отметки. А ТЗ им я сам могу изваять. Так что два.  Не впервой слона рожать, шаблоны есть. Естественно, с заказчика будет запрошено 1 сентября. Три месяца это нижняя граница торга, если быстрее - идите за амбар.

P.S. Да, падать спиной на колья доводилось, но за предложение постелить соломки - спасибо)))

Аватар пользователя Слово 580416
Слово 580416(4 месяца 1 неделя)

Во времена моей активной работы с БД, а было это тому как 40 лет назад, уже существовали продвинутые системы, типа Clarion, которые исключали возможность подобных разночтений и ошибок при вводе данных. Даже программировать при создании профильных СУБД не надо было... Новая эффективная капиталистическая РФ - в полный рост... 

Аватар пользователя абра
абра(7 лет 3 месяца)

+

Аватар пользователя Alexish
Alexish(10 лет 5 месяцев)

Поскольку интерфейса оператора не надо - мордодел из стандартной тройки выпадает

Я так понял, что там с удобством интерфейса куча проблем... Не?

Собственно имею опыт фронтенда на реакте и чистом  js, бакэнда на ноде и го.

Про с, с++, драйверы ядра и микроконтроллеры без ос и с frerrtos и не говорю как само собой..

Но так и не понял, что же хочет автор? На каком стеке и как оно должно по его мнению работать?

И главный вопрос - как прокладка может взаимодействовать с системой?

Аватар пользователя е2е4
е2е4(4 месяца 2 недели)

В госорганах нет возможности создать центрального разработчика? Отдача на работу отраслевым гарантирует качество на уровне прежних самописок и постоянную неувязку форматов, форм и данных. Учет мат.активов по одному лекалу с уточнением по отраслям.

Аватар пользователя Слово 580416
Слово 580416(4 месяца 1 неделя)

Конечно же нет )))) А бабки свои отдать чужим? На енто я могу пойтить только, если буду посредничать с западной конторой со всеми вытекающими)))))))

Аватар пользователя Спящий медведь

  А бабки свои отдать чужим? 

Ну вот, все секретные козыри взяли и выложили. ))) 

Аватар пользователя e-Jinn
e-Jinn(5 лет 4 месяца)

Два человека на три месяца? Ставьте 20 на год. Так как госструктура, то оракл надо менять (на пострес?). Два человека с этим не справятся

Аватар пользователя Хитрый Лис
Хитрый Лис(9 лет 9 месяцев)

А-ха-ха, если такие же как в описании автора, то да, не справятся. А вот нормальным даже много. 3 месяца это с вылизыванием. Задача то плевая на самом деле, больше времени уйдет на всякие согласования\коррекции с заказчиком.
ГЫ: считать себя IT специалистом и быть программером, суть разные вещи. Большинство ИТшников в программировании как свинья в балете. Да и многие типа программеры, таковыми не являются по сути. Работают по шаблону, потому и результат соответствующий. Дерь...вый, скажем откровенно.
Как там сказано, про гениального скульптора -  берет глыбу мрамора и отсекает все лишнее. Так и программер (если он настоящий) - постановка задачи уже скелет на который навешивается все остальное. Так шта....

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Переход на постгрес, это жопа, много нюансов, в том числе с администрированием

Аватар пользователя абра
абра(7 лет 3 месяца)

Всем вам - настоящих подавай!

А где их взять-то? Настоящие - работой уже заняты...

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

1. на чём писать будешь ?

2. на Хабре на днях писали что число вопросов на StackOwerflow начало падать с появление чатгопоты и уже упало на 67%,   реально помогает быстрее решать мелкие вопросы

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

В данном случае ЧГ выступает в роли продвинутого поисковика, оно же на SO и обучалось. Но если вопрос будет не совсем тривиальным, возможно ответ будет кривой - ИИ выдаст внешне правдоподобную галлюцинацию

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

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

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

Чатгопота - не поисковик,  в нём нет инфы,  в нём только нейроны (токены) и веса связи с другими нейронами,  всё как в человеческом мозге

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Нетривиальные вопросы возникают, когда делаешь что-то оригинальное. При этом иногда выходишь на ошибки в стандартных инструментах ПО, приходится искать пути обхода, собственно в таких случаях я и лезу на СО. Достаточно часто ответов там просто нет, приходится самому колупать проблемку. Чем мне поможет ЧГ в таких случаях? Выдаст набор общих фраз

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

ну давай проверим,  пиши нетривиальный вопрос

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Вы большой любитель примеров я вижу.

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

Ну ок, вот традиционный вопрос, кстати не сложный: как реализовать универсальную схему переопределения аксессоров свойств средствами C# (должно работать независимо от стандартного механизма наследования)?  (это было нужно для реализации самописной ОРМ системы)

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

ОРМ как Вьетнам (с) . переходите на даппер )

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Вы мне про пользование чужим велосипедом, а я про изобретение своего, что является нетривиальной задачей

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

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

пожалуй единственное что в нём "плохо" что он прибит к бд гвоздями.  но часто ли меняют бд 

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Да нет, вы не врубаетесь. Даппер этот - EF для бедных, а я изобретаю велосипед аналог 1С,  с тяжелыми классами данных (унифицированный функционал сидит внутре). Зачем? ну хобби такое. 

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

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

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Вот как вы думаете, как быстро вы сможете на EF или даппере  сделать аналог типовой 1с конфигурации? Микросервис какой-нибудь, это на здоровье. Но функционал, который простой 1с-ник напишет за полгода, имхо, повеситесь писать. А он пишет кривыми ручонками, потом уходит в даль светлую, но сменщик продолжает влегкую его скорбный труд. Потому что используется специализированный состав классов данных с унифицированной бизнес-логикой. 

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

с 1С не сталкивался , только Битриксом зацепило. 

если есть маленькая часть, как пример , что бы оценить задачу , то наверное смог бы как то ответить. 

не могу понять , какую боль вы пытаетесь решить своим ОРМ.

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Да просто так, развлекаюсь, обобщаю жизненный опыт. Имхо и 1с и EF совершенно ужасны. Но тут, как говориться, критикуешь - предлагай. Вот и леплю в фоновом режиме чего-то. Но все технические моменты на практике давно обкатаны.

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

ок   удачи .

я в генерации столкнулся  с проблемой отладки и профилирования в частности. как трассировать скрытый код мне было не особо понятно.

а по поводу конфиги 1с можете сообщением , а не тут , прислать.  как битрикс осёдлывают понятно.  а как ОРМ поможет в работе с 1с ...тут нужна фактура.

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Да нет, мы не понимает друг-друга. 1с - эта сама по себе ORM система. А я делаю свой фреймворк, альтернативу для бедных, тягая с мира по нитке идеи. Сама по себе 1с мне не нужна, никакой интеграции с ней я не планирую в принципе. Хотя у меня был знакомый 1с-ник, который делал на коленке (вроде в Delphi) маппинг к стандартной базе 1с. Говорил, что достигал чудовищной производительности. А я вот год уже тыркаюсь, через пару месяцев планирую выложить в Git и может статью напишу на Хабре. Тогда вам пришлю ссылку, может будет понятней о чем речь. Но там еще минимум на год работы, чтобы можно было делать что-то содержательное

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

а, просто новая орм, заместо 1с. 

ну ладно , дорогу осилит идущий.

но так что если , рекомендую прочитать статью  18 летней давности ОРМ как вьетнам. может пригодится 

https://web.archive.org/web/20220823105749/http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Я почитаю, спасибо. Разумеется любая технология имеет ограничения. Но вот 1с живет и здравствует (в силу унификации базовых объектных сущностей никакого Вьетнама не наблюдается).  Хочу отметить, что буква R в моем случае не особо важна. Я вообще не включаю поставщика данных во фреймворк, определяя только интерфейс связи с ним (этот интерфейс определен именно логикой функционирования стандартных объектов данных). Я сделаю конечно несколько типовых поставщиков данных, но база может быть и не реляционной

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

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

Аватар пользователя Andrey Svetlov
Andrey Svetlov(4 года 3 месяца)

Вся реклама на т. н. ИИ намерена убедить людей, что не надо думать о собственном велосипеде, надо думать, где заказать готовый велосипед и как употреблять, не больше. Это псих манипуляция.
ИИ статистическое сравнение с решением той самой задачи в прошлом. Если вы делаете новое, вы ставите задачу, для которой нет тренировочных данных - и ИИ не сможет найти подобный ответ к данным, которых не было. Это микак не ИИ.
Так же есть проблема с новостями, модель знает даннные до последней актуализации модели, скажем 7 месяцев назад, новости за последних 7 месяацев ИИ не знает. Цикл обновлений сложная и затратная задача - надо мощности и много энергии. Разработчик должен продумать, какие задачи можно решить такой технологией а какие нет - универсальность мозга человека отсутствует.

Напр. на переводы на русский есть массив данных, на которых можно приучить алгоритм, как правильно переводить а в новаторской работе с целей сделать свой велосипед таких данных нет.
Ещё одна проблема - ваши запросы записывают и составят псих отпечаток вашей мысли. Этот отпечаток не только ваша инвестиция в чужую систему, но и своего рода идентификация. Получится массив данных о вашем способе мышления и тот, кто имеет доступ к такому массиву данных, таким способом узнает, где слабые стороны вашей мысли и как вас оболгать. Вы сдаёте свои тайные приёмы, все ваши ошибки и слабости. Вы не сможете годами держать самоконтроль, есть мотивация задавать вопросы искренне. Ваши запросы слишком качественно раскрывают ваш способ мышления. Всю прибыль из возможной уникальности вашего мышления заберёт бесплатно владелец сервиса. Владелец сервиса после неких лет будет иметь стратегическую выгоду и станет вашим властителем...
Таким способом использование ИИ безопасно только с приватной офлайн моделей. Раскрытие приватных данных и мыслей проблема, которая редуцирует использование технологии.
Ещё одна проблема - модель была обучена на данных, которыми владеет владелец сервиса. А если он подбросил в массив данных пропаганду, то ИИ будет отвечать не по правде а по ложных данных. Но у вас не будет шанс раскрыть такую ложь, у вас не будет возможности отследить источник информации. Отрезание вас от источника информации стратегическая цель этой технологии. Вы привыкнете, поверите а проверить вам не будет возможно.

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Это все здравые мысли, их бы еще в головы ответственных политиков вложить, если еще такие остались. Технология ИИ потенциально опасна, нужны мировые ограничительные меры. Так нет, запускают сейчас гонку ИИ вооружений. А кончится все это печально. Человеческая цивилизация развивается путем наращивания суммы технологий и совершенствования ОС, которая вкладывается в головы от рождения, для управления этим технологическим зоопарком. А с появлением ИИ ситуация изменилась: нам рассказывают байки, что люди станут с помощью ИИ творческими суперменами, а реальность может быть неприглядной - технологии выйдут на потребительское плато, ИИ полностью отрежет людей от управления и добро пожаловать в Матрицу. И все это пройдет на автомате, безо всякого злокозненного дирижирующего интеллекта (человеческого или нет), просто нашу цивилизацию поразит техно-вирус.

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

1. Использование DynamicObject и динамических типов

Класс DynamicObject предоставляет возможность динамически перехватывать вызовы к свойствам и методам объекта. Путем переопределения методов TryGetMember и TrySetMember вы можете контролировать доступ к свойствам.


csharp

1using System.Dynamic;
2using System.Collections.Generic;
3
4public class DynamicEntity : DynamicObject
5{
6    private Dictionary<string, object> _properties = new Dictionary<string, object>();
7
8    public override bool TryGetMember(GetMemberBinder binder, out object result)
9    {
10        // Логика получения значения свойства
11        if (_properties.ContainsKey(binder.Name))
12        {
13            result = _properties[binder.Name];
14            // Дополнительная логика для ORM
15            return true;
16        }
17        else
18        {
19            result = null;
20            return false;
21        }
22    }
23
24    public override bool TrySetMember(SetMemberBinder binder, object value)
25    {
26        // Логика установки значения свойства
27        _properties[binder.Name] = value;
28        // Дополнительная логика для ORM
29        return true;
30    }
31}
32

Использование:


csharp

1dynamic entity = new DynamicEntity();
2entity.Name = "Иван";
3Console.WriteLine(entity.Name);
4

Этот подход позволяет динамически обрабатывать любые свойства объекта без необходимости наследования или явного определения свойств.

2. Использование Castle DynamicProxy для создания прокси-объектов

Библиотека Castle DynamicProxy позволяет создавать прокси-объекты, которые перехватывают вызовы к методам и свойствам. Это позволяет внедрять дополнительную логику при доступе к свойствам.


csharp

1using Castle.DynamicProxy;
2
3public class PropertyInterceptor : IInterceptor
4{
5    public void Intercept(IInvocation invocation)
6    {
7        // Логика перед вызовом метода/свойства
8        Console.WriteLine($"Доступ к {invocation.Method.Name}");
9
10        invocation.Proceed(); // Вызов оригинального метода/свойства
11
12        // Логика после вызова метода/свойства
13    }
14}
15

Создание прокси:


csharp

1var proxyGenerator = new ProxyGenerator();
2var options = new ProxyGenerationOptions();
3
4var myClassProxy = proxyGenerator.CreateClassProxy<MyClass>(options, new PropertyInterceptor());
5myClassProxy.Name = "Иван";
6Console.WriteLine(myClassProxy.Name);
7

3. Использование IL Weaving с помощью Fody или PostSharp

Инструменты IL Weaving позволяют модифицировать промежуточный язык (IL) во время компиляции, добавляя необходимую логику к аксессорам свойств.

Пример с использованием PostSharp:

csharp
1using PostSharp.Aspects;
2using System;
3
4[Serializable]
5public class PropertyInterceptorAttribute : OnMethodBoundaryAspect
6{
7    public override void OnEntry(MethodExecutionArgs args)
8    {
9        Console.WriteLine($"Вход в {args.Method.Name}");
10        // Логика перед доступом к свойству
11    }
12
13    public override void OnExit(MethodExecutionArgs args)
14    {
15        Console.WriteLine($"Выход из {args.Method.Name}");
16        // Логика после доступа к свойству
17    }
18}
19
20public class MyClass
21{
22    [PropertyInterceptor]
23    public string Name { get; set; }
24}
25

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

4. Использование выражений и рефлексии

Вы можете использовать выражения (Expression Trees) и рефлексию для динамического создания доступа к свойствам. Это позволяет создавать универсальные методы для доступа и изменения свойств объектов.

csharp
1using System;
2using System.Linq.Expressions;
3using System.Reflection;
4
5public static class PropertyAccessor
6{
7    public static Action<T, object> CreateSetter<T>(string propertyName)
8    {
9        var targetExp = Expression.Parameter(typeof(T), "target");
10        var valueExp = Expression.Parameter(typeof(object), "value");
11
12        var property = typeof(T).GetProperty(propertyName);
13        var propertyExp = Expression.Property(targetExp, property);
14
15        var assignExp = Expression.Assign(propertyExp, Expression.Convert(valueExp, property.PropertyType));
16
17        return Expression.Lambda<Action<T, object>>(assignExp, targetExp, valueExp).Compile();
18    }
19
20    public static Func<T, object> CreateGetter<T>(string propertyName)
21    {
22        var targetExp = Expression.Parameter(typeof(T), "target");
23        var property = typeof(T).GetProperty(propertyName);
24        var propertyExp = Expression.Property(targetExp, property);
25
26        return Expression.Lambda<Func<T, object>>(Expression.Convert(propertyExp, typeof(object)), targetExp).Compile();
27    }
28}
29

Использование:

csharp
1var setter = PropertyAccessor.CreateSetter<MyClass>("Name");
2var getter = PropertyAccessor.CreateGetter<MyClass>("Name");
3
4var obj = new MyClass();
5setter(obj, "Иван");
6Console.WriteLine(getter(obj));
7

5. Использование TypeDescriptor и динамического расширения свойств

С помощью TypeDescriptor можно добавлять свойства к существующим классам во время выполнения.

csharp
1using System;
2using System.ComponentModel;
3
4TypeDescriptor.AddProvider(new TypeDescriptionProviderExtension(), typeof(MyClass));
5
6public class TypeDescriptionProviderExtension : TypeDescriptionProvider
7{
8    // Реализация методов для добавления свойств
9}
10

Однако этот подход более сложен и требует подробной реализации TypeDescriptionProvider.

Заключение

Каждый из представленных методов имеет свои преимущества и ограничения. Если вам нужна гибкость и вы хотите полностью контролировать доступ к свойствам без использования наследования, использование DynamicObject или динамических прокси через Castle DynamicProxy может быть наилучшим решением. Если вы готовы использовать сторонние инструменты и хотите максимально прозрачную для разработчиков реализацию, IL Weaving с помощью PostSharp или Fody будет эффективным выбором.

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

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

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

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

это был ChatGPT O1 Preview - самый свежий, умный и дорогой ИИ

Аватар пользователя sergiy
sergiy(2 года 2 дня)

20 у.е. в месяц, ну и плюс заморочки с ВиПиэН. Ну и заплатить тоже надо уметь.

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

Я задаю вопросы через сайт-посредник, там впн не нужен, там разные ИИ на выбор, есть и бесплатные, а платные оплачиваются повопросно, закинув предварительно 10 баксов на счёт.     Beta.theb.ai 

Аватар пользователя sergiy
sergiy(2 года 2 дня)

Ну да, есть и такие варианты. Это попроще чем то что у меня.
https://nevi.ai/ это похожее на вашу, там минимальный тариф как я помню еще меньше. Там еще есть Мидджорнери для картинок как альтернатива ЧатЖПТ, может оно даже лучше, но особых хороших результатов я не видел.
Зато у меня при регистрации напрямую на ЧатЖПТ практически безлимит, но пока я его испытываю, практическя ценность низкая, изучаю. Кое что радует, но многое огорчает. Ограниченные возможности, - это одно, и то что он уверенно выдает ложь за правду, это конечно коробит всю полезность системы.

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

там где я написал - чатгопота версии 3.5 полностью бесплатен,    многие вопросы с ним решаю,   а платные версии чатгопоты использую для серьёзных и сложных вопросов

Аватар пользователя sergiy
sergiy(2 года 2 дня)

3.5 вообще сам по себе бесплатный. 4о и о1 платные, если вопросов или картинок надо в день много. На пять наверное вопросов (зависит от их объема) и (около того, не помню точно) три картинки в день делает он бесплатно, дальше плати или перейдешь на 3.5.

Интересно какие вы серьезные и сложные вопросы используете.. Задаешь ему серьезный вопрос, а он врет на ровном месте.. Но в принципе инструмент рабочий. 

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

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

Аватар пользователя Andrey Svetlov
Andrey Svetlov(4 года 3 месяца)

Если что, я посмотрю то самое на DeepSeek - это самый свежий, умный ИИ, который 110 раз дешевле американского.
https://deepseek.me/chat

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

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

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

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

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

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

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

если речь про музыку, то мне результат понравился,  я музыкой тоже давно увлекаюсь,  ещё на спектруме в музыкальных редакторах начинал делать,  потом пару песен в студии записал и несколько дома,   но на это уходили ДНИ!     а сейчас я сочинил текст песни, ввёл нужный стиль и через 10 секунд готово - и музыка и спето,   остаётся скачать и пройтись компрессором чтоб громкость подравнять,  вот одна из последних про утилизационный сбор на автомобили (сатирическая) - https://aftershock.news/?q=node/1457747

Аватар пользователя CatOwner
CatOwner(7 лет 7 месяцев)

Да мы уже пересекались по теме ИИ музыки. Видел ваши примеры. Мне не нравится именно унифицированность ИИ звучания, имхо, это как фастфуд. Но не все гурманы

Аватар пользователя DjSens
DjSens(6 лет 8 месяцев)

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

да и сами разрабы на месте не сидят, за 2024 год три раза крупно обновляли улучшали свой софт на сайте suno.com

я такую музыку сделать не смогу,  слишком сложно для меня,   и спеть так хорошо не смогу,       делаю не на продажу, а для себя, для души

Аватар пользователя Dreka
Dreka(9 лет 2 месяца)

можно было и свернуть .

привет скорость  Expression.Lambda :))

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

про чатжпт было предсказуемо

Страницы