Обновить
2
0

Fullstack dev

Отправить сообщение

Kotlin: взгляд изнутри — преимущества, недостатки и особенности

Уровень сложностиСредний
Время на прочтение32 мин
Охват и читатели65K

Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.

В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.

Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!

Читать далее

Книга «Data Science в действии»

Время на прочтение8 мин
Охват и читатели6.9K
image Привет, Хаброжители!

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

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

Заметки об основах программной архитектуры

Время на прочтение9 мин
Охват и читатели29K
Это вводное руководство для архитекторов программного обеспечения. В настоящее время звание «архитектор» очень популярно во всем мире, но не существует настоящего руководства, как стать архитектором программного обеспечения.

1. Общая концепция архитектуры программного обеспечения
2. Архитектурные стили
3. Технология
4. Софт скиллз (принятие архитектурных решений, методы анализа рисков, навыки подачи материала, отношения с командой менеджеров, ведение переговоров, планирование карьеры архитектора)
5. Принципы проектирования
Читать дальше →

Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели47K

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?

Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.

Читать далее

Работа с асинхронными операциями с помощью Kotlin Coroutines

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели57K

Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines. 

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

Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!

Читать далее

Ещё раз о пропертях или откуда что берётся

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели28K

О чём вообще речь?

Всем привет! В данной статье речь пойдёт о настраиваемых параметрах конфигурации Spring приложений. Когда я только начал изучать Spring, естественно, одним из источников знаний были готовые примеры, проекты-образцы. И меня жутко бесило, что какие-то нужные для работы приложения значения появлялись «ниоткуда». К примеру, автор какого-нибудь туториала предлагал для проверки только что созданного учебного приложения зайти на localhost по порту 8088. Откуда берётся 8088? Почему не 8089? Оказалось, что для таких настраиваемых параметров есть специальные файлы. Итак:

Какие бывают настраиваемые параметры?

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

Например, за то на каком порту будет крутиться встроенный http-сервер (если мы используем Spring Web) отвечает параметр server.port. В том самом туториале из вступления в соответствующем файле server.port был равен 8088. Выглядит это (в простейшем случае) так:

server.port=8088

Имя параметра может состоять (и, как правило, состоит) из нескольких частей. Например, все «спринговые» параметры начинаются со слова «spring». Кастомные (пользовательские) параметры, введённые разработчиком конечного приложения, могут начинаться, например со слова application или любого другого. В зависимости от используемого формата файла, части разделяются по-разному (см. следующий раздел). Простейший вариант, просто точками. Пример пользовательских параметров:

Читать далее

Профилирование, ассемблер и все-все-все

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели6.7K

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

Читать далее

Бекенд на AWS Lambda за 60 минут

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели7.5K

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

Привет, я, Петер Ибрагимов, и в Whoosh я занимаюсь бекенд разработкой на Python. В этой статье расскажу, как мы делаем наши микросервисы на лямбдах. 

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

Читать далее

Подробный обзор работы и жизни в Ванкувере (Британская Колумбия, Канада)

Уровень сложностиПростой
Время на прочтение46 мин
Охват и читатели38K

Здравствуйте, меня зовут Александр Зеленин, и я программист. В 2020 году получил приглашение от AWS Cloudfront переехать в Ванкувер, Канаду.


В этой статье я рассмотрю все ключевые темы проживания в Ванкувере (Британская Колумбия, Канада): от вакансий и интервью до получения резидентства.


Я постарался представить всю информацию в формате, который сам хотел бы видеть ДО переезда с точки зрения айти специалиста (для других специальностей/зарплат условия могут быть другими). Вся информация основана исключительно на моем опыте: возможно, вы не будете с ней полностью согласны, и это нормально.


Значительная часть касается Ванкувера в Британской Колумбии. Я посещал другие города и провинции как турист, поэтому не могу написать о жизни там, хотя по рассказам друзей в целом ситуация везде очень похожа (за исключением климата).

Как там, в Ванкувере?

Введение в GitHub Actions. Делаем пайплайн для деплоя Spring Boot проекта на VPS с помощью Docker

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели20K

В этой статье я расскажу как построить простой пайплайн для деплоя Spring Boot проекта на сервере используя GitHub Actions и Docker.

Читать далее

SQL миграции в Postgres. Часть 1

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели49K

Как обновить значение атрибута для всех записей таблицы? Как добавить первичный или уникальный ключ в таблицу? Как разбить таблицу на две? Как ... 

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

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

Кастомный select для React

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели28K

Пишем минималистичный кастомный select компонент для React приложения. Покрываем всё тестами на Jest.

Читать далее

PostgreSQL, Spring Framework и Android для начинающего разработчика

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели19K

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

В статье будут затронуты такие важные темы, как теория баз данных, реляционная база данных PostgreSQL, Spring Framework и Android разработка. Также будет рассмотрен базовый, не очень сложный пример, который поможет разобраться во всех этих темах и "потрогать" их руками.

Статья предназначена для начинающего разработчика, но имеющего базовые знания о разработке программного обеспечения и языках программирования Java и Kotlin.

Все материалы и исходный код можно найти здесь.

Читать далее

Создаем и тестируем свой plugin для Gradle 7.0+

Время на прочтение8 мин
Охват и читатели6.4K

Система сборки проектов Gradle стала значительной вехой в эволюции инструментов подготовки артефактов и заменила во многих проектах ранее популярный Maven (который ранее стал заменой для make и ant). Де-факто Gradle является стандартом для сборки проектов для Android, но в действительности он может использоваться и для других целевых платформ и технологий разработки, отличных от JVM. Подобно maven в gradle используются устанавливаемые дополнения, которые могут добавлять свои цели и элементы конфигурации, а также встраиваться в существующие цели и добавлять операции как и исходными текстами (например, форматирование), так и с вспомогательными объектами (как пример можно привести кодогенерацию), а также вызов внешних команд или объектов классов (например, компилятора kotlin или инструментов сборки ресурсов для android).

В этой статье мы пошагово создадим и протестируем простой plugin трансформации текстовых файлов для gradle (при разработке будем в основном использовать API, который поддерживается версиями 6.0+, но отдельно отметим, какие функции поддерживаются только в Gradle 7.0 и более новых).

Сначала начнем с определения контекста. Сборка любого проекта состоит из последовательности действий (actions), которые в конечном счете приводят к появлению целевого состояния (task). Конфигурация сборки описывается в виде gradle-сценария, который может взаимодействовать с методами, импортированными из plugin'ов или входящих в gradle-core, либо с версии Gradle 4.0 с использованием Kotlin Scripting (.kts) с возможностью использования объектов стандартной библиотеки Kotlin и импортируемых библиотек.

Читать далее

RabbitMQ: терминология и базовые сущности

Время на прочтение8 мин
Охват и читатели153K

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

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.

Читать далее

TypeScript: Раскладываем tsconfig по полочкам. Часть 2 — Всё про строгость

Время на прочтение18 мин
Охват и читатели46K

В данной статье я хочу предоставить переработанную и упорядоченную выжимку документации по настройке "флагов строгости" tsconfig.json. Статья будет полезна как тем, кто только начинает работать с TypeScript, так и тем кто уже давно работает, но при этом использует конфиг по умолчанию. Для разработчиков, которые хорошо ориентируются в вопросах строгости в TypeScript статья может открыть некоторые тонкости работы флагов и послужить шпаргалкой.

Читать далее

TypeScript: Раскладываем tsconfig по полочкам. Часть 1

Время на прочтение10 мин
Охват и читатели120K

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

Читать далее

Spring Data JPA и upsert

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели32K

Всем привет! Есть достаточно распространенная задача: нужно вставить новую запись в БД, но если она уже там есть, то её следует обновить. Эта ситуация может встретиться, например, если у вас есть 2 источника данных, каждый из которых передает половину информации об объекте, и ваш сервис должен склеить части вместе по какому‑то внешнему идентификатору. Но вы не знаете, в каком порядке к вам попадут эти половинки. Предлагаю посмотреть, как это можно сделать, если сервис использует Spring Data JPA.

Читать далее

Ключевое слово this в JavaScript. Полное* руководство

Время на прочтение6 мин
Охват и читатели47K
* скорее всего, я что-нибудь да упустил, но уверен, в комментариях мне это подскажут

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

image

Содержание.

  1. Введение
  2. Заблуждения о this
  3. Как определить значение this
Читать дальше →

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Фронтенд разработчик
Старший
От 8 000 €
SQL
Git
Docker
ООП
Linux
Java
Spring Boot
PostgreSQL
Java Spring Framework
Gradle