Search
Write a publication
Pull to refresh
12
7
Alexander Kardapolov @akardapolov

User

Send message

«Если сильный — всплывет, если слабый — нам такие не нужны!»

Reading time7 min
Views9.2K
image

«Вы все когда-то были в роли новичка в компании и, наверное, знаете, что когда приходит новый сотрудник, первым делом руководитель ему озвучивают план ближайшего сотрудничества. Это все случилось и со мной… встреча с руководителем произошла… через полтора месяца… случайно… в туалете… где руководитель спросила у меня, как мои успехи….
По своей неопытности и наивности (это была моя вторая работа) я не добивалась встречи с руководителем и не требовала ознакомить меня с ожиданиями и планом. Конечно, я не сидела совсем без работы, я понимала, какие функции должна выполнять — мне рассказал мой коллега, который занимал такую же позицию. Поэтому, проблему я не видела: сама училась, сама осваивала свои функции, сама приступила к работе.
Прошло еще полтора месяца и меня вызывает мой руководитель. „Ура“ — думаю я — »адаптация пройдена, и наконец-то мы поговорим про будущее и новые цели".
Но на встрече руководитель мне объявил, что я не прошла испытательный срок, так как мои показатели далеки от плановых. На мой вопрос, где я могла узнать о планах, руководитель ответила, что это описано в инструкции в личном кабинете учебного портала, и что, как оказалось, я должна была найти это сама. Вот такая история…"

__________________________

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

Храним настройки правильно или реестр параметров для встраиваемых систем

Reading time26 min
Views9K

Привет, Хабр! В нашей практике разработчиков электронных устройств и встраиваемых систем мы часто сталкиваемся с необходимостью хранить параметры устройства. Это могут быть, например, такие параметры как яркость дисплея, язык, рабочая частота радиоканала или IP адрес – да что угодно. Единого общепринятого подхода для решения этой задачи нет, и я предлагаю обсудить ниже наиболее очевидные варианты, их достоинства и недостатки, а также предложить реализацию, к которой я пришел в результате работы над несколькими проектами. Поехали!

Читать далее

Как встроить качество в процессы производства ПО? (Часть 2)

Reading time6 min
Views9.9K

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

Читать далее

Аутентификация в Edge и передача идентификаторов, не использующих токены

Reading time13 min
Views2.4K

Как может подтвердить большинство разработчиков, работа с протоколами безопасности и идентификационными токенами, также, как и с аутентификацией пользователей и устройств, может быть сложной задачей. Представьте, что у вас есть несколько протоколов, несколько токенов, более 200 миллионов пользователей и тысячи типов устройств, и проблема при этом может расширяться. Несколько лет назад мы решили разобраться с этой проблемой, запустив новую инициативу, и в итоге создали новую команду, чтобы перенести сложную обработку аутентификации пользователей и устройств, а также различных протоколов безопасности и токенов на границу сети, управляемой набором централизованных сервисов и одной командой. В процессе мы изменили end-to-end передачу идентификаторов внутри сети сервисов, чтобы использовать криптографически верифицируемый объект идентификатора, не использующий токены.

 Далее вы узнаете больше об этом путешествии и о том, как мы смогли:

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

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

Улучшить возможности аудита и криминалистического анализа.

Перевод @middlejava

Читать далее

Прогресс GC от JDK 8 до JDK 17

Reading time5 min
Views24K

JDK 17 с нами уже несколько месяцев и он не только про новые возможности языка Java. Прирост производительности в сравнении с более старыми версиями JDK очень заметен. Это становится особенно очевидно, когда мы сравниваем его с предыдущими LTS версиями: JDK 8 и JDK 11. Большая доля в улучшении производительности происходит из новых функций и оптимизаций в JVM, и в этой статье фокус будет на улучшениях, которые были сделаны в области сборки мусора в JVM

Читать статью

Helidon, Testcontainers, Cucumber, Kafka и многое другое

Reading time12 min
Views4.4K

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

А как насчет тестирования Helidon?

В этой статье мы рассмотрим несколько способов, как это сделать.

Читать далее

Возможности Java 17 и рекомендации по миграции

Reading time14 min
Views28K

Java значительно изменилась с годами. Прочтите сравнение версий 8 и 17 и узнайте ответ на вопрос: стоит ли обновляться?

Через несколько месяцев, в марте 2022 года, Java 8 закончится поддержка Oracle Premier Support. Это не означает, что он не будет получать никаких новых обновлений, но усилия Oracle, вложенные в его поддержку, вероятно, будут значительно меньше, чем сейчас.

Это означает, что будет веская причина для перехода на новую версию, тем более, что 14 сентября 2021 года была выпущена Java 17. Это новая версия долгосрочной поддержки, с Oracle Premier Support, которая продлится до сентября 2026 года (как минимум). 

Что дает Java 17? Насколько трудной будет миграция? Стоит ли оно того? 

Я постараюсь ответить на эти вопросы в этой статье.

Читать далее

Как внедрить Contract-First OpenAPI и как устроен центр авторизаций

Reading time1 min
Views3.7K

Переходим к докладам по backend с IT-конференции ЮMoneyDay.

Первый кейс о том, как мы внедряли Contract-First. Описали процесс перехода от Сode-First к написанию OpenAPI-спецификаций и генерации кода по ним.

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

Смотреть доклады по backend

Туториал по JUnit 5  - Введение

Reading time6 min
Views124K

В этом туториале по JUnit 5 рассказывается о том, как JUnit адаптировал стиль кодирования Java 8 и некоторые другие функции. Узнайте, чем JUnit 5 отличается от JUnit 4.

JUnit 5 - наиболее широко используемая среда тестирования для приложений Java. JUnit долгое время отлично справлялся со своей задачей.

Между тем, JDK 8 привнес в java интересные функции и, в первую очередь, лямбда-выражения. JUnit 5 был нацелен на адаптацию стиля программирования Java 8; вот почему Java 8 является минимально необходимой версией для создания и выполнения тестов в JUnit 5 (хотя можно запускать тесты, написанные с помощью JUnit 3 или JUnit 4 для обратной совместимости).

Читать далее

Управление распределенными транзакциями с помощью Camunda

Reading time13 min
Views13K

"Всякое решение плодит новые проблемы" (закон Мерфи)

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

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

Читать далее

Распутывание микросервисов или балансировка сложности в распределенных системах

Reading time13 min
Views14K

Эта статья является переводом материала «Untangling Microservices, or Balancing Complexity in Distributed Systems».

Расцвет микросервисов закончился. Uber преобразовывает тысячи микросервисов в более управляемое решение [1]; Келси Хайтауэр предсказывает, что будущее за монолитами [2]; и даже Сэм Ньюман заявляет, что микросервисы никогда не должны быть выбором по умолчанию, а скорее крайним средством [3].

Что происходит? Почему так много проектов стало невозможно поддерживать, несмотря на обещание микросервисов простоты и гибкости? Или все-таки монолиты лучше?

В этом посте я хочу ответить на эти вопросы. Вы узнаете об общих проблемах проектирования, которые превращают микросервисы в распределенные большие комки грязи (distributed big balls of mud), и, конечно же, о том, как их избежать.

Читать далее

Figma plugin API человеческим языком. Часть 2

Reading time2 min
Views3K

Часть 2
Взаимодействие с Figma

В статье про написание скриптов для  Adobe After Effects я предложил читателям сделать песочницу кода, работающую прямо в AE. Давайте теперь сделаем такую же и для Figma. За основу можно взять заготовку из предыдущей статьи. Здесь вы найдете необходимые для работы плагина файлы manifest.json, index.html и plugin.js.

Для начала откроем manifest.json и заменим значение поля name на актуальное. Я назвал плагин Script Notepad.

Читать далее

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

Reading time5 min
Views4.9K

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

Мы делаем масштабные приложения на высококонкурентном рынке. Чем выше скорость обновлений и внедрений новых фич, тем больше зарабатывает компания и её сотрудники. Поэтому мы постоянно оптимизируем время прохождения автотестов. Изначально автоматизированное тестирование одного приложения занимало 16 часов. Мы уменьшили это показатель до 8 часов. В статье рассказываем, какие практические шаги сделали, чтобы добиться такого результата. 

Читать далее

Какой вклад внесло функциональное программирование в современные языки?

Reading time10 min
Views19K

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


Парадигма программирования — это в первую очередь стиль мышления: то, как программист думает о представлении данных и процессе их обработки. Другими словами, парадигма живёт в голове программиста, а не является свойством языка. Разные языки могут в той или иной степени поддерживать определённую парадигму. Если сейчас зайти на Википедию и начать читать про самые популярные ЯП, мы увидим, что многие из них заявлены как "мультипарадигменные": на них можно писать в разных стилях, но какие-то из них использовать будет удобнее.



В своей недавней статье мы рассказывали о практических применениях Лиспа и упомянули, что он сильно повлиял на развитие других языков программирования, но не стали вдаваться в детали. Пришло время более подробно раскрыть эту тему и разобраться, какой вклад функциональное программирование в целом (не только Лисп!) внесло в развитие других языков. Поскольку мы используем Haskell как основной язык разработки, и наша команда разработчиков состоит из ФП-энтузиастов, мы не смогли пройти мимо такой темы.


В этом посте рассмотрим несколько механизмов, которые либо зародились в ФП-языках, либо нашли в них наибольшее применение и были ими популяризованы, и в итоге появились в языках, изначально не функциональных.

Читать дальше →

Публикация Spring Boot приложения в GitHub Packages с помощью GitHub Actions для самых маленьких

Reading time7 min
Views9.2K

Сегодня я расскажу вам как можно опубликовать своё Spring Boot приложение в GitHub Packages с помощью GitHub Actions. Вот так. В общем-то всё. Вот. Спасибо за внимание.

Читать далее

Что полезно знать Java-разработчику про вывод типов

Reading time9 min
Views21K

image


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

Читать дальше →

«BI or not to BI»: небольшая история разработки небольшого BI-сервиса

Reading time5 min
Views5.6K

В мае 2021 года меня похитили инопланетяне и приказали разработать сервис аналитики данных, в простонародье именуемый “self-service BI (business intelligence)”. И не просто какой-то аналог Redash или Superset в масштабе 1:43, а с нормальной поддержкой загрузки данных из файлов (локальных и через веб), ну и, конечно, с коннекторами к популярным базам данным. Например, чтобы можно было импортировать содержимое файлов json, xml или логов, а потом сджойнить их с выгрузкой из clickhouse. И ещё чтобы графики рисовались. Дашборды тоже было бы неплохо, но можно и без них.

Вот что они мне нарисовали в качестве ТЗ:

Читать далее

6 правил, которые пригодились бы мне, когда я осваивал программирование

Reading time5 min
Views35K

В кодинге главное — не кодинг


Как вы думаете, что такое программирование?

Написание кода?

Написание хорошего кода?

Нет.

Это только часть истины.

Программирование — это не про кодинг. Программирование — это о решении задач при помощи кодинга.

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

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

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

Как технология USB over IP позволила людям забыть о расстоянии

Reading time5 min
Views76K
Источник изображения
Сегодня быстрым ростом количества устройств сети Интернет и интернета вещей уже никого не удивишь. Существует множество различных протоколов и технологий, на которых основана обработка и обмен информацией между устройствами и, собственно, сама связь этих устройств.

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

В этой статье речь пойдет о технологии, не относящейся ни к одной, ни к другой группе — USB over IP. Без нее компьютерные сети существовали бы без особых проблем, но она способна значительно упростить работу и снизить затраты на эксплуатацию у крупных предприятий, небольших организаций и даже обычных пользователей. К примеру, с помощью нее можно пробросить аппаратный USB-ключ защиты ПО внутрь облачной платформы или облака на базе VMware и использовать его так, словно он установлен на локальной машине. Но обо всем по порядку.
Читать дальше →

Уроки абстракции: чему FP может научить ООП

Reading time14 min
Views12K

Одним из наиболее распространенных «лучших практик» в программировании является принцип DRY: не повторяйся. Для реализации этого принципа можно использовать множество методов: инкапсуляция, параметризация, инверсия управления и многое другое. Одним из этих методов является абстракция, и одно из основных различий между функциональным программированием (FP) и объектно-ориентированным программированием (ООП) заключается в способе применения абстракции. Обычной практикой в ООП является ограничение абстракции до строгого полезного минимума для рассматриваемой проблемы. В ООП преждевременное абстрагирование часто считается ошибкой, как и преждевременная оптимизация.

В FP, с другой стороны, абстракция, как правило, продвигается настолько далеко, насколько это возможно. Каждая проблема разбита на серию простейших возможных функций, которые затем комбинируются для построения решения проблемы. Выявление этих абстракций обычно является наиболее важной частью решения проблемы. Фактически, программисты FP часто тратят больше времени на то, чтобы найти, какую проблему им следует решить, чем на их решение. И, конечно же, обычно кажется, что эти функции одинаковы от одной проблемы к другой. Только способ их комбинирования отличается. Это причина, по которой абстракция является одним из наиболее ценных методов, используемых программистами FP.

В этой статье мы сравним, как ООП и ФП будут обрабатывать абстракцию в конкретной простой задаче: вычислении суммы целых чисел от 1 до произвольного значения n. Проблема настолько проста для решения с помощью императивного программирования, что кажется, что в этом нет ничего интересного. Вот как это можно сделать в Java:

Читать далее

Information

Rating
1,474-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity