Содержание

Разработка

17 убойных репозиториев GitHub, которые нужно сохранить

Тщательно отобранный список, который прослужит вам всю жизнь. Перейти


Зачем писать на C++ в 2022 году?

Основы C++ были заложены еще 40 лет назад, но он по-прежнему используется повсеместно. В этой статье мы с вами разберемся, где и почему он используется, и порассуждаем, есть ли у него будущее. Поговорим о C++


Может ли Java-приложение использовать больше памяти, чем размер кучи

Возможно, вы замечали, что Java-приложение может превышать лимит памяти, указанный в параметре -Xmx (максимальный размер кучи). Дело в том, что JVM помимо кучи использует и другие области памяти. Читать далее


Как собрать, покрыть тестами и опубликовать TypeScript-пакет в npm в 2022 году

В этой статье мы с вами создадим с нуля и опубликуем в  NPM TypeScript-пакет, не забыв про Jest для покрытия тестами. Инициализируем проект, настроим TypeScript, напишем для него тесты в Jest и опубликуем его в NPM. Погнали


Разработка мобильных приложений на Go

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


Алгоритм Дейкстры. Разбор Задач

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

Если вы хотите найти ответить на вопросы, чем этот алгоритм лучше BFS (поиска в ширину), при каких условиях алгоритм применим, и какие теоретические и практические задачи можно с его помощью решать, читайте далее.


9 причин использовать dataclasses в Python

Начиная с версии 3.7, в Python представлены dataclasses, новый функционал, определяющий классы, содержащие и инкапсулирующие данные. Я начал использовать этот модуль, и мне понравилось. Навскидку этому есть две причины: меньше шаблонного кода, лучшая читабельность и более простая поддержка кода. Свои первые впечатления обобщил в этой статье. Расскажу о dataclasses, какие проблемы они решают и о 9 приятных механиках, которые они предоставляют. Читать


Принципы проектирования SOLID с примерами на Python

Эффективный алгоритм – основа работы эффективного программного обеспечения. Когда алгоритм уже есть, следующая задача – сделать так, чтобы ПО было разработано с использованием лучших методов проектирования и лучшей архитектуры. Специалисты, исследователи и эксперты определили лучшие практики эффективного проектирования программных приложений. Одной из наиболее популярных среди них являются принципы проектирования, известные под аббревиатурой SOLID. Читать полностью


Flutter for Desktop — новый подход к разработке приложений

Рассмотрим возможности и особенности реализации desktop-приложений на Flutter и разберемся с механизмами интеграции внешних библиотек. Читать


Мини-игра на Rust + macroquad

macroquad — простая и удобная Rust библиотека для разработки небольших 2D игр. Библиотека является кроссплатформенной и работает на Windows, Linux, MacOs, HTML5, Android, IOS. Читать далее


Хватит говорить, что PHP мертв

«Выучить другой язык» — идея очень хорошая, но не потому, что «php умирает» — это просто неправда. Вы должны учить другие языки, потому что они будут полезны для вас как для программиста. Если бы PHP действительно умирал, то, конечно, у вас была бы еще одна (достаточно веская) причина двигаться дальше, но прямо сейчас, в данный момент, он не умирает.


Разбираемся с декораторами в Python

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


Минимальные API в .NET 6

Создание REST API является основной частью многих проектов разработки. Выбор для создания таких проектов широк, но если вы разработчик на C#, варианты будут весьма ограничены. API на основе контроллеров были наиболее распространенными в течение долгого времени, но .NET 6 меняет эту ситуацию, предлагая новую возможность


Эволюция лямбд в C++14, C++17 и C ++20

Лямбда-выражения — одна из самых популярных фич современного C++. С тех пор, как они были представлены в C++11, лямбды проникли практически в каждую кодовую базу на C++. В этой статье расскажем об их основных эволюционных этапах. Читать


Способы хранения графа в памяти компьютера

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


Паттерны проектирования в Dart

Рассмотрим примеры реализации наиболее часто используемых основных и порождающих шаблонов на языке Dart (будем использовать возможности наиболее актуальной версии Dart 2.17). Читать


Чистый код — практический подход

В этой статье попытаемся показать практический подход к чистому коду. Не вдаваясь в теорию, покажем, как пишется Чистый Код.


__proto__ и prototype

Статья для разработчиков, которые столкнулись с JS в то время, когда никаких __proto__ и prototype на поверхности уже нет, а желание понять, как это устроено «под капотом», остается. Читать


CI/CD и еще один CD

Разбираемся в терминологии pipelines в контексте автоматизации тестирования. Читать


10 задач с JavaScript Promise для подготовки к собеседованиям

Promise — это отличительная особенность JavaScript как асинхронного языка программирования. Нравится вам это или нет, понять его в любом случае придется. В этой статье привели 10 примеров кода с Promise, начиная от базового уровня заканчивая продвинутым. Готовы? Начнем!


Парсинг JSON с помощью Jackson

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


Перегрузка функций в TypeScript

