Search
Write a publication
Pull to refresh
12
0

Backend software engineer and tech lead

Send message

Быстрый запуск и использование своего открытого docker-registry

Reading time3 min
Views44K
Docker – это программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации (см. Википедию).
Подробные инструкции по установке есть на официальном сайте: https://docs.docker.com/engine/installation/

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

Когда я начал делать новый проект — решил попробовать использовать докер. Получилось четыре контейнера, которые надо как-то доставлять на сервер. Далее последует рассказ о том, что у меня из этого получилось.

Что имеется на входе:

  • виртуальный сервер с IP-адресом (без домена) на Ubuntu 14.04 64bit с docker@1.10.3 — здесь мы будем поднимать регистр и здесь же забирать из него образы
  • рабочий компьютер на OS X 10.11.3 с docker@1.9.1 и docker-machine@0.5.5

Регистр докера — это хранилище с версионированными докер-образами.
Регистр удобно использовать для доставки приложения на сервер:

  1. на рабочем компьютере собираем образ и отправляем в регистр
  2. на виртуальном сервере забираем образ из регистра и запускаем

У докера есть официальный регистр, как сервис: https://hub.docker.com
Там можно размещать неограниченное количество публичных образов и только один приватный. Большее количество приватных образов можно добавлять за отдельную плату.

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

Регистр докера способен работать как по http, так и по https. При использовании защищённого соединения возможна так же авторизация отдельных пользователей. Но нужен сертификат, который можно купить только для доменного имени. Самоподписанный сертификат у меня так и не получилось заставить работать (читал в интернетах, что с этим есть проблемы). Ввиду того, что у меня нет доменного имени — мы рассмотрим открытый регистр с доступом по http. Это значит, что если кто-то узнает адрес вашего регистра — он сможет свободно им пользоваться.
Читать дальше →

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Reading time6 min
Views206K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?

GitLab CI: 6 фич из последних релизов, которых мы так ждали

Reading time8 min
Views92K


В эпоху повсеместного CI/CD мы сталкиваемся с большим спектром сопутствующих инструментов, в том числе и CI-систем. Однако именно GitLab стал для нас самым близким, по-настоящему «родным». Заметную популярность он снискал и в индустрии в целом*. Разработчики продукта не отставали от роста интереса к его использованию, регулярно радуя сообщество разработчиков и DevOps-инженеров новыми версиями.


Агрегация по месяцам и тегам репозитория GitLab

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

О наиболее значимых — т.е. востребованных нашими DevOps-инженерами и клиентами — нововведениях в последних релизах Community-редакции GitLab и пойдет речь в статье.
Читать дальше →

Полная домашняя автоматизация в новостройке. Продолжение

Reading time9 min
Views93K
Неожиданно статья про мой опыт автоматизации однокомнатной квартиры площадью 41 кв. м. в новостройке, опубликованная две недели назад, стала популярна и на 10 марта её добавил в закладки 781 image человек, просмотрели 123 921 раз и Хабр даже запилил рекламный блок в разделе «Рекомендуем» с пометкой «Интересно».


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

Перед вами продолжение истории, где я отвечу на комментарии, приведу фотографии квартиры с мебелью, получившиеся электрические щиты, а также расскажу о тех сложностях, с которыми я столкнулся после того, как перешёл c openHAB в другую систему домашней автоматизации — Home Assistant.
Самая умная однушка ...

REST API Best Practices

Reading time7 min
Views454K
Привет, Хабр! Представляю вашему вниманию перевод статьи "REST API Best Practices" автора Krishna Srinivasan.

REST становится общим подходом для представления сервисов окружающему миру. Причина его популярности заключается в его простоте, легкости использования, доступе через HTTP и другие. Существует неправильное представление о том, что все данные, доступные через сеть, считаются REST, но это не так. В этой статье я собираюсь объяснить вам некоторые best practices, которые вы должны всегда помнить при реализации собственного REST приложения. Я бы хотел услышать ваш опыт в REST приложениях, поэтому если вы знаете best practies, которые не упомянуты в этой статье, пожалуйста, поделитесь с нами в комментариях.

Disclamer: все best practies основаны на моем личном опыте. Если вы имеете другое мнение, не стесняйтесь отправлять его мне на email, и мы обсудим его.

Здесь представлен список best practices, которые будут обсуждаться в этой статье:

1. Конечные точки в URL – имя существительное, не глагол
2. Множественное число
3. Документация
4. Версия вашего приложения
5. Пагинация
6. Использование SSL
7. HTTP методы
8. Эффективное использование кодов ответов HTTP
Читать далее

Docker + Laravel = ❤

Reading time10 min
Views86K

laravel-in-docker


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

В данной статье я расскажу о своём опыте "заворачивания" Laravel-приложения в Docker-контейнер да так, что бы и локально с ним могли работать frontend и backend разработчики, и запуск его на production был максимально прост. Так же CI будет автоматически запускать статические анализаторы кода, phpunit-тесты, производить сборку образов.


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


  • "Использую докер для локальной разработки. Ставлю laradock и беды не знаю". Круто, но как обстоят дела с автоматизацией и запуском на production?
  • "Собираю один контейнер (монолит) на базе fedora:latest (~230 Mb), ставлю в него все сервисы (nginx, бд, кэш, etc), запускаю всё супервизором внутри". Тоже отлично, прост в запуске, но как на счёт идеологии "один контейнер — один процесс"? Как обстоят дела с балансировкой и управлением процессами? Как же размер образа?
  • "Вот вам куски конфигов, приправляем выдержками из sh-скриптов, добавим магических env-значений, пользуйтесь". Спасибо, но как же на счёт хотя бы одного живого примера, который я бы мог форкнуть и полноценно поиграться?

Для нетерпеливых — ссылка на репозиторий, склонировав который ты сможешь запустить Laravel-приложение одной командой. Так же не составит труда его запустить на том же rancher, правильно "слинковав" контейнеры, или использовать продуктовый вариант docker-compose.yml как отправную точку.
Читать дальше →

Пошаговое руководство по настройке Laravel 6 в Google Cloud Run с непрерывной интеграцией

Reading time8 min
Views5K
Всем привет! В преддверии старта курсов «Framework Laravel» и «Backend-разработчик на PHP», продолжаем делиться интересным материалом по теме. Поехали.




За последние несколько лет популярность Laravel резко возросла. Сообщество Laravel даже придерживается мнения, что Laravel сделал процесс работы на PHP приятнее, по сравнению с той болью, которая была раньше. В Laravel 6 есть несколько новых интересных функций. Получение супер-масштабируемого рабочего URL-адреса для вашего приложения занимает часы, если не дни. А создание чего-то вроде Kubernetes – это тяжелейшая задача. Именно в таких случаях Google Cloud Run выступает в лучшем свете, ведь с его помощью вы можете получить рабочий HTTPs URL-адрес для любого из ваших контейнерных приложений в считанные минуты.

Google Cloud Run является бессерверным и полностью управляется Google. Вы получаете супер-масштабирование, посекундную оплату, HTTPs URL и собственный маппинг домена.

Если вы хотите запустить stateless контейнеры, Cloud run – самый простой способ это сделать. В этой статье я подробно расскажу, как заставить ваше приложение Laravel 6 работать на Google cloud run с Continous Integration (CI).
Читать дальше →

Какие английские слова IT-лексикона мы неправильно произносим чаще всего

Reading time5 min
Views173K
Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
Читать дальше →

Почему задние фонари на Cadillac XLR могут стоить больше, чем подержанная Corolla

Reading time4 min
Views77K


Иногда огрехи в дизайне видны прямо сразу, и их неряшливое исполнение шлёпает вас по лицу, словно ломоть мокрой ветчины. Другие оказываются более коварными, и их проблемы скрываются под поверхностью. Задние фонари Cadillac XLR – пример из последней группы, и эти проблемы доставляют немало головной боли ещё существующим владельцам XLR, которая обходится им недёшево.

Если вы забыли, напомню, что Cadillac XLR был, по сути, Corvette в красивом костюме кадиллака и с улучшенным салоном. GM делала эти дорогие тачки с 2004 по 2009, у них было много инноваций – к примеру, это была первая машина от Cadillac с адаптивным круиз-контролем и сиденьями, которые умели и охладить, и подогреть ваши булки. А ещё у него были модные светодиодные задние фонари.

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

PHP-Дайджест № 166 (7 – 21 октября 2019)

Reading time3 min
Views13K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4 RC4 и другие релизы, новости из PHP Internals, порция полезных инструментов, стримы, видео с конференций, подкасты и многое другое.

Приятного чтения!


Новый проект братьев Дуровых: Telegram Open Network

Reading time12 min
Views89K
Приближается момент полномасштабного запуска самого ожидаемого криптопроекта, который действительно может изменить мир. К началу ноября сеть TON будет запущена и все смогут в полной мере оценить её достоинства и начать использовать по назначению: разработчики — создавать полезные и прибыльные приложения, пользователи — использовать функционал полезных приложений, с лёгкостью оплачивая его, при необходимости.

Уже запущена тестовая сеть и на официальном сайте есть два интересных документа, проливающих свет на то, как будет функционировать этот проект. Это описание TON, 132 страницы (ссылки на страницы в тексте указаны в круглых скобках, (45)) и описание блокчейна, 120 страниц (ссылки на страницы указаны в квадратных скобках, [55]). Виртуальная машина и язык программирования смарт-контрактов в этой статье рассматриваться не будут, кому нужно — разберёт сам, а кто не разберёт — тому не нужно.

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

Итак, что такое Telegram Open Network (TON)?


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

PHP-Дайджест № 162 (1 – 12 августа 2019)

Reading time4 min
Views16K

Свежая подборка со ссылками на новости и материалы. В выпуске: О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое.

Приятного чтения!


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

Reading time8 min
Views53K
image

Я только что закончил семь собеседований в компаниях Кремниевой долины. В конечном итоге я принял предложение разработки программного обеспечения в Facebook.

Вот как я готовился к этим собеседованию и чему я научился на этом пути.

Мой многолетний путь в Кремниевую долину


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

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

Я оставил свое место в качестве ведущего инженера iOS в чудесной компании в Мельбурне и я вернулся обратно в мой родной город Перт, чтобы учиться. Тут я буду готовиться к переговорному процессу которое ждет меня в Кремниевой долине. Я знал, что это будет невероятно сложно и тяжело.

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

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

Oracle, типичные задачи SQL. Размножение строк таблицы в зависимости от значения числа в колонке

Reading time3 min
Views44K
image

На носу зима, приближаются морозы, а это значит, что сегодня мы будем мариновать бананы. Для этого нам понадобятся следующие ингредиенты:
ID INGREDIENT MEASURE QUANTITY
1 Банан Штука 3
2 Петрушка Ветка 2
3 Вода Литр 3
4 Соль Ложка 1
5 Уксус Ложка 2
Читать дальше →

Задачи и решения для бойца PostgreSQL

Reading time8 min
Views51K

Приветствую всех любителей SQL!

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

Представленные ответы подходят для PostgreSQL (большинство задач подойдут и для других СУБД, но результаты и решения могут быть иными. Даже интересно, где возникнут отличия)

Постарайтесь ответить самостоятельно, перед открытием спойлера.

Поехали!
Читать дальше →

Новая иммунотерапия убрала все опухоли у женщины с метастатическим раком молочной железы

Reading time4 min
Views67K


Работа, опубликованная в Nature Medicine учёными из National Cancer Institute (NCI), описывает новый тип иммунотерапии, который привёл к полному исчезновению опухолей у женщины с метастатическим раком молочной железы, которой осталось всего несколько месяцев жизни.
Результаты показывают, как естественные опухолевые инфильтрирующие лимфоциты (TIL) были извлечены из опухоли пациента, выращены вне её тела, чтобы увеличить их количество, и введены обратно пациенту для борьбы с раком. Пациент ранее получил несколько форм лечения, включая гормональную терапию и химиотерапию, но никакая из них не остановила прогрессирование рака. После лечения все опухоли пациентки исчезли, и через 22 месяца она все ещё находится в ремиссии.
Читать дальше →

Редкий SQL

Reading time6 min
Views50K

Вводная


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

Препарируем PHP. Как устроены while, foreach, array_walk и некоторые другие страшные слова

Reading time7 min
Views21K


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

Исходники от master ветки (это сейчас 7.4 с вкраплениями 8)
Генератор опкодов от php 7.3.0.
Замеры производились на 7.3.6.

Дисклеймер для зануд: упоминание пары наносекунд и тактов процессора – это такой полемический приём под названием «гипербола».

Может быть, на самом деле, там десятки или сотни наносекунд и тысячи тактов, но это всё равно настолько малые величины, что необходимость экономить на них говорит о том, что что-то в вашем коде не так.
Читать дальше →

Laravel Event Projector и концепция порождения событий

Reading time5 min
Views5.8K


Перевод статьи подготовлен для студентов профессионального курса «Framework Laravel»




Фрек ван дер Хертен (Freek Van der Herten) и команда Spatie долго трудились над Laravel Event Projector, пакетом, позволяющим применять концепцию порождения событий (Event Sourcing) во фреймворке Laravel. И вот наконец доступна первая стабильная версия (v1.0.0)!


Вы можете установить Event Projector в свой проект при помощи composer и благодаря автоматическому обнаружению пакетов в Laravel приступить к работе сразу же после публикации миграций пакета и конфигурирования!

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

Готовим полнотекстовый поиск в Postgres. Часть 1

Reading time7 min
Views95K

UPD. Часть 2


Эта статья — первая из небольшой серии статей о том, как оптимально настроить полнотекстовый поиск в PostgreSQL. Мне пришлось недавно решать подобную задачу на работе — и я был очень удивлен отсутствию хоть сколько-нибудь вменяемых материалов по этому поводу. Мой опыт борьбы под катом.

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

Information

Rating
1,477-th
Date of birth
Registered
Activity

Specialization

Backend Developer, Chief Technology Officer (CTO)
Lead
PHP
Laravel
Project management