• Пять Docker-утилит, о которых вам стоит узнать

    • Перевод

    Источник изображения


    На просторах сети Интернет можно найти немало полезных утилит для Docker. Многие из них принадлежат к разряду Open Source и доступны на Github. В последние два года я достаточно активно использую Docker в большинстве своих проектов по разработке программного обеспечения. Однажды начав работать с Docker, вы осознаете, что он оказывается полезен для гораздо более широкого круга задач, нежели вы изначально предполагали. Вам захочется сделать с Docker еще больше, и он не разочарует!


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


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

    Читать дальше →
  • Un-FuckUp-able Development Protocol (UDP)

      Недавно после очередного Team Building’a получил от одного Коллеги-Графомана письмо-притчу про большую кнопку «сделать всё хорошо». Он и раньше баловался изобретением велосипедов, но в этот раз конструкция показалась мне на редкость удачной. Кому интересно — прошу-приглашаю под кат. С его разрешения дословно:

      В эту сиесту на веранде практически никто не курил, потому, что все ушли на очередной двухдневный SCRUM-тренинг. Джонни устало окинул взглядом присутствующих: Дёму и Варю. Они тоже не были в восторге от происходящего, было слишком жарко и душно, лето в Долине было в самом разгаре, и казалось, что на улице даже жарче чем в Task Tracker’е.


      Читать дальше →
    • Переключения языка ввода в Windows с помощью CapsLock

      Предлагаемый мной способ не является чем-то уникальным и/или неизвестным. В любой из двух поисковых системы вы легко найдёте множество заметок о том, как настроить в Windows переключение языка ввода с помощью любой кнопки клавиатуры, прямо как в Linux, только чуть сложнее и с перезагрузкой. Однако, я так и не нашёл (тут можно меня поправить и предложить в комментариях ссылку) готовой инструкции, включающей в себя и такой немаловажный пункт, как спасение буквы Ё, а равно и обратного апострофа с тильдой. Таковую инструкцию я вам и предлагаю.
      Читать дальше →
    • Как набраться смелости и открыть магазин

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

        Сколько себя помню, был помешан на компьютерах. И программирование так прочно вошло в мою жизнь, что несколько лет я и думать не мог о том, чтобы зарабатывать чем-то, кроме кодинга. Казалось, брось я программирование, деньги кончатся.
        Последние лет пять я кодил. Кодил ночами, кодил круглосуточно. Устал. Надежды на отдых не было совсем. Каждый новый день начинался с того, что я представлял себе: что нужно сделать, что я должен сделать. Озверение пришло неожиданно и пришло в тот момент, когда я все-таки смог вырваться в отпуск.
        Я сидел в беседке в одном из поселков близ Джубги и страдал бессонницей. Горы смыкались над головой, в голове бродила усталость. В ту ночь я в полной мере ощутил, что так дальше жить нельзя, что моя любовь — путешествия.
        И именно в ту ночь внезапно пришло озарение: надо открыть интернет-магазин.
        Но как открыть магазин, когда за душой нет ни гроша?
        Читать дальше →
      • mysqlnd — проводник между PHP и MySQL

        • Перевод


        Расширение mysqlnd появилось ещё в PHP 5.3, но до сих пор малоизвестно среди разработчиков. Однако оно незаменимо, если ваша система основана на MySQL. Если вы хотите узнать, почему это расширение так важно, что оно собой представляет, как его использовать и какие оно даёт преимущества — читайте статью.
        Читать дальше →
      • 20 заповедей качественного общения с клиентом

          Можно ли ответить на вопросы клиента еще до того, как он их задаст? Общаться с клиентом по-свойски или в официальном тоне? За какое время надо отвечать на вопросы в почте? Как сделать клиента счастливым и постоянным?

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

          Перед вами выдержка из нашего внутреннего документа, обязательного к изучению каждому менеджеру-новичку в Alconost. Итак, 20 заповедей качественного общения с клиентами:


          Читать дальше →
          • +22
          • 112k
          • 9
        • Серьезное проектирование серьезного магазина. Часть 3. Карточка товара и не только

          • Tutorial
          Мы продолжаем делать обзор функционала современного интернет-магазина и саму технологию проектирования качественного продукта с высокой конверсией. В этой части мы расскажем про карточку товаров и все, что с ней связанно. В прошлый раз мы написали довольно популярные статьи: «Серьезное проектирование серьезного магазина. Часть 1. Исследования» и «Серьезное проектирование серьезного магазина. Часть 2. Модули интернет-магазина», эта статья логическое продолжение.

          Карточка товара


          Рис. 1. Карточка товара

          image
          Читать дальше →
        • Спидран по 13 уязвимостям на сайтах. Основные понятия, и средства защиты

          Недавно по работе собирал своего рода лекцию по веб-безопасности, ознакомился с известным рейтингом уявзимостей OWASP 2013 года, но с удивлением обнаружил, что корректной инфы на русском языке крайне мало, или её практически нет.

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

          Некоторые из предоставленных в списке уязвимостей уже расписаны и не раз — известный факт, но без них список был бы неполным. Поэтому сразу дам небольшое содержание поста:

          Читать дальше →
        • Чек-лист по юзабилити интернет-магазинов

            Апофеоз сотни холиваров и улучшения работы QA — чек-лист по юзабилити интернет-магазинов. В нем частично задействованы прошлые документы — чек-листы по формам и фильтрам. Пользуйтесь.


            Читать дальше →
            • +48
            • 56k
            • 4
          • RESTful API на Yii framework с RBAC и тестами

            Существует множество готовых решений для реализации RESTFul API на Yii framework, но при использовании этих решений в реальных проектах понимаешь что все красиво выглядит только на примерах с собачками и их хозяевами.

            Возможно, за время подготовки и написания статьи она немного потеряла актуальность с выходом Yii2 со встроенным фреймворком для создания RESTful API. Но статья по прежнему будет полезна для тех, кто пока не знаком с Yii2, или для тех, кому необходимо быстро и просто реализовать полноценное API для уже существующего приложения.

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

            1. Одна из первых проблем с которой я столкнулся — сохранение различных сущностей в одной таблице. Для получения таких записей уже не достаточно просто указать имя модели как это предлагается, например тут. Один из примеров такого механизма — таблица AuthItems, которая используется фреймворком в механизме RBAC (если кто-то не знаком с ним — есть замечательная статья на эту тему). В ней содержатся роли, операции и задачи которые определяются флагом type, и для работы с этими сущностями через API мне хотелось использовать url не такого типа:
              GET: /api/authitems/?type=0 - получение списка операций
              GET: /api/authitems/?type=1 - получение списка задач
              GET: /api/authitems/?type=2 - получение списка ролей

              а такого:
              GET: /api/operations - получение списка операций
              GET: /api/tasks - получение списка задач
              GET: /api/roles - получение списка ролей

              Согласитесь, второй вариант выглядит очевиднее и понятнее, тем более для человека не знакомого с фрейморком и устройством RBAC в нем.
            2. Вторая немаловажная возможность — механизм поиска и фильтрации данных, с возможностью задавать условия и комбинировать правила. Например, мне хотелось иметь возможность выполнить аналог такого запроса:
              SELECT * FROM users WHERE (age>25 AND first_name LIKE '%alex%') OR (last_name='shepard');
              

            3. Порой не хватает возможности создания, обновления, удаления коллекций. Т.е. изменение n-ого количества записей одним запросом опять же используя поиск и фильтрацию. Например, зачастую требуется удалить или обновить все записи, попадающие под какое-либо условие, а использовать отдельные запросы слишком накладно.
            4. Еще одним важным моментом была возможность получать связанные данные. Например: получить данные роли вместе со всеми её задачами и операциями.
            5. Конечно невозможно хоть сколько-нибудь комфортно работать с API не имея возможности ограничить количество получаемых записей (limit), сместить начало выборки (offset), и указать порядок сортировки записей (order by). Так же не плохо бы иметь возможность группировки (group by).
            6. Важно иметь возможность для каждой из операций проверять права пользователя (метод checkAccess все в том же RBAC).
            7. Ну и наконец, все это дело нужно как-то тестировать.

            В результате анализа примерно такого списка «хотелок» и появился на свет мой вариант реализации API на этом замечательном фреймворке!
            Читать дальше →