• Обновление React компонентов с сохранением состояния в режиме реального времени для Browserify



      Всем доброго времени суток!
      Давайте немного поговорим о DX (Developer Experience) или «Опыте разработки», а если конкретнее — об обновлении кода в режиме реального времени с сохранением состояния системы. Если тема для вас в новинку, то перед прочтением советую ознакомиться со следующими видео:

      Ряд видео с обновлением кода в реальном времени без перезагрузки страницы




      Введение: Как это работает?


      Прежде всего стоит понимать, что реализация подобной функциональности подразумевает под собой решение ряда задач:
      — Отслеживание изменений файлов
      — Вычисление патча на основании изменений файлов
      — Транспортировка патча на клиент (в браузер, например)
      — Обработка и применение патча к существующему коду
      Но обо всём по порядку.
      Читать дальше →
    • Автоматическое определение рубрики текста

        Введение


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

        Подготовка данных рубрикатора


        Для начала определимся с тем, в каком виде мы будем готовить данные для рубрикатора.
        • 1. Рубрикатор – это граф, а не дерево
        • 2. Текст, тематика которого определяется, может быть отнесен к нескольким рубрикам одновременно
        • 3. Для каждого соотнесения с рубрикой указывается коэффициент точности определения рубрики
        • 4. Тематика текста определяется для каждого текста отдельно, и не зависит от того как были определены рубрики других текстов ранее

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

        Алгоритм определения тематики текста, кратко


        Описываем рубрикатор. Извлекаем из исследуемого текста ключевые слова, описанные в рубрикаторе. В результате извлечения получаем кусочки разорванного и чаще всего несвязного графа. Используем волновой (или любой другой, по желанию) алгоритм для «дотягивания» извлеченных кусочков графа до вершины «всё». Анализируем и выводим результаты.
        Читать дальше →
        • +29
        • 15,3k
        • 4
      • HTML Purifier. Расширяем возможности


          Буквально пару абзацев я уделю внимание особенностям взаимодействия этой библиотеки с фреймворком Yii, остальное же в полной мере универсально и будет интересно всем, кто использует или планирует использовать эту библиотеку.

          Если вы уже хорошо знакомы с Purifier, то можете смело начинать читать отсюда

          Немного о HTML Purifier

          Если вы не слышали о такой прекрасной библиотеке (а поиск на Хабре говорит о не такой уж большой популярности) как HTML Purifier, то советую обязательно к ней присмотреться, особенно если ваши пользователи генерируют контент в html формате. Это может быть рядовой пользователь, модератор или даже администратор.
          Что же делает эта библиотека?
          Согласно конфигурации она очищает любой html код от всех вредоносных, невалидных, запрещенных (вашей конфигурацией) частей кода, в том числе отдельные атрибуты.
          Читать далее
        • Ускоряем Nginx за 5 минут

            image
            Попытайтесь повторить это сами

            Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

            Минутка банальности.

            yum -y install nginx
            

            На всякий пожарный, создадим бэкап исходного конфига.

            cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
            vim /etc/nginx/nginx.conf
            

            А теперь можно и похимичить!
            Бдыжь-бдыжь
          • Несколько интересностей и полезностей для веб-разработчика (выпуск 5)

              Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

              Stackedit



              Шедевр среди Open Source редакторов! Основан на библиотеке разметки (Markdown) PageDown, которая используется в StackOverflow и других проектах StackExchange. Stackedit синхронизируется с Dropbox и Google Drive, а также сохраняет все документы в local storage, благодаря чему редактирование возможно и в онлайне и в оффлайне. Возможность импорта/экспорта/конвертация Markdown и HTML. Публикация в WordPress, Tubmlr, Blogger, Github, Gist и на любой SHH сервер. Статистика, работа в режиме realtime, поддержка различных синтаксисов (Prettify/Highlight.js), LaTeX, темы… Это просто великолепный продукт.


              App.io позволяет запускать iOS приложения в браузере. Это уже тема мобильной разработки, но недавно я читал статью про Sprinty Driver и обратил внимание на то, что BeetlePlay разрабатывают демо-версии на Flash. Решил поделиться. Также советую фреймворк для создания анимаций в UIKit от IFTTT.

              Читать дальше →
            • Сказ о том, как бы я продвигал сайт или не так страшно SEO как его малюют

              • Tutorial

              Сначала предметная область


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

              Ключи/запросы


              Это фразы, которые набираются в поиске, для достижения результата (ответа на вопрос, покупки, получения информации…)
              По частотностям
              НЧ – низкочастотные (величина вычисляется логарифмически относительно самого большого числа запросов по ВЧ запросу из категории), для простоты пусть будет все что ниже 300 запросов (хотя в каждой группе по разному).
              СЧ – среднечастотные (величина вычисляется логарифмически относительно самого большого числа запросов по ВЧ запросу из категории), для простоты пусть это будет все что выше 300 и ниже 2000 запросов (хотя в каждой группе по разному).
              ВЧ – максимальное значение количества поисков простого запроса, к примеру «Светильник».
              По конкуренции
              НК – низкоконкурентные запросы, по которым есть шанс двинуться в топ (мало точных вхождений поисковой фразы, мало главных страниц, низкое количество результатов в поисковой выдаче)
              СК – средне конкурентные запросы, по которым есть шанс продвинуться в топ, но есть и конкуренция (весь топ занят или главными или точными вхождениями, но показатели ссылочной массы конкурентов низкие)
              ВК – высококонкурентные запросы, по которым необходимо из кожи вон вылезти чтоб продвинуться (и топ весь занят, и ссылочная масса ужасающая) при средних бюджетах ВК топ недостижим, но можно долго работать, чтоб кардинально поменять выдачу (закупка сателлитов, ссылочной массы, грамотное внутренне СЕО).

              Семантическое ядро


              Предполагает, что будет оптимизироваться каждая страница сайта. Это значит, что страница конечно будет давать ответ на запрос пользователя, но при этом на ней должен быть материал, который включает в себя эти ответы. То есть признаки, по которым ПС сможет выдать именно эту страницу на это запрос…
              Пока что это сами запросы пользователей – они же «КЛЮЧИ»
              Ключевые фразы подбираются для каждой страницы персонально.
              Для главной страницы берутся общие запросы (описывающие общую категорию и выделяющие общую тематику сайта).
              Для страницы категории выбираются запросы более узкой тематики, выделяющие отдельную категорию в общей всего сайта.
              Для страницы товара/услуги – берутся максимально конкретные запросы, отражающие ее суть и позволяющие максимально точно ее/его идентифицировать.

              0 Стратегия: Тариф Беззаботный


              Минимум затрат, так как трафик тупо покупается у ПС. Других вариантов нет.

              1 Стратегия: На халяву


              Низкоконкурентный трафик – занимается ниша, где есть спрос, но нет конкурентов – классический «кто первый встал – того и тапки».
              Схема до боли проста – ищем свободные ниши, подбираем НК запросы, пишем материал (даем полезное на запрос пользователя) – попадаем в ТОП, для усиления эффекта можно закупить по парочке ссылок.
              Посмотреть нормальные стратегии...
            • Морфология и компьютерная лингвистика для самых маленьких

                На Хабре уже был пост о Технопарке, и даже рассказы о курсах (1, 2), которые в нем проходят. Сегодня мы публикуем первую часть мастер-класса, который для студентов Технопарка провел Андрей Андрианов из ABBYY.

                Для начала не лишним будет вспомнить, что такое морфология, а также какое отношение она имеет к лингвистике. За этим предлагаю пройти под кат к содержимому первого поста серии.
                Читать дальше →
              • Оптимизация графики для Retina-экранов

                • Перевод
                После недавнего выпуска Retina MacBook Pro и The new IPad, экраны с увеличенной плотностью пикселей начали активно входить в нашу жизнь. Что это значит для веб-разработчиков?

                Для начала разберемся в терминологии.

                Физические пиксели


                Читать дальше →
              • Bootstrap-wysiwyg: крошечный текстовый редактор




                  Текстовый редактор bootstrap-wysiwyg — это всего 1.5 Кб в минифицированном и сжатом виде и чуть больше 6 Кб исходного кода, базовые функции редактирования на основе execCommand, drag-and-drop для вставки изображений, поддержка стандартных горячих клавиш и ничего лишнего. Редактор работает в современных браузерах (Chrome 26, Firefox 19, Safari 6) и на мобильных платформах (IOS 6 iPad/iPhone, Android 4.1.1 Chrome). Зависимости — jQuery, jQuery HotKeys и Bootstrap.
                  Читать дальше →
                • Настройка nginx

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

                    Неплохой начальной точкой для настройки nginx является конфиг, который идёт в комплекте с дистрибутивом, но очень многие возможности этого сервера в нём даже не упоминаются. Значительно более подробный пример есть на сайте Игоря Сысоева: sysoev.ru/nginx/docs/example.html. Однако, давайте лучше попробуем собрать с нуля свой конфиг, с бриджем и поэтессами. :)
                    подробности