Pull to refresh
114
0
Юрий Пихтарев @Exileum

User

Send message

Система автоматического документирования REST-API в Laravel проектах

Reading time8 min
Views24K

Преамбула


Для того, чтоб описать и задокументировать правила клиент-серверного
взаимодействия используя Rest-api можно выделить три основных метода:


  1. Описывать своим коллегам правила обращения к серверу на пальцах
    Этот метод быстр и не требует долгосрочной поддержки, но высока вероятность, что вас за это будут бить.
  2. Руками составлять Google-docs/Wiki/Readme в проекте
    Удобно тем, что однажды написанная документация не требует повторного объяснения. Её можно показать коллегам и даже иногда заказчику. Минусом данного метода является долгосрочная поддержка такой документации. Когда Api в проекте вырастает до таких размеров, что сама мысль "А когда же я обновлял документацию?" вызывает холодок по спине, тогда вы понимаете, что дальше так продолжаться не может. Формально вы можете обновлять документацию очень часто и маленькими фиксами, но это до первого отпуска.
  3. Использовать систему автодокументирования
    И вот для того, чтобы решить минусы первых двух методов человечество придумало системы автоматического документирования. Основная идея заключается в том, что к проекту пристыковывается некий плагин, который собирает информацию по вашему коду, сам составляет документацию и обёртывает её в удобочитаемый формат. Но большинство решений по этому методу не идеальны. Давайте попробуем сделать инструмент, который поможет получить документацию нашего проекта с минимальным количеством телодвижений

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments6

Распространение программ на Go. Часть 1

Reading time4 min
Views11K
Недавно прочел достаточно неплохую статью о инсталяции программ на Go. Где был показан простой пример того как можно реализовать установку бинарника под «любую» (unix friendly) операционную систему. Решил написать более подробный цикл статей на эту тему.

image

Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments3

DevConf: из шаурмы в Symfony или миграция legacy

Reading time4 min
Views5.5K
Под занавес прошлогоднего DevConf Артем Дегтярь и Павел Степанец рассказали как они мигрировали ERP-систему написанную на «голом» PHP5.3, работающую на винде, в Symfony + PHP7, и построили на его основе облачный сервис в сфере b2b. Видео доступно по ссылке доклада. А я представлю текстовый, немного сжатый, вариант.


Мы работали над большой системой, которая позволяла создавать заявки и менять статусы, плюс биллинг, учет ТМЦ и много всего. Сегодня мы расскажем как рефакторили эту систему, мигрировали ее в Symfony. Первоначально система была написана на чистом PHP, и имела много «особенностей». Например, этот пятиуровневый тернарник на слайде весьма оригинально работал с датой, пришедшей от юзера.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments18

Оптимизация бэкенда при переходе на api-based архитектуру

Reading time6 min
Views9.9K


Привет, Хабр.

На недавнем митапе в офисе Tutu я рассказывал о том, как мы в рамках редизайна superjob.ru совершали переход от монолитного приложения к api-based архитектуре с красивыми single page applications на ReactJS на фронте и шустрым PHP-приложением на бэке. В этой статье я бы хотел подробнее рассказать о том, как мы оптимизировали наше бэкенд-приложение, чтобы оно действительно стало шустрым.

Заинтересовавшихся — прошу под кат.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Переезд из СНГ в Чехию, собственный опыт

Reading time5 min
Views144K
 Пару месяцев назад на Хабре была статья про поиск работы в Чехии, а в комментариях возник интерес к тому, как заводить трактор и что нужно делать для этого. Этой заметкой хочу прояснить некоторые вопросы и, возможно, помочь принять решение тем, кто сомневается.  

image
image
Одна из центральных площадей г. Праги (Staroměstské náměstí)

Читать дальше →
Total votes 54: ↑43 and ↓11+32
Comments255

Отправка почты из Docker-контейнера (докеризация postfix и sasl)

Reading time6 min
Views28K
Когда я расположил приложение в Docker-контейнере и попробовал отправить email на почтовый сервер в другом Docker-контейнере, столкнулся с непредвиденной проблемой. Почтовый сервер postfix по умолчанию отправляет почту на произвольный домен получателя только от локального клиента. Все остальные домены нужно прописывать в параметре relay_domains, и если параметр mynetwors настроен правильно, то почта будет отправляться на перечисленные в параметре relay_domains домены с клиента из mynetwors.

В принципе, мне этого было достаточно, т.к. приложение теоретически должно было отправлять почту на ровно один корпоративный почтовый сервер. Но такое решение меня не очень устраивало, потому что задача может поменяться в любой момент. Поэтому, я попытался настроить sasl-авторизацию, которая позволяет отправлять почту авторизованным пользователям на произвольный домен.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments15

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

Reading time3 min
Views21K

Преамбула: Это не более чем мой скромный манифест, статья вода и автор опозорился. Я предупредил…

Здравствуйте, я fullstack разработчик. Разработкой я увлекся ещё в далёком 2009 году, когда мне было 16. Начинал я постепенно и катализатором моего увлечения, как ни странно, стала l2. Эхх, чудесные были времена, дивный новый мир и прекрасные хроники C6.
Читать дальше →
Total votes 75: ↑31 and ↓44-13
Comments83

Defer: из Go в PHP

Reading time3 min
Views11K

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


У defer есть несколько очевидных и не очень достоинств:


  • улучшает понимание кода — при создании ресурса сразу виден код, ответственный за его освобождение. Не нужно искать try {} finally {} или все точки выхода из функции
  • позволяет избежать частых ошибок, связанных с освобождением ресурсов, например, с необработанными исключениями, или в случае открытия нескольких ресурсов.
Читать дальше →
Total votes 28: ↑19 and ↓9+10
Comments26

