Pull to refresh
3
Send message

Metalama: праовца, аспекты приносящая

Level of difficultyMedium
Reading time8 min
Reach and readers9.6K

Метод программирования, именуемый аспектно-ориентированным, впервые явился миру в конце девяностых годов прошлого века, когда группа исследователей из Xerox PARC под руководством Грегора Кичалеса решила, что объектно-ориентированного подхода человечеству недостаточно. Они создали AspectJ — расширение для Java, призванное разрешить проблему, которую окрестили «сквозной функциональностью». Суть проблемы проста до безобразия: код логирования, обработки ошибок, проверки прав доступа и прочих служебных радостей размазывается по всему приложению, как масло по по́лу, превращая элегантную бизнес-логику в свалку повторяющихся конструкций.

Аспектно-ориентированное программирование предлагает выделить эти сквозные concerns в отдельные сущности — аспекты, которые можно применять к коду декларативно, не засоряя основную логику техническими деталями. В теории звучит как серебряная пуля. На практике AspectJ оказался инструментом, требующим от программиста понимания магических pointcut expressions и готовности смириться с тем, что код компилируется через специальный компилятор, производящий байткод, который отладить можно только с поллитрой, бубном или молитвенником.

Встречайте Metalama →

C#, Кодогенерация и DDD. Часть 2 — Получаем данные и пробуем генерировать

Level of difficultyHard
Reading time10 min
Reach and readers6.6K

Это - вторая публикация в серии DDD и кодогенерация

(первая часть, вторая часть, третья часть, четвертая часть)

В этой части мы научимся получать данные через рефлексию и Roslyn в одинаковой форме.

А атрибуты из Roslyn - как объекты.

Читать далее

C#, Кодогенерация и DDD Часть 1 — Настраиваем проект и запускаем простой кодогенератор

Level of difficultyMedium
Reading time8 min
Reach and readers14K

В этом цикле статей рассмотрим как можно легко и быстро делать на C# любые однотипные действия просто навешивая атрибуты на доменные сущности

(первая часть, вторая часть, третья часть, четвертая часть)

Читать далее

Стоит ли идти в 1С программисты в 2025 году. Прогноз развития платформы 1С на ближайшие несколько лет

Level of difficultyEasy
Reading time12 min
Reach and readers80K

Эту статью я решил написать после того, как ко мне обратились в очередной раз с вопросом, можно ли идти учиться и далее работать в 1С. Это было в комментариях под статьей «Почему я не люблю 1С», где этот вопрос вызвал активное обсуждение.

Читать далее

Способы создания экземпляра наследника класса в зависимости от данных

Level of difficultyEasy
Reading time2 min
Reach and readers2.4K

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

В голову пришло три способа организации:

Читать далее

Как стать C#-разработчиком с нуля? Бесплатная программа обучения

Level of difficultyEasy
Reading time3 min
Reach and readers98K

Если вбить слово «С# разработка» в поисковую строку, можно найти огромное количество курсов по данному направлению. Проблема в том, что все курсы являются платными и, как правило, имеют ценник в несколько десятков тысяч рублей.

Чтобы разбавить засилие платных курсов, мы подготовили для вас программу обучения «C#-разработчик с нуля», которая состоит только из бесплатных материалов.

Читать далее

Книга: «Антипаттерны SQL. Как избежать ловушек при работе с базами данных»

Reading time10 min
Reach and readers31K
image Привет, Хаброжители!

Язык SQL необходим для работы со структурированными данными. Программисты, прекрасно знающие свой любимый язык (Java, Python или Go), не могут разбираться во всем, и часто не являются экспертами в SQL. Это приводит к появлению антипаттернов — решений, которые на первый взгляд кажутся правильными, но со временем создают все больше проблем.

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

Примеры SQL-кода основаны на версии MySQL 8.0, но в тексте также упоминаются другие популярные РСУБД. В примерах кода используется Python 3.9+ или Ruby 2.7+.
Читать дальше →

Инструмент для автоматической оценки конкурса при поступлении в ВУЗы РФ

Reading time7 min
Reach and readers17K

Каждый выпускник школы сталкивается с проблемой выбора профессии и, следовательно, ВУЗа. Этот этап жизни является наиболее сложным для школьника психологически: нужно подготовиться и сдать экзамены, от которых зависит, наберут ли они проходной балл в выбранное учебное заведение. Сам процесс поступления тоже является источником стресса: новая система подачи документов не гарантирует 100% зачисление даже с необходимыми баллами. До самого последнего момента абитуриент не знает, пройдёт он или нет на бюджет в выбранных ВУЗах и решение о подаче оригиналов документов приходится принимать на основании ограниченной информации и своих собственных предположениях о дальнейшем развитии ситуации. Получается, все выпускники последние 2 месяца лета не наслаждаются заслуженным отдыхом, а всей страной играют в покер со ставками на свое дальнейшее образование!

Что можно сделать, чтобы снизить градус напряжённости для себя и/или своего ребёнка? В данной статье мы рассмотрим инструменты облегчающие и даже автоматизирующие процесс мониторинга конкурсных списков - ведь вовремя полученная информация поможет принять правильное решение в условиях всеобщей неопределенности.

Читать далее

Typeser: 1С-like ERP-конструктор на базе TypeScript

Reading time6 min
Reach and readers7K

Хотелось бы представить на суд местного сообщества недавно созданную облачную веб платформу разработанную бывшим 1с-овцем освоившим java, js, ts, react.

Интерфейсы TypeScript(*.d.ts файлы) генерируются на лету. Они актуальны и доступны в коде даже без сохранения конфигурации.

Главная фишка - есть возможность писать обработчики событий на языке TypeScript и sql код на триггеры при записи объектов. Редактор кода тоже онлайн и реализован на базе monaco-editor. В нем типизируется все: структура и типы метаданных, данные и элементы формы, события обработчиков.

Читать далее

Создание многопоточного сервера на C#

Level of difficultyEasy
Reading time10 min
Reach and readers47K

Данная статья предназначена для таких же новичков как и я. Вся информация в этой статье основывается на моем опыте создания одного единственного веб-сервера, который был создан в рамкам учебного проекта на 3 курсе по специальности 09.02.07 СПО.

Читать далее

Пара баек про IT-безопасность

Reading time4 min
Reach and readers17K

Сейчас мои продукты, написанные для Роспатента, проходят аттестацию по информационной безопасности. Этот "увлекательный и интересный" процесс побудил меня вспомнить несколько баек из моей личной практики, связанные с IT-безопасностью.

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

Да будет байка!

Шпаргалка — Как активировать лицензии 1С при помощи утилиты Ring

Reading time4 min
Reach and readers21K

Идея этого поста - шпаргалка на будущее, но я буду рад, если кому-то пригодится приведенная информация.

Если Вы читаете это, значит примерно представляете, что такое Ring. В этом посте речь только об активации лицензий. Позднее здесь я представлю ссылки на следующие шпаргалки по работе с ring-ом.

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

Стоит отметить, что в этом примере лицензии привязываются к параметрам машины!

Поехали.

Читать далее

Принципы работы IQueryable и LINQ-провайдеров данных

Reading time8 min
Reach and readers85K
Средства LINQ позволяют .Net-разработчикам единообразно работать как с коллекциями объектов в памяти, так и с объектами, хранящимися в базе данных или ином удаленном источнике. Например, для запроса десяти красных яблок из списка в памяти и из БД средствами Entity Framework мы можем использовать абсолютно идентичный код:

List<Apple> appleList; 
DbSet<Apple> appleDbSet;
var applesFromList = appleList.Where(apple => apple.Color == “red”).Take(10);
var applesFromDb = appleDbSet.Where(apple => apple.Color == “red”).Take(10);

Однако, выполняются эти запросы по-разному. В первом случае при перечислении результата с помощью foreach яблоки будут отфильтрованы с помощью заданного предиката, после чего будут взяты первые 10 из них. Во втором случае синтаксическое дерево с выражением запроса будет передано специальному LINQ-провайдеру, который транслирует его в SQL-запрос к базе данных и выполнит, после чего сформирует для 10 найденных записей объекты С# и вернет их. Обеспечить такое поведение позволяет интерфейс IQueryable<T>, предназначенный для создания LINQ-провайдеров к внешним источникам данных. Ниже мы попробуем разобраться с принципами организации и использования этого интерфейса.
Читать дальше →

Про лояльность и ЗП

Reading time4 min
Reach and readers104K

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

Почитать сказки про лояльность

Как надёжно удалить файлы и зачистить HDD/SSD

Reading time7 min
Reach and readers105K


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

Естественно, в квартире находят множество улик, позволяющих квалифицировать гражданина сразу по нескольким статьям.

В таких условиях чрезвычайно важно перед обыском надёжно удалить всю информацию с накопителей и мобильных устройств, чтобы злоумышленник не получил доступ к контактной книге, аккаунтам в социальных сетях и мессенджерах — иначе вы подставите своих товарищей и предоставите дополнительные улики следствию.
Читать дальше →

Лучше 1С может быть только 1С: Базуха

Reading time5 min
Reach and readers11K

Я уже ранее писал о том, что придумал движок, который позволяет работать с не 1С SQL-базой из клиентов, которыми являются базовые конфигурации 1С:Деньги. Думаю, это классное решение для небольших частных или малотиражных конфигураций! Я назвал его Базовый Учет или Базуха (Базовый Учет Хозяйства).

Читать далее

Убийца 1С на 1С

Reading time2 min
Reach and readers19K

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

Читать далее

Как вернуть былую славу 1С? (Make 1C Great Again)

Reading time41 min
Reach and readers54K
Сегодня компания 1С прекрасно себя чувствует — крепко удерживает лидерские позиции на рынке учетных систем СНГ, продвигает свои облачные решения, покупает новые технологии и целые компании, заключает выгодные союзы с IT-гигантами, правительство РФ включает их в перечень системообразующих компаний. Но надолго ли этот успех? Не перейдет ли в скором времени некогда успешная компания в учебники по бизнесу как яркий пример ошибок роста? И можно ли избежать возникающих проблем?

Данная статья описывает ситуацию, которая сложилась вокруг платформы 1С: Предприятие. Ведь несмотря на покупку известных веб-продуктов (Битрикс, МойСклад, Мегаплан, amoCRM, UMI и т.д.), основной доход для компании 1С уже третий десяток лет продолжают приносить именно продажи и обслуживание решений на платформе 1С: Предприятие.

Судьба предателя, угнавшего новейший МиГ-25 в Японию

Reading time9 min
Reach and readers1.5M

Сегодня в воздушном пространстве США летают около пятидесяти истребителей российского производства — от устаревших МИГ-15 и до современных МИГ-29. Большая их часть приобретена на открытом рынке после распада Советского Союза и расторжения Варшавского Договора. В советское время у американцев не было шансов приобрести наши боевые машины, хотя Штаты ради этого были готовы на все.

6 сентября 1976 года произошло ЧП: во время учебного полета на одном из дальневосточных аэродромов в Приморье, старший лейтенант Виктор Беленко поднялся в воздух на суперсовременном МИГ-25, и не вернулся на базу.

Сегодня в воздушном пространстве США
1

Information

Rating
5,312-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity