Pull to refresh
0
@artyomGread⁠-⁠only

User

Send message

Symfony 4: Тестируем плагин Symfony Flex

Reading time5 min
Reach and readers19K
Несколько месяцев назад вышла альфа версия Composer плагина Symfony Flex. С выпуском Symfony 3.3 стало возможным протестировать работу данного плагина и «попробовать на вкус» подход к построению приложений на Symfony 4. Что мы сейчас и попробуем сделать.
Читать дальше →

Непрерывная интеграция с помощью Drone CI, Docker и Ansible

Reading time13 min
Reach and readers59K

image


Можете представить, что Вам больше никогда не придется устанавливать зависимости и настраивать конфигурации вручную на вашем сервере непрерывной интеграции? А вы верите в то, что каждый шаг вашего билда может быть по-настоящему изолированным и работать исключительно в Docker контейнерах? В конце концов, хотели бы вы попробовать инструмент, который входит в топ 20 всех открытых проектов, написанных на Golang, и имеет 9k+ звездочек на Github?


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


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

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

Reading time5 min
Reach and readers23K
На днях мы наткнулись на интересную статью на блог-платформе Medium, речь в которой идет о свежем проекте компании Fog Creek — Glitch (с английского «глюк», «сбой программы»). Бета-версия проекта стартовала в декабре 2016 года, правда, под другим названием, но об этом позже.

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



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

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

Reading time8 min
Reach and readers60K
image
Автор иллюстрации — John Kenn

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

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

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

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

Генерация документов в doc, excel, pdf и других форматах на сервере

Reading time3 min
Reach and readers44K
Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.

image

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

Платформа для быстрого создания RESTful API

Reading time2 min
Reach and readers22K
За последние несколько лет мне пришлось создать много API на PHP. Большая часть из них была RESTful. Первый раз это было интересно — часы обсуждения формата ответа, содержимого ошибок, вариантов авторизации и прочей романтики. Во второй раз не покидало чувство дежавю. На третий раз уже было понятно — надо что-то менять…

Ну и на четвёртый раз, когда передо мной поставили задачу создания API, параллельно разработке основного проекта, я приступил к созданию универсальной платформы для создания API в котором уже будут решены все «главные» вопросы:

  1. Формат ответа (в том числе и ошибок)
  2. Форматирование даты
  3. Ведение документации
  4. Авторизации и аутентификации
  5. Валидация запросов
  6. и многое другое
Читать дальше →

9 способов оптимизации производительности Front-End

Reading time10 min
Reach and readers28K
Поскольку современные браузеры стали поддерживать больше возможностей, а веб-индустрия стремительно перемещается в сторону мобильных устройств, появилась необходимость писать компактный и оптимизированный код, который не заставит долго ждать пользователя, пока загрузится сайт. Front-end хорош тем, что в нем содержится много простых стратегий и конвенций кода, которые мы можем использовать для обеспечения оптимальной производительности. В этой статье мы собрали 9 простых советов, которые помогут с оптимизацией кода.

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

AMD исправляет уязвимость в микрокоде своих микропроцессоров

Reading time1 min
Reach and readers22K
Компания AMD завтра выпустит обновление для микрокода своих микропроцессоров архитектуры Piledriver (AMD Piledriver Family 15h). Обновление специализируется на устранении уязвимости в коде виртуализации, которая может быть использована атакующими для побега из виртуальной среды на реальную ОС. Уязвимости подвержены микропроцессоры с микрокодом последних версий 0x6000832 и 0x6000836, который используется в серверных вариантах типа Opteron 6300 или клиентских серии FX, а также Athlon.



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

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

Простой экспорт в Excel XLSX

Reading time5 min
Reach and readers46K
В продолжение темы, начатой в предыдущей статье, хочу поделиться своим опытом экспорта данных, в частности, в формате XLSX.



Итак, кому интересно, как заполнить XLSX без больших и сложных библиотек, прошу под кат.
Читать дальше →

Использование EXPLAIN. Улучшение запросов

Reading time10 min
Reach and readers217K
Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым словом EXPLAIN. EXPLAIN – это один из самых мощных инструментов, предоставленных в ваше распоряжение для понимания MySQL-запросов и их оптимизации, но печальным фактом является то, что многие разработчики редко его используют. В данной статье вы узнаете о том, какие данные предлагает EXPLAIN на выходе и ознакомитесь с примером того, как использовать его для оптимизации запросов.
Читать дальше →

Группировка с условием

Reading time3 min
Reach and readers62K
Периодически возникает задача, которая требует сгруппировать набор данных с условием, что для атрибутов, не участвующих в группировке, нужно взять кортеж с максимальным значением по одному из полей.

Давайте рассмотрим простой пример.
Есть таблица:
CREATE TABLE IF NOT EXISTS shop (
  id INT NOT NULL AUTO_INCREMENT,
  article INT(4) ZEROFILL NOT NULL,
  dealer VARCHAR(45) NOT NULL,
  price DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (id))
ENGINE = InnoDB;

Необходимо для всех article найти dealer с максимальной ценой.

Для этой задачи существует несколько очевидных и простых решений, но я знаю одно из них, которое значительно превосходит все остальные.
Сталкивались с этой задачей? Хотите увидеть новый способ ее решения? Прошу под кат.
Читать дальше →

Оптимизируем LIMIT offset

Reading time2 min
Reach and readers87K
Везде, где используется LIMIT offset для больших таблиц, рано или поздно начинаются тормоза. Запросы вида

SELECT * FROM test_table ORDER BY id LIMIT 100000, 30

могут выполнятся очень долго. Например, в моем случае, на одном из сайтов кол-во комментариев перевалило за 200к и постраничная навигация по комментариям начала ощутимо тормозить, а в mysql-slow.log все чаще стали попадать запросы с временем выполнения 3-5сек.
Читать дальше →

Синхронизация структуры MySQL + Git

Reading time4 min
Reach and readers22K
Для синхронизации файлов проекта, ведения истории мы используем системы контроля версий, например, Git. Однако, когда у меня встал вопрос о контроле версий структуры базы MySQL — удовлетворяющего решения найти не удалось.
Замечу, во многих фреймворках и ORM существуют необходимые механизмы «из коробки» — миграции, версионность и т.д. А вот для нативной работы с MySQL — приходится все делать ручками. И пришла идея попытаться создать автоматическую систему для отслеживания изменений.
Читать дальше →

Beaver mysql logger или как найти ошибку в MySql приложении

Reading time1 min
Reach and readers6K
Здравствуй Хабр!

Периодически возникает необходимость отследить запросы, которые отправляет Ваше приложение к базе данных. К примеру:
— Вам нужно отладить/доработать чужой код;
— Запросы генерируются с помощью сторонней библиотеки (к примеру ActiveRecord), не понятно, какие именно и сколько их;
— Нужно оптимизировать приложение: посмотреть какие запросы и сколько их, посмотреть explain этих запросов.

В этих ситуациях на помощь приходит Beaver mysql logger.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity