Как стать автором
Обновить
0
Константин @pilot911

Программист PHP, Java

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

Полное руководство по проектированию систем в виде схемы

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров23K

Разработка надежной, масштабируемой и эффективной системы может оказаться довольно сложной задачей. Однако понимание основных принципов и компонентов этого процесса может сделать его более управляемым. В этой статье мы рассмотрим основные компоненты в проектировании систем, такие как DNS, балансировка нагрузки, API-шлюз и другие. Также мы предоставим краткую схему, которая поможет разработчикам проектировать системы различной сложности.

Читать далее
Всего голосов 38: ↑34 и ↓4+33
Комментарии5

Создаем байт-код для JVM без компилятора

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.7K

Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.

Читать далее
Всего голосов 14: ↑12 и ↓2+15
Комментарии5

Проверка работы сервера Proxmox Backup

Время на прочтение3 мин
Количество просмотров5.6K

Как проверить стабильность работы сервера Proxmox Backup и избежать потери времени.

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

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии7

Неожиданная эффективность условных вероятностей

Время на прочтение11 мин
Количество просмотров8.1K

В последнее время я решил заняться задачами по теории вероятностей, потому что мне кажется, получение знаний в этой сфере принесёт большую пользу. Я нашёл ключ, часто использующийся для решения многих из них: накладываем условие на промежуточное состояние, а затем отдельно вычисляем значение этого промежуточного состояния. Это превращает очень сложные задачи в такие, где решение практически очевидно. [Однако в таком случае мы иногда обмениваем эффективность на простоту.]

Такой подход был полезен для решения задачи о днях рождения в очереди, и в статье я приведу ещё три примера, в которых это проявляется. Если задача покажется вам неинтересной, перейдите к следующей, они все разные.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Курс по изучению Kotlin и Android Studio с нуля до Junior. #1 Введение. Установка Android Studio

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

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

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

Читать далее
Всего голосов 11: ↑6 и ↓5+5
Комментарии11

Spring Boot. Настройка профилирования времени выполнения

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.3K

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+5
Комментарии13

Создание Kubernetes-кластера на пальцах или почему это не сложно

Время на прочтение6 мин
Количество просмотров32K

Привет, меня зовут Руслан, я энтузиаст одного отдела искусственного интеллекта, занимаюсь автоматизацией процесса разработки и контролем за инфраструктурой внутри Kubernetes. Хочу детально рассмотреть развёртку Kubernetes-кластера, показать решения на возможные ошибки, ответы на которые пришлось довольно долго поискать. После окончания статьи вы будете знать, как создать кластер, который подойдет почти под любые задачи.

Читать далее
Всего голосов 18: ↑14 и ↓4+18
Комментарии14

Жизнь после Docker: как команда VK Cloud переходила на CRI-O

Время на прочтение7 мин
Количество просмотров19K


Kubernetes прекратил поддержку Docker и отказался от dockershim — прокладки между kubelet и Docker, которая позволяет последнему работать с CRI. В итоге разработчики столкнулись с необходимостью использования новых, совместимых с CRI, движков для запуска контейнеров. Из числа общеизвестных таких два — containerd и CRI-O.

Меня зовут Александр Чадин, я руководитель команды разработки в VK Cloud. Расскажу, как мы искали замену Docker для сервиса Cloud Containers, на что ориентировались при выборе нового движка, как внедряли новое решение и с какими подводными камнями при этом столкнулись. 
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии9

Шпаргалка для подготовки к экзамену по машинному обучению

Время на прочтение9 мин
Количество просмотров16K

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

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

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии5

Про пытки Джулиана Ассанжа

Время на прочтение4 мин
Количество просмотров49K


Автор оригинальной статьи — профессор Нильс Мельцер (Nils Melzer), спец. докладчик ООН по пыткам.


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

Читать дальше →
Всего голосов 176: ↑150 и ↓26+124
Комментарии145

Нейросети и глубокое обучение, глава 1: использование нейросетей для распознавания рукописных цифр

Время на прочтение56 мин
Количество просмотров131K

Примечание


Michael NielsenПеред вами – перевод свободной онлайн-книги Майкла Нильсена «Neural Networks and Deep Learning», распространяемой под лицензией Creative Commons Attribution-NonCommercial 3.0 Unported License. Мотивацией к его созданию послужил успешный опыт перевода учебника по программированию, "Выразительный JavaScript". Книга по нейросетям тоже достаточно популярна, на неё активно ссылаются авторы англоязычных статей. Её переводов я не нашёл, за исключением перевода начала первой главы с сокращениями.

Желающие отблагодарить автора книги могут сделать это на её официальной странице, переводом через PayPal или биткоин. Для поддержки переводчика на Хабре есть форма «поддержать автора».


Введение


Этот учебник подробно расскажет вам о таких понятиях, как:

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

Нейросети (НС) и глубокое обучение (ГО) на сегодня дают наилучшее решение многих задач из областей распознавания изображений, голоса и обработки естественного языка. Этот учебник научит вас многим ключевым концепциям, лежащим в основе НС и ГО.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии4

Интеграционные тесты баз данных с помощью Spring Boot и Testcontainers

Время на прочтение5 мин
Количество просмотров23K

1. Обзор


С помощью Spring Data JPA можно легко создавать запросы к БД и тестировать их с помощью встроенной базы данных H2.


Но иногда тестирование на реальной базе данных намного более полезно, особенно если мы используем запросы, привязанные к конкретной реализации БД.


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

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии0

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

Время на прочтение13 мин
Количество просмотров74K
Привет, Хабр!

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

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

Модератор.

Коротко обо мне


Мне скоро 37 лет. До недавнего времени я хвастался тем, что у меня на месте все мои 32 зуба. И ведь действительно, мало у кого к этому возрасту на месте все зубы. (и в принципе, ничего удивительного: я попробовал прикинуть расходы на стоматологов, исходя из сегодняшних тарифов и вышла сумма, свыше $7.000 или свыше ₽450.000).

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

image
Всего голосов 54: ↑48 и ↓6+42
Комментарии172

Spring Boot — OAuth2 и JWT

Время на прочтение13 мин
Количество просмотров94K
Салют, друзья! Уже завтра стартуют первые занятия в новом потоке курса «Разработчик на Spring Framework». В связи с этим традиционно делимся полезным материалом по теме.



В этой статье мы изучим использование OAuth2 и JWT совместно со Spring Boot и Spring Security.

Сервер авторизации (Authorization Server)


Сервер авторизации (Authorization Server) является наиболее важным компонентом в архитектуре безопасности Web API. Сервер авторизации действует как единая точка авторизации и позволяет вашим приложениям и HTTP endpoints определять функции вашего приложения.

Сервер ресурсов (Resource Server)


Сервер авторизации предоставляет клиентам токен доступа для доступа к HTTP Endpoints сервера ресурсов (Resource Server). Сервер ресурсов — это коллекция библиотек, которая содержит HTTP Endpoints, статические ресурсы и динамические веб-страницы.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии5

Документируем и тестируем REST API с помощью SpringRestDocs

Время на прочтение11 мин
Количество просмотров23K
Добрый день, хочу затронуть тему документирования REST API. Сразу же оговорюсь, этот материал будет ориентирован на инженеров работающих в Spring экосистеме.
На нескольких последних проектах я использовал фреймворк SpringRestDocs, он успешно закрепился в портфолио, был показан знакомым, которые также начали успешно его применять и теперь я хочу поделиться с Вами в статье о его возможностях и преимуществах. Статья позволит разобраться с применением SpringRestDocs и начать его использовать.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии8

Моки, стабы и шпионы в Spock Framework

Время на прочтение7 мин
Количество просмотров24K

Spock предоставляет 3 мощных (но разных по сути) инструмента, упрощающих написание тестов: Mock, Stub и Spy.



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


Модульные тесты чаще всего разрабатываются для тестирования одного изолированного класса при помощи различных вариантов моков: Mock, Stub и Spy. Так тесты будут надёжнее и будут реже ломаться по мере того, как код зависимостей эволюционирует.


Такие изолированные тесты менее подвержены проблемам при изменении внутренних деталей реализации зависимостей.


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

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Понимание джойнов сломано. Это точно не пересечение кругов, честно

Время на прочтение4 мин
Количество просмотров315K

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


Я так устал от этих ответов с пересечениями множеств и кругов, что даже перестал поправлять людей.


Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

Читать дальше →
Всего голосов 179: ↑138 и ↓41+97
Комментарии225

Amazon выпустила Open Distro for Elasticsearch

Время на прочтение4 мин
Количество просмотров26K
Эта статья — обзор новостей о том, как:

  • Amazon выпустила Open Distro for Elasticsearch
  • почему они это сделали?
  • что это значит для компании Elastic и для Open Source вообще?

Elastic


Жила была компания Elastic.

Было у них несколько Open Source продуктов:

  • сам Elasticsearch: сервер, который получает, хранит логи и позволяет по ним делать поиск
  • Kibana: frontend движок, который берёт данные из Elasticsearch и из них рисует красивые репорты
  • ещё несколько утилит, которые собирают логи. Например LogStash

Elasticsearch бывает называют ELK (лось), как акроним основных элементов:

Elasticsearch
LogStash
Kibana

Хотя компоненты «L» и «K» в общем-то можно заменять на другие: Beats, Grafana,…

Ещё у Elastic есть X-Pack.
Это коммерческий продукт. Часть из возможностей X-Pack — платная (довольно дорогая) и часть — бесплатная (но лицензия всё равно коммерческая).

X-Pack расширяет возможности ELK:

— security
— alerting
— monitoring
— reporting
— graph
— …

Причём если не ставить X-Pack, то отсутствуют некоторые довольно существенные возможности. Например, по умолчанию ELK отсутствует аутентификация, то все данные «торчат» наружу. Можно прикрутить обратный прокси и сделать basic authentication (так себе вариант), а можно купить X-Pack.

Ход 1: Elastic хитро меняет лицензию


Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии15

Учебный курс по React, часть 2: функциональные компоненты

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

image


Часть 1: обзор курса, причины популярности React, ReactDOM и JSX
Часть 2: функциональные компоненты
Часть 3: файлы компонентов, структура проектов
Часть 4: родительские и дочерние компоненты
Часть 5: начало работы над TODO-приложением, основы стилизации
Часть 6: о некоторых особенностях курса, JSX и JavaScript
Часть 7: встроенные стили
Часть 8: продолжение работы над TODO-приложением, знакомство со свойствами компонентов
Часть 9: свойства компонентов
Часть 10: практикум по работе со свойствами компонентов и стилизации
Часть 11: динамическое формирование разметки и метод массивов map
Часть 12: практикум, третий этап работы над TODO-приложением
Часть 13: компоненты, основанные на классах
Часть 14: практикум по компонентам, основанным на классах, состояние компонентов
Часть 15: практикумы по работе с состоянием компонентов
Часть 16: четвёртый этап работы над TODO-приложением, обработка событий
Часть 17: пятый этап работы над TODO-приложением, модификация состояния компонентов
Часть 18: шестой этап работы над TODO-приложением
Часть 19: методы жизненного цикла компонентов
Часть 20: первое занятие по условному рендерингу
Часть 21: второе занятие и практикум по условному рендерингу
Часть 22: седьмой этап работы над TODO-приложением, загрузка данных из внешних источников
Часть 23: первое занятие по работе с формами
Часть 24: второе занятие по работе с формами
Часть 25: практикум по работе с формами
Часть 26: архитектура приложений, паттерн Container/Component
Часть 27: курсовой проект
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии4

Аутентификация и авторизация в микросервисных приложениях

Время на прочтение11 мин
Количество просмотров215K

Автор: Вячеслав Михайлов, Solutions Architect

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

Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии15

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность