• GraphQL — новый взгляд на API. Ч.1

      Всем привет, хочу поделиться накопленными знаниями по GraphQL, которые сформировались на основе около сотни прочитанных статей/доков и месяца построения API используя GraphQL.

      Ну что ж, начнем с того, что такое GraphQL?


      GraphQL — это стандарт декларирования структуры данных и способов получения данных, который выступает дополнительным слоем между клиентом и сервером.

      Одной из основных фичей GraphQL является то, что структура и обьем данных определяется клиентским приложением.

      Рассмотрим пример простого запроса пользователя.



      Клиент точно указывает, какие данные он хочет получить, используя декларативную, графо-подобную структуру, которая очень напоминает формат JSON.
      Читать дальше →
    • Использование SVG в качестве Placeholder’a

      • Перевод
      image

      Генерация SVG из изображений может использоваться для Placeholder’ов.

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

      В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

      В этом посте мы рассмотрим следующие темы:

      • Обзор различных типов Placeholder’ов
      • Placeholder на основе SVG (контуры, фигуры и силуэты)
      • Автоматизация процесса.

      Читать дальше →
    • Технические особенности проведения ICO. Начало


        Привет, Хабр! Сегодня мой рассказ пойдёт о техническом опыте проведения ICO на платформе Ethereum перед и во время ICO. Я поучаствовал пока в небольшом количестве проектов, но уже успел собрать некоторый технический бэкграунд. Могу поспорить, технический roadmap по проведению ICO аудитории Хабра будет интересен. Прошу под кат всех заинтересованных.

        Читать дальше →
      • Раздача фронтенда через CDN

        В мире современных веб-технологий все стремительно развивается и меняется. Пару лет назад совершенно нормальным было по запросу клиента рендерить DOM структуру на сервере (например, при помощи PHP) и отдавать уже полностью сформированную страницу. Сейчас все чаще появляются сайты c полным отделением фронтенда (Angular, React, Vue.js...) от бэкенда (некие API эндпоинты), где на фронтенде почти весь контент формируется посредством скриптов, а сервер отдает только данные по запросу. Тут можно было бы упомянуть SSR (Server Side Rendering), но не об этом данное произведение.

        В любые времена перед разработчиками и владельцами сайтов стояла непростая задача: доставить контент как можно быстрее, как можно большему количеству клиентов. Одно из самых правильных решений — использовать CDN (Content Delivery Network) для раздачи статичных файлов. В случае с динамическим рендером страниц на сервере мы должны были ограничиваться небольшим списком объектов, которые можно было разместить в CDN: таблицы стилей, файлы скриптов, изображения. Однако, фронтенд, написанный на Angular (React, Vue.js...), статичен целиком, включая индексную страницу. Вот тут и возникает мысль: а почему бы не организовать раздачу через CDN всего фронтенда?

        В данной статье пойдет речь о настройке комплексного решения для разработки, контроля версий, автоматической сборки и доставки статического сайта с использованием Gitlab CI, Amazon S3 и Amazon CloudFront. Также речь пойдет о настройке сопутствующих вещей: git, безопасное соединение по протоколу HTTPS, доменная почта, DNS хостинг, бэкенд сервер…

        Если вас заинтересовала эта тема, добро пожаловать под кат. Осторожно! Много скриншотов.
        Читать дальше →
      • Tarantool: когда на сервис оповещения миллиона пользователей нужно 500 строк кода


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


          На написание данной статьи меня натолкнула эта статья.


          Очень много людей в IT-мире занимается одним и тем же. Расскажу о своем опыте решения этих же проблем.

          Читать дальше →
        • О том, как в Instagram отключили сборщик мусора Python и начали жить

          • Перевод
          Отключив сборщик мусора Python (GC), который освобождает память, отслеживая и удаляя неиспользуемые данные, Instagram стал работать на 10% быстрее. Да-да, вы не ослышались! Отключив сборщик мусора, можно сократить объем потребляемой памяти и повысить эффективность работы кэша процессора. Хотите узнать, почему так происходит? Тогда пристегните ремни!

          Читать дальше →
        • Прототипирование мобильного приложения: от идеи до рабочего экрана

            image


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


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


            Начнем с определения:


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


            1. Концептуальные
            2. Интерактивные
            3. Анимированные

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


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


            Читать дальше →
            • +16
            • 13,5k
            • 2
          • Верстка интернет-магазина: список товаров



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


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

              Читать дальше →
            • React.js: собираем с нуля изоморфное / универсальное приложение. Часть 1: собираем стек

              image

              Лицо моей жены, когда она вычитывала эту статью


              Я решил написать цикл статей, который и сам был бы счастлив найти где-то полгода назад. Он будет интересен в первую очередь тем, кто хотел бы начать разрабатывать классные приложения на React.js, но не знает, как подступиться к зоопарку разных технологий и инструментов, которые необходимо знать для полноценной front-end разработки в наши дни.


              Я хочу с нуля реализовать, пожалуй, наиболее востребованный сценарий: у нас есть серверная часть, которая предоставляет REST API. Часть его методов требует, чтобы пользователь веб-приложения был авторизован.

              Читать дальше →
            • Наследование реализаций: закопайте стюардессу

                Ключевое противоречие ООП


                Как известно, классическое ООП покоится на трех китах:


                1. Инкапсуляция
                2. Наследование
                3. Полиморфизм

                Классическая же реализация по умолчанию:


                1. Инкапсуляция — публичные и приватные члены класса
                2. Наследование — реализация функционала за счет расширения одного класса-предка, защищенные члены класса.
                3. Полиморфизм — виртуальные методы класса-предка.

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


                Наследование ломает инкапсуляцию

                Как такое может быть?