Перегрузка функций — это та область TS, которая находится в невидимой зоне для разработчиков, которые изучали JS, а потом на работе «на ходу» начали осваивать TS. Особенно, если изучение JS не было связано с университетом или любым другим фундаментальным образованием. Если вы изучали JS на курсах, то вы никогда не услышите там про перегрузку функций, просто потому что в JS этого функционала нет. А когда вы сами начнете изучать TS, то вы не наткнетесь на перегрузку функций, просто потому что даже не подозреваете о ней. Если, прочитав вступление, вы задались вопросом «Что за перегрузка такая?», то эта статья для вас.


Почему вам следует полностью переходить на Kotlin

Рассмотрим 18 причин, почему для следующего проекта вам следует рассмотреть язык Kotlin, разработанный компанией JetBrains. Узнать


Подробный разбор простого приложения на Rust

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

Тестирование

Инструменты с открытым исходным кодом для нагрузочного тестирования

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


Сертифицированный тестировщик

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


API Тестирование без Postman

Рассмотрим одну из лучших альтернатив этому популярному инструменту. Особенно она понравится тем, кто работает с Postman постоянно. Узнать

Администрирование

Как Postgres хранит строки

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


Основы Terraform

Чтобы описать работу с Terraform наглядно, рассмотрим практический пример создания экземпляра EC2 в AWS. Читать полностью


Just-in-Time Kubernetes: Руководство начинающим для понимания основных концепций Kubernetes

В статье поговорим на темы:

  • Что такое Kubernetes?
  • Высокоуровневый взгляд: Архитектура Kubernetes;
  • Копаем глубже: Ресурсы, контроллеры и операторы;
  • Инструмент командной строки kubectl для взаимодействия с Kubernetes.

К статье


Когда помогает партиционирование, пример в PostgreSQL

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


Пожалуйста, прекратите писать shell-скрипты

Во время автоматизации какой-либо задачи вы часто сталкиваетесь с написанием shell-скриптов. У вас может быть bash-скрипт для управления процессом упаковки и другой скрипт в качестве точки входа в контейнер. По мере возрастающей сложности при упаковке меняется и ваш shell-скрипт. Все работает хорошо. Но вот однажды shell-скрипт совершает что-то совсем неправильное. Продолжение


Учимся жить с Kafka без Zookeeper

Поговорим об особенностях протокола KRaft и разберемся, как настроить новый кластер Kafka без необходимости установки Zookeeper. Разобраться


Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства

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


Разделяй и властвуй. Изоляция процессов в Linux

Последовательно разберем возможности cgroups, обсудим отличия новой cgroups v2 и затронем тему контейнеризации на основе Linux Containers. Да пребудет с вами безопасное окружение выполнения. Читать


NSA k8s security: Агентство национальной безопасности раскрывает секреты Kubernetes

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


Состояние PostgreSQL 2022: 13 инструментов, отличных от psql

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


Управление учетными записями в Linux. Часть 1. Хранение учетных данных

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


Управление учетными записями в Linux. Часть 2. Не/правильная настройка доступа

В первой части мы рассмотрели вопросы хранения учетных данных в ОС семейства Линукс. Теперь перейдем к обсуждению вопросов правильной и не очень настройки прав доступа к различным объектам операционной системы. Читать

Data Science

Как упаковывать и дистрибутировать модели машинного обучения с помощью MLFlow

Расскажем о MLflow, его основных компонентах и характеристиках. А также приведем примеры, показывающие, как MLflow работает на практике. Узнать


Фреймворки машинного обучения для PHP-разработчиков

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


17 лучших инструментов и технологий для работы с большими данными

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


Матстат и опоздания на работу

Делимся с вами небольшим шуточным исследованием, которое немного раскроет методику применения математической статистики и A/B тестирования в повседневной жизни. Интересное 


NoRecSys. Машинное обучение — помощник в формировании ассортимента товаров для ритейла

Статья про противоположное применение рекомендательных систем — определение самого неподходящего товара для покупателей. Поговорим о том, как определять спрос на новый товар, и как выявлять характеристики товара, из-за которых ритейл и интернет-площадки теряют продажи.

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


Практическая обработка изображения линии горизонта с помощью Python

Краткое руководство по профилированию линии горизонта городской панорамы с помощью Python в несколько строк кода. Перейти

Управление

33 питона: зоопарк позиций, которые требуют знания python

Перед автором встала задача собрать команду для разработки платформы обработки данных, и команду дата-инженеров, которые будут пользоваться этой самой платформой: писать конфигурации дата-пайплайнов и наполнять дата-лейк данными. Также нужны были аналитики данных и дата-сайентисты, которые могли бы проверять качество данных на масштабе нескольких тысяч таблиц, нескольких сотен дата-пайплайнов и нескольких сотен гигайбайт данных каждый день. Бодрое предисловие, не правда ли? Продолжение


Почему оценка задач сломала Agile

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


Как победить хаос в команде разработки и эффективно управлять ожиданиями заказчиков?

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


Важные основы фреймворка Скрам, про которые забывают

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

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

Личная продуктивность

Работа из дома

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


Как мы сами себя ловим в карьерной ловушке

В конце 2007 года автор работал софт-инженером в министерстве ИТ уже почти пять лет. Был пройден долгий путь от джуна до сеньора и понятно, что уже примерял к себе роль тимлида. Видел себя человеком, который рулит командой и процессами.

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


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

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

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

Прокачать английский


Английский — это просто

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