Как стать автором
Обновить
2
0
Avtandil Kikabidze @L0NGMAN

Software Engineer

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

Пайплайны Gitlab CI: моя коллекция граблей

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

Привет, Хабр! Я Евгений Малышев, SRE-инженер в Купере (так теперь называется СберМаркет). Моя основная задача — это надежная работа сервисов фронтенда, и немалую роль в этом играют правильно построенные пайплайны CI/CD. В этом нам помогает Gitlab CI. В компании мы широко используем этот инструмент для создания общих шаблонов для сервисов на различных языках. На уровне отдельного репозитория легко расширить или настроить шаблонные джобы и добавить свои.

До этого у меня был опыт с Jenkins и Azure Devops, так что Gitlab CI мне показался довольно простым: есть стадии, есть правила запуска джоб с shell-подобным синтаксисом, да и скрипты джоб тоже используют bash-интерпретатор. Но в процессе близкого знакомства не раз возникали ситуации, когда поднимается то одна бровь, то обе, а то и руки в праведном гневе. Заходите посмотреть, какую коллекцию граблей собрал я.

Весь код с примерами граблей можно посмотреть в репозитории.

Пройтись по граблям
Всего голосов 28: ↑23 и ↓5+23
Комментарии9

Markdown в IntelliJ IDEA как отдельный вид искусства. Рисуем диаграммы и вызываем bash команды

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

Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пару уникальных фич, которые команда Spring АйО хотела бы выделить особенно.

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

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

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


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


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

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

О наиболее значимых — т.е. востребованных нашими DevOps-инженерами и клиентами — нововведениях в последних релизах Community-редакции GitLab и пойдет речь в статье.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии13

Что смотрели и читали по PHP в 2021

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

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

Как собирались мнения

Ссылку на опрос помогли распространить городские чаты и админы крупных PHP-каналов, деврелы компаний, где в стеке есть PHP, конференция PHP Russia, сайт phpcommunity.ru. Вот полный список классных ребят и компаний, которые помогли исследованию сбыться.

Еще пара полезных ссылок на старте.

- Подробнее про результаты опроса за 2021 и сравнение с 2020.

- А здесь 80+ видео и статей за 2020 — в подборке, подготовленной @spasibo_kep

Поехали.

Читать далее
Всего голосов 30: ↑28 и ↓2+37
Комментарии0

Best practices в Code Review

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

Правильный процесс ревью кода — это процесс итеративного улучшения продукты и контроля.
Контроля того, что:
1) Cоблюдены общие правила и договорённости
2) Решение не избыточное и масштабируемое.
3) Решение покрывает все критерии приемки указанные в описании к задаче

Для начала будет хорошо задать в своей команды такие вопросы:
1) Сколько времени занимает ревью кода для средней (сферической в вакууме) задачи
2) Как вы минимизируете время ревью?
3) Как вы определяете, что ревью конкретной задачи сделано правильно?

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

Стоит ли учить PHP в 2022 году

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

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

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

Обычно при обсуждении языка программирования приводят его сильные стороны, поэтому я буду следовать традиции и расскажу, почему PHP – это клевый  и современный язык программирования.

Отличная производительность. Команда CORE PHP разработчиков выполнила гигантскую работу по оптимизации PHP и сделала его более производительным. Так, например, в своей статье Дмитрий Стогов приводит бенчмарк для версии PHP 7.0, где демонстрируется, что PHP обходит по производительности своих конкурентов, таких как Python и Ruby, и даже не сильно отстает от Java с выключенным  JIT.

Читать далее
Всего голосов 32: ↑25 и ↓7+26
Комментарии126

Web PUSH Notifications быстро и просто

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

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


Информации по этой теме в интернете полно, но она фрагментирована, разбросана по разным ресурсам и перемешена с уведомлениями для мобильных устройств с примерами на Java, C++ и Python. Нас же, как веб-разработчиков, интересует JavaScript. В этой статье я постараюсь саккумулировать всю необходимую и полезную информацию.


Web PUSH Notifications


Я думаю, вы уже знаете что такое push-уведомления, но я всё же напишу коротко о главном.


Пользователь, заходя на сайт, вытягивает (pull) с него данные. Это удобно и безопасно, но с развитием интернет ресурсов, появилась необходимость оперативно доставлять информацию пользователям не дожидаясь пока те сами сделают запрос. Так и появилась технология принудительной доставки (push) данных с сервера клиенту.

Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии67

Web Push и Vue.js, еще раз о работе с веб-пуш сообщениями на фронтенде

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

Можно найти статьи, датированные 2017...2018 годом, ориентированные на использование сравнительно низкоуровневых средств для отправки и получения веб-пуш сообщений, например, при помощи библиотеки web-push-libs/web-push. Эта библиотека по-прежнему развивается, однако в настоящее время гораздо проще работать с библиотеками от firebase.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии12

Аналог Moodle или как преподаватель-юрист создавал собственную систему дистанционного обучения. Часть 1. Начало

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

Дисклеймер: система дистанционного обучения (СДО) в настоящее время введена в эксплуатацию (продакшн), апробирована, протестирована и успешно работает. Система бесплатна, имеет открытый исходный код и выложена в репозитории GitHub. С точки зрения стека технологий она построена на фреймворке Laravel 8.0 (PHP 7.4) с использованием библиотек и иных пакетов (программ): React (redux+router), SocketIo, Docker, NodeJs, Rest API, WebRTC, Leaflet и т.д.

В серии статей я расскажу, как устроена система, через что пришлось пройти при ее разработке и какие проблемы пришлось решать.

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

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

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

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

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

