• Разработка web API

    • Translation

    Интро


    Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

    В тексте попадаются комментарии переводчика, они выделены курсивом.

    Собираем API-интерфейсы, которые понравятся другим разработчикам


    Понятные URL для вызовов API

    Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

    Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
    /dogs для работы со списком собак
    /dogs/12345 для работы с отдельной собакой
    Дальше
  • Ежедневная работа с Git

    • Tutorial
    Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

    Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
    • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
    • будет ли менеджер и заказчик удовлетворён этим процессом?
    • будет ли легко работать разработчикам?
    • смогут ли новички быстро включиться в процесс?
    • можно ли процесс относительно легко и быстро изменить?


    Конечно, я попытаюсь рассказать обо всём по-порядку, начиная с основ. Поэтому, эта статья будет крайне полезна тем, кто только начинает или хочет разобраться с git. Более опытные читатели, возможно, найдут для себя что-то новое, укажут на ошибки или поделятся советом.

    Далее очень много букв случайным образом превратились в пост.
  • Вы опасно некомпетентны в криптографии

    От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
    Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

    Читать дальше →
  • Путь JavaScript модуля



      На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

      Вот в JavaScript своя атмосфера — в языке нет официальных модулей, более того все файлы лежат удаленно, один поток приложения. Приходится постоянно решать какие-то странные проблемы с загрузкой, хитро паковать модули в один файлы, чтобы ускорить время загрузки. Бывает, что нужно воевать с двойными стандартами, адаптировать модули другого формата.

      Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

      Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

      Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
      Читать дальше →
    • Настраиваем OpenVPN на Linux Server'e с авто-подключением iOS устройств за 5 минут


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

        Сегодня я расскажу о том, как за 5 минут настроить работающий VPN On Demand на iOS устройстве при наличии своего Linux сервера.
        VPN On Demand — VPN Который подключается по запросу / переподключается при разрыве

        Читать дальше →
      • Usability чеклист

        image

        Небольшой и полезный чеклист по usability. Проверьте свой ресурс перед тем как перейти к юзер-тестированию. Не претендует на «столп usability», которому необходимо следовать, но здесь собраны довольно полезные вещи.
        Читать дальше →
      • Почему мы стали использовать препроцессор Stylus в Яндекс.Почте, а также о библиотеке, помогающей жить с IE

          imageСегодня я хочу рассказать о том, почему и как мы пришли к использованию препроцессора Stylus в разработке Яндекс.Почты, а также описать используемый нами метод работы со стилями для IE. Он очень легко реализуется именно с помощью препроцессоров и делает поддержку IE простой и удобной. Мы разработали для этого специальную библиотеку, которой тоже поделимся — if-ie.styl.

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

          Читать дальше →
        • Порцию серверов пожалуйста, или как начать деплоить с Opscode Chef

            Большинство русских статей по (Opscode Chef), которые мне попадались, содержали выдержки из кукбука (cookbook) и рассказ «какая классная штука Шеф». И все. Мол, смотри как я могу! А что и как с ним делать — не понятно. На официальном сайте есть подробная вики. Но в ней, ИМХО, легко заблудиться. Простого руководства «как сделать элементарное чтобы работало» нашел только в виде видео, по мотивам которого родилась эта статья.
            Читать дальше →
          • Построение приложений командной строки (CLI)

            Данная статья написана под влиянием книги Дэвида Коупленда «Build Awesome Command-Line Application in Ruby» (купить, скачать и изучить дополнительные материалы). Большая её часть будет посвящена проектированию дизайна CLI-приложений вне зависимости от используемого языка. По ходу будут обсуждаться и вещи специфичные для ruby, но не страшно, если вы его не знаете, кода будет не слишком много. Можно считать эту статью довольно подробным обзором вышеупомянутой книги с вкраплениями собственного опыта. Книжку рекомендую!

            Для начала я задам вопрос. Если посмотреть на сообщества IT-шников, можно заметить, что несмотря на обилие программ с красивым графическим интерфейсом, приложения командной строки остаются весьма популярны. Почему?
            Ответов несколько. Во-первых, это красиво удобно — если вы можете описать задачу командой в командной строке, то её гораздо проще автоматизировать, чем если вам приходится анализировать передвижения мыши и клики на разные пункты меню. Во-вторых, это даёт возможность комбинировать программы невероятным числом способов, чего сложно добиться с помощью графических интерфейсов.
            В значительной степени философия Unix базируется на том принципе, что множество маленьких утилит, каждая из которых умеет делать свою конкретную задачу — это лучше, чем одна многофункциональная программа-универсал. И это одна из причин успеха Unix-систем в мире IT-шников.
            Наверное, каждый понимает, что обычного пользователя вряд ли удастся сманить от GUI к CLI, давайте сосредоточимся на нас, «компьютерщиках» и конкретизируем наши пожелания к CLI-приложениям.
            Читать дальше →
          • Затерянная документация или transform: matrix3d [перевод]

            • Tutorial
            Когда погружаешься в документацию о CSS3 transform: matrix3d, находишь короткое определение «Задает 3D трансформацию как матрицу 4х4.», сопровождаемое определением функции в виде:

            matrix3d(m00, m01, m02, m03,
            m10, m11, m12, m13,
            m20, m21, m22, m23,
            m30, m31, m31, m33)


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

            демо | первоисточник
            Читать дальше →
            • +8
            • 17.7k
            • 7
          • Обзор языка программирования Rust

            Rust — новый экспериментальный язык программирования, разрабатываемый Mozilla. Язык компилируемый и мультипарадигмальный, позиционируется как альтернатива С/С++, что уже само по себе интересно, так как даже претендентов на конкуренцию не так уж и много. Можно вспомнить D Вальтера Брайта или Go от Google.
            В Rust поддерживаются функицональное, параллельное, процедурное и объектно-ориентированное программирование, т.е. почти весь спектр реально используемых в прикладном программировании парадигм.

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

            Читать дальше →
          • Автомасштабирование в Amazon Web Services: EC2 + CloudWatch

              Добрый день!

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

              В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.

              Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
              • из CLT можно сделать всё;
              • удобнее копипастить в консоль, чем кликать мышкой.

              Читать дальше →
            • Ключевое отличие AngularJS от Knockout

                imageЗа последнее время я несколько раз успел поучаствовать в дискуссиях о том, чем Angular лучше или хуже Knockout и других JS-фреймворков. И очень часто я сталкивался с тем, что есть некоторое непонимание сути различий в подходах, заложенных в эти продукты. Иногда дело доходило даже до того, что в качестве преимущества Knockout приводились валидные по умолчанию префиксы «data-», что ну просто совсем смешно (не говоря уж о том, что их можно использовать и в Angular).

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

                1. Модульная организация кода, тестируемость и жестокая война с любыми глобальными данными.
                2. Пропаганда декларативного подхода через создание собственных HTML-директив.
                3. Механизм проверки изменения данных в дата-биндинге без использования коллбэков.

                И третий пункт мне здесь видится наиболее сложным для понимания. Поговорим именно о нем.
                Читать дальше →
              • Django: Генерируем безопасные отчёты об ошибках на сайте

                • Tutorial
                Как известно, в Django предусмотрен очень лёгкий и простой механизм уведомления разработчиков о возникающих проблемах. Когда проект развёрнут на локальном компьютере и в настройках DEBUG имеет значение True, то отчёты об ошибках просто выводятся в виде HTTP-ответа, в виде удобной страницы с возможностью копирования traceback'а.

                Если же это production-сервер, и DEBUG имеет значение False, то отчёты по умолчанию отправляются по электронной почте всем, кто указан в настройке ADMINS (кстати, если вы используете SMTP-сервер, то письма могут не приходить, так как SMTP-сервер не принимает адрес root@localhost — в этом случае просто укажите любой другой адрес, который будет принимать ваш SMTP-сервер, с помощью настройки SERVER_EMAIL).

                Разумеется, ничего не мешает также написать свой logging handler (обработчик журналирования) и сохранять отчёты об ошибках в любом нужном виде — создавать задачу в баг-трекере, например.

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

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

                  Итак, я просил ответить на вопрос какие книги из статьи вы читали?

                  Результаты опроса:
                  Название книги
                  Количество голосов
                  Процент
                  Том ДеМарко. Deadline. Роман
                  об управлении проектами
                  247
                  54%
                  Фредерик Брукс. Мифический человеко-месяц, или Как создаются
                  программные системы
                  174
                  38%
                  Джоэл Спольски. Джоэл о программировании
                  165
                  36%
                  Том Демарко и Тимоти Листер. Человеческий фактор. Успешные
                  проекты и команды
                  148
                  32%
                  Джейсон Фрайд, Дэвид Хайнемайер Хенссон. Rework.
                  Бизнес без предрассудков
                  108
                  24%
                  Джеффри Янг и Уильям Саймон. iКона. Стив
                  Джобс
                  94
                  21%
                  Том ДеМарко, Тимоти Листер. Вальсируя с Медведями: управление
                  рисками в проектах по разработке программного обеспечения
                  70
                  15%
                  Том Демарко, Тимоти Листер. Балдеющие от адреналина и зомбированные
                  шаблонами. Паттерны поведения проектных команд
                  51
                  11%
                  Кармин Галло. iПрезентация. Уроки
                  убеждения от лидера Apple Стива Джобса
                  48
                  11%
                  Патрик Ленсиони. Смерть от совещаний
                  21
                  5%
                  Патрик Ленсиони. Пять пороков команды. Притчи о
                  лидерстве
                  19
                  4%
                  Патрик Ленсиони. Пять искушений руководителя: притчи о лидерстве
                  16
                  4%
                  Патрик Ленсиони. Три признака унылой работы. История со смыслом
                  для менеджеров (и их подчиненных)
                  11
                  2%

                  А теперь еще один бонус — список книг по заданной тематике, которые прислали нам читатели:
                  Читать дальше →
                • Подборка инструментов для фронт-энд разработки

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

                  Картинки кликабельны.

                  Form builder


                  Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
                  image
                  Читать дальше →
                • Рецепты от ПанГурмана

                    Недавно запустили сервис по бронированию ресторанов ПанГурман. Внутри это более-менее типичный django-сайт. Попробую рассказать, как там что устроено (с картинками). В статье не будет ничего супер-хитрого, но, надеюсь, кому-нибудь пара трюков или идей покажутся полезными и как-то упростят жизнь.
                    Читать дальше →
                  • CSS анимации на реальном проекте



                      Всё чаще среди веб-разработчиков поднимается тема возможностей CSS анимаций (transition/animation), практически на каждой конференции по клиентской разработке можно услышать о потрясающих преимуществах новой технологии.

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

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


                        Многие сервисы и приложения (особенно веб-сервисы) принимают древовидные данные. Например, такую форму имеют данные, поступающие через JSON-PRC, JSON-REST, PHP-GET/POST. Естественно, появляется задача валидировать их структуру. Существует много вариантов решения этой задачи, начиная от нагромождения if-ов в контроллерах и заканчивая классами, реализующими валидацию по разнообразным конфигурациям. Чаще всего для решения этой задачи требуется рекурсивный валидатор, работающий со схемами данных, описанными по определённому стандарту. Одним из таких стандартов является JSON-Schema, рассмотрим его поближе.
                        Читать дальше →