• Веб-компоненты: обзор и использование в продакшне

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


    Кратко про веб-компоненты: это набор технологий, которые позволяют использовать компонентный подход с инкапсуляцией стилей и скриптов в вебе нативно, без подключения каких-либо библиотек или фейрмворков. Если вам интересно, что предлагают стандарты вместо привычных уже React или Angular, и как это использовать при разработке под старые браузеры, прошу под кат.


    Читать дальше →
  • SSL-сертификаты от Let's Encrypt с cert-manager в Kubernetes



      В этой статье я расскажу о том, как автоматизировать заказ и продление сертификатов от Let’s Encrypt (и не только) для Ingress’а в Kubernetes с помощью дополнения cert-manager. Но начну с краткого введения в суть проблемы.
      Читать дальше →
    • Nuxt + Django + GraphQL на примере


      Предисловие


      Nuxt — "фреймворк над фреймворком Vue" или популярная конфигурация Vue-based приложений с использованием лучших практик разработки на Vue. Среди них: организация каталогов приложения; включение и преконфигурация самых популярных инструментов в виде Nuxt модулей; включение Vuex по-умолчанию в любую конфигурацию; готовый и преднастроенный SSR с hot-reloading'ом


      Django — самый популярный веб-фреймворк на почти самом популярном языке программирования на сегодняшний день — Python. Сами разработчики позиционируют проект как "Веб-фреймворк для перфекционистов с дедлайнами". Представляет из себя решение "всё в одном" и позволяет в кратчайшие сроки построить MVP вашего веб-приложения.


      GraphQL — язык запросов изначально созданный компанией Facebook. В статье будет говориться о конкретных реализациях протокола этого языка, а именно библиотек Apollo для фронтенда и graphene для бэкенда.


      О чем и для кого эта статья

      Читать дальше →
    • Автоматическое развёртывание Django из GitLab

        В этой статье я опишу настройку автоматического развёртывания веб-приложения на стеке Django + uWSGI + PostgreSQL + Nginx из репозитория на сервисе GitLab.com. Изложенное также применимо к кастомной инсталляции GitLab. Предполагается, что читатель располагает опытом в создании веб-приложений на Django, а так же опытом администрирования Linux-систем.

        Читать дальше →
      • Пять простых правил повышения качества трафика которые все знают, но не все воспринимают серьёзно

          image

          Это не перевод статьи как сделать вас счастливым. На самом деле это просто свод моих проб и ошибок. Трудно сказать осознано или нет я их совершал, но факт в том что они действительно были, хоть и исключительно из благих намерений. Парадокс в том, что всё это я знал ещё задолго до того как на них «наступить».
          Читать дальше →
          • +10
          • 3.9k
          • 1
        • Как узнать, чего хотят клиенты от Вашего сайта?

          • Tutorial


          Работая с онлайн-консультантом RedHelper или обратными звонками RedConnect многие наши клиенты уверены, что с их помощью можно только отвечать на вопросы посетителей.

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

          В этой статье мы расскажем, как интегрировать системы отслеживания метрик (Яндекс.Метрика и Google Analytics) с нашим онлайн-консультантом и обратным звонком, а так же какую пользу это Вам даст.
          Читать дальше →
        • Как мы продвигаем свой проект, не имея в этом никакого опыта

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

            Читать дальше →
          • Почему копирайт неконституционен

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

              Я уже как-то писал, что копирайт нелегитимен. Это не всё. Копирайт ещё и неконституционен, т.к. противоречит базовым принципам права.

              Как довольно продвинутое интернет-сообщество, Хабр, в принципе, поддерживает копирайт, т.к. автор должен иметь какой-то способ монетизации собственного труда. Логика здесь примерно следующая: автор создаёт авторский экземпляр произведения. На этот момент он имеет все возможные права по распоряжению им. В частности, он имеет право заключить договор с издателем о передаче этого экземпляра и своих прав за какие-то материальные блага. Издатель производит копии экземпляра и продаёт их конечным потребителям, также заключая некоторый договор с каждым из них.

              Сейчас система обычно работает так: экземлпяры продаются поштучно без права дальнейшего распространения; те, кто нарушают условия договора — распространяют экземпляры дальше, за деньги или бесплатно — пираты.

              Т.о., на первый взгляд, отношения автора, издателя и покупателей сводятся к обычным гражданско-правовым договорам купли-продажи (ну или «аренды», как стало модно делать в последнее время). На самом деле, это не так.

              Читать дальше →
            • Пузырь фильтров (filter bubble), а также 10 шагов, как вырваться из плена своих интересов

              Марку Цекербергу (Mark Zuckerberg) однажды задали вопрос о важности ленты новостей в Facebook, почему она является ключевой и всегда отображается на главной странице? На что основатель Facebook ответил так: "Белка, умирающая на вашем дереве, может быть куда более релевантна для вас в данный момент, чем люди, умирающие в Африке".

              Ниже описана ситуация, в которой находимся все мы в сети Интернет, основанной на идее релевантности, а также дан ответ на вопрос, почему мы все находимся в плену своих интересов, в т.н. «Пузыре фильтров» (filter bubble). Также приведу 10 советов, которыми я пользуюсь для того, чтобы выйти за пределы пузыря фильтров — т.е. вырваться из плена своих интересов.
              Читать дальше →
            • Практические рекомендации: устраняйте неполадки, используя команду 'Top' в Linux

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

              Load average может представлять собой непростой для понимания показатель производительности сервера. В этой статье мы попытаемся дать некоторое представление о том, что означают те величины, которые можно найти в выводе команды «top» и в других linux-командах. В статье, также объясняются параметры специфичные для виртуального хостинга, которые обычно не отображается в стандартном выводе команды top.
              Читать дальше →
            • HTML по стандартам

                Привет Хабр!

                image Изначально хотел назвать статью «HTML по ГОСТ`у», но потом выяснилось что у большинства программистов не было предмета «Метрология и стандартизация» и о «стандартизации», «сертификации», «унификации» не все слышали.

                В i-Free я много занимаюсь разработкой веб-приложений. А поскольку их много, они разные и работают в разных условиях, то само собой приходится задумываться о стандартизации. Есть такой проект «Пуленепробиваемый HTML5» (http://html5boilerplate.com/), в котором разработчики решили создать идеальный шаблон странички. Он мне очень нравился, и все свои проекты я начинал именно с него. Но, исправляя баг за багом, делая все новые и новые приложения, я пришел к выводу, что многого в нем не хватает. В этой статье я хотел бы рассказать о том, что обычно пропускают при написание страничек и веб-приложений и показать, чем и зачем я прокачал свой шаблон пустой странички.
                Читать дальше →
              • Латентно-семантический анализ и поиск на python

                • Tutorial


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

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

                Далее прошу под кат
                • +45
                • 44.9k
                • 7
              • Боевой сервер для Django-приложения: Ubuntu Server 10.04 LTS + django 1.4 + nginx + gunicorn

                Многие учебные пособия по разработке на Django раскрывают как быстро получить работающий отладочный сервер (python manage.py runserver), а вопрос развертывания в боевом режиме часто остается нераскрытым или освещаются далеко не самые простые и эффективные методы.
                Ниже я расскажу о об одном из способов развернуть сайт на Django в боевом режиме, начиная от выбора хостинга, заканчивая развертыванием веб-сервера. Таким образом статья может быть полезна тем, кто освоил разработку на базе Django, но не имеет опыта развертывания серверов. Мой способ один из многих, но он достаточно прост, эффективен в работе и легок в поддержке. Используем VPS-хостинг, Ubuntu 10.04, nginx, gunicorn.

                Читать дальше →
              • Sonar как источник задач для регулярного рефакторинга

                  Простая и короткая статья. Из серии «на заметку хозяйке».

                  Есть гибкая система сканирования кода на соответствие правилам, метрикам (полезным, типа цикломатической сложности), и так далее.
                  Называется Sonar.



                  Пара скриншотов на живых данных под катом.
                  Читать дальше →
                • ElasticSearch 1.0 — новые возможности аналитики

                    Многие слышали о высокоуровневом поисковом сервере ElasticSearch, но не все знают, что многие используют его не совсем по прямому назначению. Речь идет о реалтайм-аналитике различных структурированных и не очень данных.

                    Эта статья также назрела ввиду того, что многие крупные интернет-проекты рунета в 2014 году получили письма счастья от Google Analytics с предложением заплатить $150 000 за возможность использовать их продукт. Я лично считаю, что ничего плохого в том, чтобы оплатить труд программистов и администраторов нет. Но при этом это довольно серьезные инвестиции, и, может, вложения в собственную инфраструктуру и специалистов, даст большую гибкость в дальнейшем.

                    Аналитика в ElasticSearch основана на полнотекстовом поиске и фасетах. Фасеты в поиске — это некая агрегация по определенному признаку. Вы часто сталкивались с фасетами-фильтрами в интернет-магазинах: в левой или правой колонке есть уточняющие галочки. Ниже пример тестового фасетного поиска у нас на главной странице http://indexisto.com/.



                    Буквально неделю назад вышла стабильная версия поискового сервера ElasticSearch 1.0, в которой разработчики настолько серьезно поработали над фасетами, что даже назвали их Aggregation.

                    Так как тема еще не освещалась на Хабре, я хочу рассказать, что из себя представляют аггрегации в ElasticSearch, какие возможности открываются и есть ли жизнь без Hadoop.
                    Читать дальше →
                  • Как получить хорошую верстку от верстальщика



                      Вводная часть


                      Прошлый мой материал “Краткая инструкция по работе с web-дизайнером (для менеджера проекта)” вызвал неоднозначные отзывы и отличную ответную статью (взгляд с другой стороны) “Краткая инструкция о том, как надо работать с web-дизайнером (взгляд дизайнера)”.

                      Прочитав обе статьи, вы сможете составить адекватное собственное мнение на заданную тему.

                      Новым материалом хотелось бы также получить отзывы и мнения, чтобы посмотреть на проблему со всех сторон. В статье будут ссылки на несколько полезных инструментов.
                      Читать дальше →
                      • –10
                      • 22.9k
                      • 16
                    • Простейший способ добавить WebSocket в Django

                      • Translation
                      Примечение переводчика: вебсокеты и Django — это довольно сложная тема, которая уже не раз поднималась на хабрахабре и основной идеей является написание параллельного бэкенда для вебсокетов. Автор же предлагает довольно лаконичное решение этой проблемы, которому правда еще предстоит проверка временем.

                      TL;DR — Я пришел к очень простому решению для работы с вебсокетами в Django. Все что вам нужно — это установить django-websocket-request, запустить скрипт, и теперь ваше приложение поддерживает вебсокеты! Это решение заставляет Django думать, будто он получает нормальный (в какой-то мере) HTTP-запрос, поэтому оно будет совместимо почти со всем вашим существующим кодом. Решение работает нормально как с Django Rest Framework, так и с обычными функциями-представлениями и представлениями, основанными на классах (Class Based Views).
                      Читать дальше →
                    • Почему использование юнит тестов это отличная инвестиция в качественную архитектуру

                        На понимание факта, что юнит тесты это не только инструмент борьбы с регрессией в коде, но также и отличная инвестиция в качественную архитектуру меня натолкнул топик, посвященный модульному тестированию в одном англоязычном .net сообществе. Автора топика звали Джонни и он описывал свой первый (и последний) день в компании, занимавшейся разработкой программного обеспечения для предприятий финансового сектора. Джонни претендовал на вакансию разработчика модульных тестов и был расстроен низким качеством кода, который ему вменялось тестировать. Он сравнил увиденный им код со свалкой, набитой объектами, бесконтрольно создающими друг друга в любых непригодных для этого местах. Также он писал, что ему так и не удалось найти в репозитории абстрактные типы данных, код состоял исключительно из туго переплетенных в один клубок реализаций, перекрестно вызывающих друг друга. Джонни, понимая всю бесполезность применения практики модульного тестирования в этой компании, обрисовал ситуацию нанявшему его менеджеру и, отказавшись от дальнейшего сотрудничества, дал напоследок ценный, с его точки зрения, совет. Он посоветовал отправить команду разработчиков на курсы, где бы их смогли научить правильно инстанцировать объекты и пользоваться преимуществами абстрактных типов данных. Я не знаю, последовал ли менеджер совету (думаю, что нет), но если вам интересно, что имел в виду Джонни и как использование практик модульного тестирования может повлиять на качество вашей архитектуры, добро пожаловать под кат, будем разбираться вместе.
                        Читать дальше →
                      • Кэширование в Django

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

                          Читать дальше →
                        • QLiveBittorrent — консольный bittorrent клиент для просмотра файлов до скачивания

                            Ровно месяц назад была опубликована статья LiveDC — Быстрый доступ к p2p файлам. Смысл ее в том, что Erty_Hackward написал DC-клиент с возможностью просмотра файлов до их окончательной загрузки. С его помощью можно, например, смотреть фильмы спустя пару минут после начала закачки, перематывать их, смотреть с любого момента. А можно извлечь нужный файл из большого архива, не перекачивая целый архив.

                            Мне очень понравилась идея этой программы. Но она написана на C#. А хотелось бы использовать ее в линуксе. Поэтому с разрешения автора я с большим удовольствием взялся за создание аналогичной программы для линукса. В результате получился консольный битторрент клиент QLiveBittorrent.


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