Система сбора, анализа, уведомлений и визуализации логов на syslog-ng, elasticsearch, kibana, grafana, elasticalert

Reading time34 min
Views118K

image


Что мы получим после этой статьи:


Систему сбора и анализа логов на syslog-ng, elasticsearch в качестве хранилища данных, kibana и grafana в качестве систем визуализации данных, kibana для удобного поиска по логам, elasticalert для отправки уведомлений по событиям. Приготовьтесь, туториал объемный.


Какие логи будем собирать:


  • все системные логи разложенные по индексам в зависимости от их facility(auth,syslog,messages и т.д.);
  • логи nginx — access и error;
  • логи pm2;
  • и др.

Обоснование выбора системы


Почему я выбрал связку с syslog-ng в качестве отправителя, парсера и приемщика логов? Да потому что он очень быстрый, надежный, не требовательный к ресурсам(да да — logstash в качестве агентов на серверах и виртуальных машинах просто убожество в плане пожирания ресурсов и требованием java), с внятным синтаксисом конфигов(вы видели rsyslog? — это тихий ужас), с широкими возможностями — парсинг, фильтрация, большое количество хранилищ данных(postgresql,mysql,elasticsearch,files и т.д.), буферизация(upd не поддерживает буферизацию), сторонние модули и другие фишки.


Требования:


  • Ubuntu 16.04 или debian 8-9;
  • vm для развертывания;
  • Прямые руки.

Приступим или добро пожаловать под кат

Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments36

DDoS в обход Куратора: простые действия для спокойной жизни

Reading time8 min
Views19K

Недавно в Москве прошла вторая конференция по эксплуатации и администрированию информационных систем Uptime.commuinty, на которой мы тоже поделились своим опытом. У нас, как обычно, о наболевшем — про DDoS.



DDoS-атаки на Хабр начались лет десять назад и до сих пор представляют для нас неприятную проблему. Сначала были робкие попытки чуть-чуть подзалить, а сейчас для нас обычный DDoS — это порядка 30 Гбит/с. Это и не удивительно, потому что сейчас у каждой бабушки в Москве есть 50Мб. Всё по классике: одна старушка — 50, 10 старушек — 500…

Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments18

Git снизу вверх

Reading time27 min
Views126K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →
Total votes 104: ↑102 and ↓2+100
Comments32

Переход из тестировщика в руководители проектов

Reading time5 min
Views22K


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


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


В этой статье я делюсь наблюдениями и выводами. Как в одном человеке конфликтуют привычки тестировщика и обязанности руководителя проекта? С какими проблемами приходится сталкиваться? Какую пользу можно извлечь при таком переходе? Если хотите получить ответы на эти вопросы, добро пожаловать под кат.

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments22

Архитектура сервиса сбора и классификации объявлений жилья из Вконтакте

Reading time5 min
Views9K


В этой статье я расскажу о том, как устроен и развивался сервис по поиску объявлений жилья из Вконтакте, почему была выбрана сервис-ориентированная архитектура, а также какие технологии и решения использовались при его разработке.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments10

Установка XenForo+Memcahed+ElasticSearch на Plesk домен и использование Elastic Stack для анализа данных

Reading time7 min
Views4.8K


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

Целью статьи является описание процедуры установки современного движка XenForo для разворачивания форумов c использованием кэширования на базе memcached и мощнейшего поискового движка ElasticSearch. Эти сервисы будут работать внутри Docker контейнеров и разворачиваться и управляться через интерфейс Plesk.

Кроме того, в статье затронуты вопросы более широкого использования Elastic Stack (ElasticSearch+Logstash+Kibana) в контексте Plesk для анализа данных. Например, анализа поисковых запросов на форуме и анализа логов сервера.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments2

PHP-Дайджест № 119 (10 – 29 октября 2017)

Reading time3 min
Views15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC5 и другие релизы, предложения из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!


Читать дальше →
Total votes 56: ↑54 and ↓2+52
Comments10

Веб-приложение на Node и Vue, часть 2: компоненты, формы, маршруты

Reading time13 min
Views48K
Перед вами — вторая часть серии материалов, которая посвящена созданию веб-приложения Budget Manager с использованием Node.js, Vue.js и MongoDB. В первой части мы занимались сервером, а именно — подготовили основные методы RESTful API и наладили JWT-аутентификацию. Сегодня приступим к работе над клиентской частью приложения, создадим каркас фронтенда, средства для регистрации в системе и входа в неё, поговорим о маршрутах и об их защите.

image
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments9

Дюжина приемов в Linux, которые действительно сэкономят уйму времени

Reading time9 min
Views136K


Эта статья также есть на английском.

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

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

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →
Total votes 128: ↑122 and ↓6+116
Comments169

Сheat-sheets «регулярные выражения»

Reading time1 min
Views23K
Ловите 2 плаката с регулярными выражениями в форматах A2 и A3.

Плакаты просто идеальные, потому что красивые и полезные сразу. Распечатайте, повесьте, любуйтесь и пользуйтесь.
Читать дальше →
Total votes 36: ↑28 and ↓8+20
Comments44

PHP жив. PHP 7 на практике

Reading time6 min
Views35K

Недавно PHP-проекты Avito перешли на версию PHP 7.1. По этому случаю мы решили вспомнить, как происходил переход на PHP 7.0 у нас и наших коллег из OLX. Дела давно минувших дней, но остались красивые графики, которые хочется показать миру.


Первая часть рассказа основана на статье PHP’s not dead! PHP7 in practice, которую написал наш коллега из OLX Łukasz Szymański (Лукаш Шиманьски): переход OLX на PHP 7. Во второй части — опыт перехода Avito на PHP 7.0 и PHP 7.1: процесс, трудности, результаты с графиками.


Total votes 56: ↑54 and ↓2+52
Comments81

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity