• Docker + Laravel = ❤

      laravel-in-docker


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


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


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

      Всё, что ты прочитаешь ниже — является субъективным опытом, который не претендует быть истиной в последней инстанции. Если у тебя будут дополнения или указания на неточности — welcome to comments.


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



        Согласно данным аналитического агентства «АВТОСТАТ», по итогам октября 2017 года объем рынка легковых автомобилей с пробегом в России составил 473 тыс. единиц, а по итогам 10 месяцев 2017 года — около 4,4 млн единиц, что на 1,5% больше, чем год назад.

        Источник: www.autostat.ru/press-releases/32145

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

        Однако, благодаря некоторым усилиям государственных органов и прочих организаций у нас появилась возможность довольно оперативно собирать интересующую информацию о конкретных автомобилях по открытым источникам в Интернете. Как делать это быстро и бесплатно, мы постараемся рассказать в этой статье.
        Читать дальше →
      • Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

          Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

          Существует два распространенных типа подключения DPI: пассивный и активный.

          Пассивный DPI

          Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
          Читать дальше →
        • Vulners — Гугл для хакера. Как устроен лучший поисковик по уязвимостям и как им пользоваться

          • Tutorial


          Часто нужно узнать всю информацию о какой-нибудь уязвимости: насколько найденный баг критичен, есть ли готовые сплоиты, какие вендоры уже выпустили патчи, каким сканером проверить наличие бага в системе. Раньше приходилось искать вручную по десятку источников (CVEDetails, SecurityFocus, Rapid7 DB, Exploit-DB, базы уязвимостей CVE от MITRE/NIST, вендорские бюллетени) и анализировать собранные данные. Сегодня эту рутину можно (и нужно!) автоматизировать с помощью специализированных сервисов. Один из таких — Vulners, крутейший поисковик по багам, причем бесплатный и с открытым API. Посмотрим, чем он может быть нам полезен.
          Читать дальше →
          • +45
          • 74,7k
          • 3
        • Пакет-географ – первая рабочая версия

            Прежде всего хотел бы поблагодарить за более, чем 80 звёзд на GitHub, которые мне дали читатели Хабра по результатам предыдущего поста. И это несмотря на то, что репозиторий был почти пустой, а ссылка была неочевидна. На лицо полезность этого пакета!


            Для тех, кто пропустил первый пост, маленькое повторение. Если у Вас в приложении есть что-то вроде:


            Читать дальше →
          • Настройка Laravel relationships — подсчет комментариев (вольный перевод)

            Представляю вам вольный перевод статьи "Tweaking Eloquent relations – how to get hasMany relation count efficiently?" с сайта softonsofa.com.

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

            Что ж, позвольте мне рассказать вам что мы можем с этим сделать.
            Читать дальше →
          • Избегаем распространенных ошибок в HTML5 разметке

            • Перевод
            HTML5 Уважаемые хабровчане, представляю вам вольный перевод статьи Avoiding common HTML5 mistakes. Здесь мы рассмотрим частые ошибки в HTML5 разметке с точки зрения семантики, и как их избежать.
            Читать дальше →
          • Autofill: чего не знают веб-разработчики, хотя должны знать

            • Перевод


            Многим известно, что в мобильной версии Safari можно отсканировать свою банковскую карту. Но многие ли разработчики умеют создавать формы, поддерживающие эту возможность?

            Готов поспорить, что немногие.

            Дело осложняет полное отсутствие документации от Apple по работе этой функции. Но тут есть один момент. Функция сканирования банковских карт является подмножеством автозаполнения — браузерного функционала, давно игнорируемого веб-разработчиками. Понятно, почему они не уделяли ему должного внимания: когда регулярно заполняешь форму тестовыми данными, автозаполнение обычно мешает. Но для наших пользователей это важная функция. В Google выяснили, что при использовании автозаполнения пользователи на 30% быстрее заполняют формы. Так что давайте изучим работу автозаполнения, разберёмся, как создавать формы, поддерживающие кросс-браузерное автозаполнение, и воспользуемся преимуществами новых возможностей наподобие сканирования банковских карт.
            Читать дальше →
          • Чек-лист для отбора копирайтеров на ведение блога или соцсети

              Дано: компания малого бизнеса (сфера услуг), которой нужны клиенты из блога или соцсети.

              Требуется: копирайтер для написания текстов. Да не простых, а генерирующих спрос на услугу (пусть не сразу, но хотя бы через месяц-другой).

              Утверждение: чтобы посты генерировали спрос на услуги, мастер текста должен быть также немного маркетологом, немного дизайнером и чуть-чуть SEO-шником.

              Исходя из этого, я разработала следующий список компетенций кандидата, назовем его «копирайтер-маркетолог»:

              image

              Давайте пройдемся по каждому пункту и посмотрим, с помощью каких вопросов можно проверить эти компетенции:
              Читать дальше →
            • 11 шагов к хорошему интернет-магазину. Склад и оплата

                UPD: добавлено про мобильные POS-терминалы для курьеров, спасибо aalebedev.

                Шаги 3 и 4. Показывайте актуальный склад. Принимайте к оплате карты


                Это — третья статья в серии «11 шагов к хорошему интернет-магазину». Если вам интересно, что было в первых двух, смотрите:
                Статья 1. Соответствуйте ожиданиям.
                Статья 2. Делайте сайт простым.

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

                Актуальный склад


                Показывайте актуальный склад. Нет товара — не показывайте его. Доступен только по предзаказу? Так и пишите! Например, на сайте М-Видео зеленые черточки в графе «Наличие» не связаны с актуальным состоянием склада, обновление происходит примерно раз в день. Это ужасно редко для магазина, где каждую минуту что-то покупают! Гарантировать получение товара в конкретном магазине в сети М-Видео по данным сайта невозможно: надо звонить во всероссийскую поддержку, и там будут пытаться понять, если ли товар в магазине в вашем городе.


                Читать дальше →
              • Обходим антивирус при помощи десяти строк кода

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

                  Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его бинарник.

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

                  Читать дальше →
                • Как это сделано: парсинг статей



                    Для меня всегда было некоей магией то, как Getpocket, Readability и Вконтакте парсят ссылки на страницы и предлагают готовые статьи к просмотру без рекламы, сайдбаров и меню. При этом они практически никогда не ошибаются. А недавно подобная задача назрела и в нашем проекте, и я решил копнуть поглубже. Сразу скажу, что это «белый» парсинг, вебмастеры сами добровольно пользуются нашим сервисом.
                    Читать дальше →
                  • Защита от DDOS атаки случайными аргументами при помощи Nginx

                      Я встретился с новым типом ботнета. Если старый долбил только в главную, то новый действует иначе. Он посылает множество запросов вида
                      GET someurl/?t1555ss5326=5326, где someurl — найденный ботом php скрипт.
                      Но если атакуемый сайт поддерживает ЧПУ, то такие запросы к нему должны отсутствовать в принципе. ЧПУ сейчас является стандартом де-факто, по этому можно смело отрезать такие запросы, логируя IP ботов.
                      Для этого очень удобен nginx, и его переменная is_args, которая имеет значение "?", если в URI идут аргументы. Базовая конструкция выглядит так:

                      if ($is_args = "?") {
                      return 403 444;
                      }

                      Очень просто и красиво, правда?
                      Вот как выглядит LA после включения этой защиты:
                      load average: 1.50, 3.09, 6.96
                      Текущий ботнет из ~20000 зомби, делают 5-8k одновременных запросов.
                    • Прокачка debian/ubuntu сервера для маленьких

                      Всем привет. Недавно появилась необходимость поднятие VPS на debian 7 за скромные деньги.
                      О плясках с бубенчиком я бы хотел описать тут в подробностях.
                      Всё в этом посте было собрано на просторах интернета, доработано, разжевано и скинуто в одну статью.


                      Выбор пал на http://hostink.ru/vps/ из-за низких цен и неплохой стабильности за эти деньги(правда 2 дня были серьезные проблемы с сетью). Был взят VPS за 5 рублей в сутки(или за 150р в месяц) с небольшими конфигурациями ОЗУ 128mb и 10Гб на диске.

                      В автоматическом режиме был установлен Debian 7.0 x86-64 Wheezy и VPS была готова к работе.
                      64 битная сиcтема была выбрана лишь для моих личных нужд, а вам же советую, на этом VPS, ставить x86.

                      Далее
                    • Аудио и видео в мессенджере Tox

                        Пока одни люди думают о регулировании мессенджеров, другие люди разрабатывают распределенные мессенджеры. В предыдущей публикации рассматривалось использование API ядра мессенджера Tox на примере создания простого echo-бота. Разработка Tox не стоит на месте и 3-го ноября ядро Tox обогатилось новой подсистемой аудио и видео вызовов — ToxAV о которой я и хотел бы рассказать в данной публикации.

                        image

                        Читать дальше →
                      • Поиск жилья без посредников в 21-м веке

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

                          Sobnik — это плагин для Chrome, который помечает посредников на досках объявлений. Пока работает только с Avito.ru, в ближайшем будущем я добавлю Irr.ru и другие крупные доски. Всех, кто сидит на чемоданах и кому не терпится попробовать, прошу в Google Web Store. Под катом я расскажу о технической стороне проекта, о его перспективах и о моих наблюдениях за противником посредниками. Любители критиковать чужой JS-код также велкам, исходник клиентской части плагина доступен на github.

                          Читать дальше →
                        • «ua-hosting.company» или как стать хостинг-провайдером с нуля и сгенерировать трафика больше, чем вся Беларусь

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

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

                            Интересуют такие вопросы:
                            *Что надо для старта, какое оборудование, программы и т.д
                            *Что нужно купить для начала
                            *В какой бюджет можно влезть
                            Может найдутся «знавцы» это темы. чтоб мне поведать что и как? …»

                            И конечно же в лучших традициях «серча» начался срач:

                            pavellift:
                            «ХолодныйСинтез, может лучше переехать?»

                            voltamper:
                            «ТС, не стоит суваться, если вообще в этом не понимаете.
                            Брутанут и вообще без штанов останетесь».

                            sladkydze:
                            «Автор, я поддерживаю товарищей, которые не советуют соваться.

                            Что-то тут можно поймать:
                            1. Имея знания в области и опыт.
                            2. Имея как минимум от 10.000$ на первоначальные вложения. А лучше от 50.000$. Остальное — бултыхание в луже».

                            [umka]:
                            «Это как начать автопрокатную компанию, имея в качестве «первоначального оборудования» ушатанный ВАЗ 2106. Ну и плюс сайт, конечно же».

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

                            Сразу вспомнилось, как начинал я, и стало просто невыносимо грустно от таких советов, ведь люди заблуждались, все возможно и без бюджета, и без начальных знаний. Потому что именно так возник «ua-hosting». И далее я поведаю небольшую историю успеха и разочарований…
                            Читать дальше →
                          • Регулярные выражения для валидации распространенных видов данных

                              Для проверки текстовых полей на валидность обычно используют регулярные выражения. Существует несколько наиболе распространенных видов таких даных, как например номер кредитки, дата в определенном формате и т. д. На сайте html5pattern.com собирается коллекция регулярных выражений для таких данных (там это позиционируется, как возможное содержимое html5-атрибута pattern у inpit-элементов, но эти регулярные выражения можно использовать и для привычной валидации с помощью javascript). Актуальные для российской аудитории примеры, вместе с соответствующими регулярными выражениями вы можете посмотреть под катом.
                              Читать дальше →
                            • Получение участников сообщества vk.com за считанные секунды

                              • Tutorial
                              Ни для кого не секрет, что VK API возвращает за один запрос к методу groups.getMembers не более 1 000 участников. В одну секунду вы можете получить максимум 3 000 участников, так как установлено ограничение на количество запросов в секунду до 3. Эту проблему решает метод execute, с помощью которого вы можете получить более 100 000 участников за одну секунду и до 25 000 участников за один запрос. В этой статье я расскажу Вам, как я это реализовал.
                              Читать дальше →
                            • Ресурсы для дизайнеров и front-end-разработчиков

                              • Перевод
                              Ниже представлена подборка инструментов для дизайнеров и front-end-разработчиков. Мы настоятельно рекомендуем вам просмотреть их все. Надеемся, что вы найдете для себя что-то полезное.

                              Читать дальше →
                              • +19
                              • 57,6k
                              • 7