Внедряем кросс-платформенные пуш-уведомления: начало

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

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


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

20 советов пилоту DJI Mavic Mini, чтобы уберечь свой дрон от крушений и утраты

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


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

Но этот квадрокоптер — не для рекордов высоты, дальности и скорости. Он очень лёгкий, боится ветра и темноты, теряет сигнал пульта даже при незначительных помехах. Поэтому запаситесь терпением, придержите свои амбиции пилота — покорителя высот, и желание делать крутые кадры уровня Mavic 2 Pro или Inspire.

В этой статье Вы найдёте два десятка рекомендаций, основных на моём личном опыте эксплуатации DJI Mavic Mini, которые уберегут начинающего пилота от глупых ошибок и не очевидных опасных ситуаций.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии19

KODI: собираем удобный и функциональный медиацентр для дома. Часть 1

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

Поговорим о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.

Читать дальше →
Всего голосов 55: ↑54 и ↓1+68
Комментарии189

Создание favicon для сайта 2020

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

Что такое favicon и для чего он нужен?


Favicon – это значок (иконка), который отображается во вкладке браузера, закладках, а также в сниппетах результатов поиска.

image

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

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

Какой формат использовать для favicon?


Раньше в качестве основного формата использовали ICO. Особенность данного формата – мульти-размерность. Данный файл может хранить в себе несколько размеров иконки. На смену ICO пришел формат PNG. ICO все еще поддерживаемый, но большинство современных браузеров выбирают PNG формат иконки, который легче. Некоторые браузеры не могут выбрать правильный значок в файле ICO, что приводит к неправильному использования значка с низким разрешением.

О каких платформах пойдет речь в этой статье?


  • Десктопные браузеры
  • Chrome на Android
  • Иконка закладки в iOS (PWA)
  • macOS
  • Windows

Читать дальше →
Всего голосов 44: ↑42 и ↓2+46
Комментарии30

Ресурсы для веб-разработчика: API и UI-элементы

Время на прочтение3 мин
Количество просмотров9.9K
У себя в блоге мы готовили несколько дайджестов с open source бенчмарками Linux-серверов для сисадминов (раз, два). Сегодня расскажем об открытых инструментах для веб-разработчиков.

Под катом — ресурсы с векторными и SVG-иконками и API.

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

Разворачиваем Jenkins как код

Время на прочтение8 мин
Количество просмотров14K
Прим. перев.: это перевод статьи из инженерного блога компании Preply о том, как можно использовать конфигурацию как код для такого популярного CI/CD инструмента как Jenkins.

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

Кроме того, в данной статье мы попробуем найти ответы на такие вопросы как:

  • Стал ли наш Jenkins стабильнее?
  • Можем ли мы делать частые изменения в конфигурацию сервера и джоб?
  • Является ли обновление Jenkins для нас все еще болью?
  • Можем ли мы контролировать все наши изменения?
  • Можем ли мы быстро восстановить Jenkins в случае факапа?

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

Нюансы современной медицины

Время на прочтение10 мин
Количество просмотров52K
Современная медицина достигла значительных успехов – и сегодня умеет лечить такие болезни, о существовании которых 100 лет назад никто и не подозревал. Однако получить грамотную квалифицированную врачебную помощь по-прежнему непросто – а всё потому, что есть нюансы. О некоторых из этих нюансах и пойдёт речь в этой статье.
Читать дальше →
Всего голосов 92: ↑67 и ↓25+62
Комментарии387

Небезопасные функции PHP

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

Холдинг Modesco — это более 300 инфосайтов и 5 крупных Интернет-сервисов. Проекты регулярно покупаются и продаются. Как вы понимаете, поддерживать качество кода на высоком уровне в данной ситуации физически невозможно. Да и основное внимание программистов, как правило, сосредоточено на самих сервисах. Взломы, shell, заражения сайтов прочими вредоносными штуками… Все это наносит ощутимый вред пользователям и компании. Чтобы избежать этого, частенько приходится искать довольно нестандартные способы для уменьшения рисков.


cat

Читать дальше →
Всего голосов 34: ↑24 и ↓10+14
Комментарии20

Ещё лучшая ZIP-бомба

Время на прочтение25 мин
Количество просмотров130K
В статье показано, как создать нерекурсивную zip-бомбу, которая обеспечивает высокую степень сжатия путём перекрытия файлов внутри zip-контейнера. «Нерекурсивная» означает, что она не зависит от рекурсивной распаковки декомпрессорами файлов, вложенных в zip-архивы: здесь всего один раунд. Выходной размер увеличивается квадратично от входного, достигая степени сжатия более 28 миллионов (10 МБ → 281 ТБ) в пределах формата zip. Ещё большее расширение возможно с помощью 64-разрядных расширений. Конструкция использует только наиболее распространённый алгоритм сжатия DEFLATE и совместима с большинством парсеров zip.

  • zbsm.zip 42 kB → 5.5 GB
  • zblg.zip 10 MB → 281 TB
  • zbxl.zip 46 MB → 4.5 PB (Zip64, менее совместима с парсерами)

Исходный код:
git clone https://www.bamsoftware.com/git/zipbomb.git
zipbomb-20190702.zip

Данные и исходники иллюстраций:
git clone https://www.bamsoftware.com/git/zipbomb-paper.git
Читать дальше →
Всего голосов 176: ↑176 и ↓0+176
Комментарии53

Логирование в распределенном php-приложении

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


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

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии16
1
23 ...

Информация

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