Как стать автором
Обновить
83.97
Рейтинг
Сначала показывать

Загадочный EF Core, или Как написать свое расширение

Блог компании CUSTIS .NET *
✏️ Технотекст 2022

В EF Core много полезных фич по работе с базами данных, но что, если этих возможностей не хватает? Я был удивлен, когда узнал, что фреймворк из коробки не умеет создавать вьюшки и отслеживать изменения их исходного кода. А что, если нам нужны не только вьюшки, но еще и синонимы, гранты и DB link? При этом мы хотим видеть их как на производственной БД, так и в интеграционных тестах! В посте будет инфа про загадочный внутренний мир фреймворка: про ключевые интерфейсы, отвечающие за генерацию и применение миграций, про то, как можно подменить эти интерфейсы, и, самое главное, почему тут не поможет контейнер, создаваемый в Startup. Также поговорим про основные объекты EF Core: что такое модель и зачем нужен снепшот? Из чего состоит миграция и зачем нужно транслировать операции в SQL?

Пост будет интересен как тем разрабам, которые столкнулись с задачами создания и обновления вьюх, синонимов и других SQL-объектов (они узнают про наш пакет, позволяющий закрыть эти вопросы), так и тем, кто хочет написать свое расширение (они узнают про подмену сервисов). Если Вы хотите, чтобы мир EF Core стал для вас менее загадочным, но ничуть не менее интересным, добро пожаловать под кат.

Читать далее →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.1K
Комментарии 1

Новости

Наставничество: как я с этим жил

Блог компании CUSTIS Учебный процесс в IT Управление персоналом *

Меня зовут Роман, я ведущий специалист по обеспечению качества ПО. Сегодня я поделюсь своим опытом наставничества. Этот рассказ не инструкция по применению, и здесь вы не получите конкретный алгоритм. Но это success-story для вдохновения, мой личный опыт и мысли, которые могут быть полезными, если вам представится возможность стать наставником.

Читать далее →
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.5K
Комментарии 0

Играть в работу: адаптацию в компании мы начинаем с настольной игры

Блог компании CUSTIS Управление персоналом *

Что чувствует ваш новый коллега в свой первый рабочий день? Он может испытывать целый букет эмоций, но одно можем сказать наверняка: у него много вопросов! Кого и как зовут, чем занимаются разные отделы, каковы принципы работы в компании. Как всё устроено?

Постепенно он сможет с этим разобраться, и такой процесс называют адаптацией. Она нужна каждому, кто оказался в новой команде, каким бы крутым специалистом он ни был.

Читать далее →
Всего голосов 8: ↑5 и ↓3 +2
Просмотры 2K
Комментарии 16

Между небом и землей: как совмещать работу в ИТ и учебу на пилота

Блог компании CUSTIS Карьера в IT-индустрии Читальный зал

Меня зовут Игорь, мне 34 года. Я разработчик и будущий летчик. Работаю в компании CUSTIS и при этом студент-первокурсник Якутского авиационного технического училища. Мой процесс поступления растянулся на три года, но я не потерял мотивацию, не сдался и всё же сумел доказать самому себе, что возможно всё — было бы желание!

В своей статье расскажу, как пришел в ИТ-сферу, как здесь развивался, почему внезапно принял решение снова пойти учиться, но совсем по другому профилю. А еще: как бесплатно получить профессию летчика, как выбрать, куда именно поступать и как подготовиться к экзаменам, а главное — как успевать совмещать всё это с разработкой программ?

Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 2.1K
Комментарии 17

Как за две недели освоиться с реальным проектом: стандарт OMG Essence

Блог компании CUSTIS Анализ и проектирование систем *Управление проектами *

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 6.1K
Комментарии 25

CUSTIS Labs. Развертываем инфраструктуру за минуты

Блог компании CUSTIS IT-инфраструктура *Управление разработкой *DevOps *

Старт любого нашего проекта начинается с подготовки инфраструктуры. Времени на это порой уходит довольно много. Как минимум необходимо нарезать виртуалки или донастроить Kubernetes, настроить CI, базы данных, логирование, мониторинг и прочие компоненты. В лучшем случае в этих заботах проходит несколько дней, а ни строчки кода еще не написано. Знакомая ситуация?

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 1.3K
Комментарии 2

Как мы используем юнит-тестирование в СУБД Oracle

Блог компании CUSTIS Тестирование IT-систем *Oracle *

В некоторых технологиях и языках программирования юнит-тестирование — уже давно неотъемлемая часть написания кода. Оно интегрировано в разработку и доступно «из коробки» в виде фреймворков, как, например, JUnit для Java, xUnit/nUnit для C# и т. д. Но в Oracle культура юнит-тестирования мало распространена. В статье я расскажу, как и зачем мы внедрили автотесты при разработке на Oracle и для чего их используем.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 4.1K
Комментарии 4

Из Oracle в Java. Личный опыт

Блог компании CUSTIS Oracle *Java *
✏️ Технотекст 2021

К написанию статьи меня побудил интерес разработчиков Oracle к изучению Java. Статья не носит обучающий характер и не является инструкцией для перехода с одной технологии на другую. Цель — рассказать, как я переходил на Java и с какими трудностями столкнулся.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 6.6K
Комментарии 12

Зачем нужны непрерывная доставка и непрерывное развертывание?

Блог компании CUSTIS IT-инфраструктура *Управление разработкой *Управление продуктом *DevOps *

Недавно у нас на работе стихийно возник спор о том, стоит ли вводить непрерывную доставку. Не имея в виду сразу переделывать все наши процессы под непрерывную доставку, я, однако, отстаивал целесообразность такого подхода «в общем». К сожалению, после начала спора я за приемлемые 5–10 минут так и не нашел в интернете подходящего текста, доходчиво объясняющего, зачем нужна непрерывная доставка, чтобы хорошенько подкрепить свою точку зрения. Материалов о том, как наладить непрерывную доставку, очень много, а вот статей (на русском языке) о том, зачем же это нужно, недостает.

Давайте исходить из того, что цель жизни нормального человека — это написать побольше интересного кода и закинуть его на «прод». С такой точки зрения, думаю, важность непрерывной доставки очевидна. Увы, оказалось, что есть и совершенно другие люди (вы можете узнать их по таким странными выражениям, как «качество продукта», «ресурсы», «скорость исправления ошибок», «трудозатраты»), которым нормальные ценности чужды. Чтобы легче было достучаться до них и чтобы под рукой всегда была краткая памятка по отстаиванию единственно правильной точки зрения, я и написал этот текст.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 6.4K
Комментарии 5

ProcInsp — веб-диспетчер задач для Windows

Блог компании CUSTIS .NET *IT-инфраструктура *C# *DevOps *

«Сказать программисту, что уже есть библиотека, делающая Х, это то же самое, что сказать музыканту, что уже есть песня про любовь» (с)

Есть разные способы посмотреть, чем занят сервер под Windows: можно зайти по RDP и открыть Task Manager или Process Explorer, а можно запустить удаленный сеанс через PowerShell и набрать команду Get-Process. Но что если серверов много и нужна информация по всем сразу? Заходить по RDP неудобно, а для работы с PowerShell требуется определенная квалификация.

Мы не нашли подходящего инструмента, поэтому разработали свой. Итак, встречайте ProcInsp — совершенно новый диспетчер задач для Windows.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 7.8K
Комментарии 12

Как опыт работы инженером по сопровождению помог мне найти себя и выбрать профессию мечты

Блог компании CUSTIS Карьера в IT-индустрии


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

Мой материал будет полезен новичкам, только начинающим свой путь в ИТ, а также опытным специалистам, которые интересуются, как устроена внутренняя кухня разных ИТ-компаний. Я расскажу, кто такой инженер по сопровождению, какой у такого специалиста функционал, а также о том, почему в CUSTIS эта позиция дает большое поле для творчества и профессионального роста.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 6K
Комментарии 2

Как управлять состоянием в Angular по мере роста приложения

Блог компании CUSTIS Angular *TypeScript *


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


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


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

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 20K
Комментарии 4

Веб-сервисы в Oracle

Блог компании CUSTIS Oracle *


Веб-сервисы широко применяются для интеграции между компонентами одной системы или между различными системами. Популярность веб-сервисов как способа интеграции обусловлена их универсальностью, а также простотой реализации и отладки. Универсальность связана с передачей данных с помощью интернета и протокола HTTP. Веб-сервисы дают возможность относительно легко построить интеграции между компонентами, написанными на разных языках, запускаемыми на разных операционных системах и платформах. Простота реализации веб-сервисов достигается за счет встроенных во многие IDE средств и компонентов, позволяющих быстро разработать как сам веб-сервис (provider side), так и необходимый код для вызова сервиса на стороне клиента (client side). Отладку сервисов упрощает использование понятных человеку форматов обмена данными — XML и JSON. Кроме того, существует множество утилит для отладки и тестирования сервисов, в том числе нагрузочного.

В этой статье рассмотрим несколько способов создания веб-сервисов непосредственно из СУБД Oracle, то есть без использования сторонних средств.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 22K
Комментарии 9

EF Core + Oracle: как сделать миграции идемпотентными

Блог компании CUSTIS Oracle *.NET *SQL *C# *


Обычно фреймворк EF Core используют в сочетании с MS SQL — другим продуктом Microsoft. Однако это не догма. Например, мы в CUSTIS пишем бизнес-логику на C#, а для управления базами данных используем Oracle. В EF Core есть замечательный механизм миграций, но в нашем случае они не идемпотентны. Дело в том, что Oracle и ряд других БД, например MySQL, не поддерживают транзакционный DDL. Значит, если миграция упадет где-то посередине, ее не получится ни накатить, ни откатить. Как же реализовать идемпотентные миграции на EF Core без MS SQL?
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3.3K
Комментарии 2

Как сделать правильную раскраску кода на «Хабре» и почему это так сложно

Блог компании CUSTIS Habr


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

В моем случае сохранить разметку было особенно важно, поскольку статья представляла собой описание работы над кодом. Чтобы решить проблему, я создал инструмент, позволяющий перенести подсветку кода в выбранной схеме из IDEA в статью на «Хабре». Я расскажу о процессе создания инструмента и об особенностях его использования.
Читать дальше →
Всего голосов 32: ↑30 и ↓2 +28
Просмотры 5.5K
Комментарии 7

Проблемы пакетной обработки запросов и их решения (часть 2)

Блог компании CUSTIS Высокая производительность *Java *Kotlin *

Это продолжение статьи «Проблемы пакетной обработки запросов и их решения». Рекомендуется сначала ознакомиться с первой частью, так как в ней подробно описана суть задачи и некоторые подходы к ее решению. Здесь же мы рассмотрим другие методы.
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 2.3K
Комментарии 0

Переключатели функциональности (feature toggles): виды, преимущества и работа с ними в .NET

Блог компании CUSTIS .NET *Проектирование и рефакторинг *C# *Управление разработкой *

Переключатель функциональности — это инструмент, позволяющий переключаться со старой функциональности на новую, не пересобирая приложение и не выпуская его заново. Реализуется добавлением в код условного оператора (if), который дает возможность управлять поведением программы, просто меняя нужное значение в конфигурационном файле или базе данных. Если вы хоть раз редактировали настройки в ini-файле, то вам знакома эта технология.

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

В данном материале собрана основная информация о переключателях функциональности в контексте разработки на платформе .NET. В первой части содержатся общие сведения о переключателях; они достаточно независимы от конкретной реализации и могут оказаться полезными для специалистов, работающих с самыми разными платформами. Во второй части рассматриваются конкретные современные инструменты, облегчающие использование переключателей именно при разработке для .NET.
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Просмотры 11K
Комментарии 9

Проблемы пакетной обработки запросов и их решения (часть 1)

Блог компании CUSTIS Высокая производительность *Java *Kotlin *
Практически все современные программные продукты состоят из нескольких сервисов. Часто большое время отклика межсервисных каналов становится источником проблем с производительностью. Стандартное решение такого рода проблем — это упаковка нескольких межсервисных запросов в один пакет, которую называют пакетной обработкой (batching).

Если вы используете пакетную обработку, вас может не устраивать ее результат с точки зрения производительности или понятности кода. Этот метод не так прост для вызывающей стороны, как можно подумать. Для разных целей и в разных ситуациях решения могут сильно различаться. На конкретных примерах я покажу плюсы и минусы нескольких подходов.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 5.5K
Комментарии 0

Инфраструктура System.Transactions в мире .NET

Блог компании CUSTIS .NET *C# *

Встречали ли вы в C# конструкцию типа using (var scope = new TransactionScope(TransactionScopeOption.Required))? Это значит, что код, выполняющийся в блоке using, заключается в транзакцию и после выхода из этого блока изменения будут зафиксированы или отменены. Звучит понятно, пока не начинаешь копать глубже. И чем глубже копаешь, тем «страньше и страньше» становится. Во всяком случае, у меня при более близком знакомстве с классом TransactionScope и вообще транзакциями .NET возникла целая уйма вопросов.

Что за класс TransactionScope? Как только мы используем конструкцию using (var scope = new TransactionScope()), все в нашей программе сразу становится транзакционным? Что такое «управляющий ресурсами» (Resource Manager) и «управляющий транзакциями» (Transaction Manager)? Можно ли написать свой управляющий ресурсами и как он «подключается» к созданному экземпляру TransactionScope? Что такое распределенная транзакция и правда ли, что распределенная транзакция в SQL Server или Oracle Database — это то же самое, что и распределенная транзакция .NET?

В данной публикации я постарался собрать материал, помогающий найти ответы на указанные вопросы и сформировать понимание транзакций в мире .NET.
Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Просмотры 25K
Комментарии 44

Как наконец-то начать писать тесты и не пожалеть об этом

Блог компании CUSTIS Тестирование IT-систем *Программирование *Java *Тестирование веб-сервисов *
Tutorial


Приходя на новый проект, я регулярно сталкиваюсь с одной из следующих ситуаций:

  1. Тестов нет совсем.
  2. Тестов мало, их редко пишут и не запускают на постоянной основе.
  3. Тесты присутствуют и включены в CI (Continuous Integration), но приносят больше вреда, чем пользы.

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

Что можно сделать, чтобы изменить сложившуюся ситуацию? Идея использования тестов не нова. При этом большинство туториалов напоминают знаменитую картинку про то, как нарисовать сову: подключаем JUnit, пишем первый тест, используем первый мок — и вперед! Такие статьи не отвечают на вопросы о том, какие тесты нужно писать, на что стоит обращать внимание и как со всем этим жить. Отсюда и родилась идея данной статьи. Я постарался кратко обобщить свой опыт внедрения тестов в разных проектах, чтобы облегчить этот путь для всех желающих.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Просмотры 31K
Комментарии 43
1

Информация

Сайт
www.custis.ru
Дата регистрации
Дата основания
1996
Численность
201–500 человек
Местоположение
Россия