Блог Леонида Лукина

  • Ruby on Rails
    Какая версия Ruby быстрее?

    Один из самых простых способов ускорить работу Ruby on Rails сайта - это перейти на новую, самую свежую версию Ruby.

    А вот насколько быстро работают каждые из версий, можно всегда посмотреть на сайте isrubyfastyet.com. А на момент написания сообщения, данные по скорости распределились так:

    Скорость различных версий Ruby

    Опубликовано: 12.02.2016Категория: Ruby on RailsКомментарии: 0
  • Музыка
    Новый альбом Electric Light Orchestra (ELO)

    Джефф Линн выпустил новый альбом под маркой Electric Light Orchestra (ELO) впервые почти за 15 лет с момента выхода его альбома Zoom в 2001. Альбом Alone in the Universe - это 14-й студийный альбом в копилке ELO, записанный Линном "в одиночку" в своей домашней студии.

    Композиции с альбома Alone in the Universe:

    • When I Was a Boy
    • Love and Rain
    • Dirty to the Bone
    • When the Night Comes
    • The Sun Will Shine on You
    • Ain't It a Drag
    • All My Life
    • I'm Leaving You
    • One Step at a Time
    • Alone in the Universe

    Опубликовано: 06.02.2016Категория: МузыкаКомментарии: 0
  • Ruby on Rails
    Создание нового Rails проекта с использование Docker

    Начинается все не с создание Rails проекта, как можно было бы ожидать, а с создания контейнера для него при помощи Docker и Docker Composer.

    Установка Docker

    Устанавливаем Docker (если он не был установлен ранее). Ниже представлен вариант установки для Linux, к остальным вариантам отправляю на сайт Docker.

    $ wget -qO- https://get.docker.com/ | sh

    Проверяем успешность установки:

    $ docker -v

    Добавляем себя в группу docker:

    $ sudo usermod -aG docker <имя_пользователя>

    Установка Docker Compose

    Для упрощения рутинных операций мы будем использовать Docker Compose (на данный момент нельзя использовать под Windows). Устанавливаем его самый простым способом и проверяем успешность установки:

    $ sudo apt-get -y install python-pip
    $ sudo pip install docker-compose
    $ docker-compose --version

    Создание Rails приложения

    Создать папку приложения. В ней создать Gemfile (2 строки) и пустой Gemfile.lock. Содержимое Gemfile только указывает версию Rails, которую мы собираемся использовать (к примеру новую версию Rails 5):

    source 'https://rubygems.org'
    gem 'rails', '>= 5.0.0.beta1', '< 5.1'

    Создать Dockerfile

    Прежде всего указываем, какой образ будем использовать в качестве базового (c Docker Hub). В случае с Rails 5 нужно использовать образ, который поддерживает минимально Ruby версии 2.3. Далее по коду:

    FROM ruby:2.3
            
    # Задаем имя проекта
    ENV APP_NAME <имя проекта>
    
    # Устанавливаем базовые пакеты
    RUN apt-get update -qq && apt-get install -y build-essential
    
    # Для работы с Postgres
    RUN apt-get install -y libpq-dev
    
    # Для использования Nokogiri
    RUN apt-get install -y libxml2-dev libxslt1-dev
    
    # Для Capybara-webkit
    RUN apt-get install -y libqt4-webkit libqt4-dev xvfb
    
    # Для JS runtime
    RUN apt-get install -y nodejs
    
    # Создаем папку проекта и устанавливаем ее в качестве рабочей
    RUN mkdir /$APP_NAME
    WORKDIR /$APP_NAME
    
    # Копируем в созданную папку Gemfile'ы и запускаем bundle
    ADD Gemfile /$APP_NAME/Gemfile
    ADD Gemfile.lock /$APP_NAME/Gemfile.lock
    RUN bundle install
    ADD . /$APP_NAME

    После отрабатывания этого файла будут установлены все необходимые пакеты, будет создана папка проекта и установлена Rails.

    Создать docker-compose.yml

    С помощью Docker Compose мы будем создавать контейнеры (отдельно для Postgres и Rails приложения), создавать Rails проект и сразу же запускать rails-сервер. Содержимое файла docker-compose.yml:

    db:
      image: postgres
    web:
      build: .
      command: bundle exec rails s -p 3000 -b '0.0.0.0'
      volumes:
        - .:/demodexcomplexru
      ports:
        - "3000:3000"
      links:
        - db

    Запуск создания контейнера и приложения

    Создаем контейнер, запускаем команду на создание нового Rails приложения (пропуская установку всех гемов):

    $ docker-compose run web rails new . 
      -T --force --database=postgresql 
      --skip-bundle

    Поскольку Docker работает от root, то и приложение создается от имени пользователя root. Меняем владельца:

    $ sudo chown -R $USER:$USER .

    Запускаем заново сборку контейнера, который и запускает bundler и устанавливает все необходимые гемы:

    $ docker-compose build

    Для подключения к базе в другом контейнере правим config/database.yml:

    development: &default
      adapter: postgresql
      encoding: unicode
      database: postgres
      pool: 5
      username: postgres
      password:
      host: db
    
    test:
      <<: *default
      database: demodexcomplexru_test

    Запускаем приложение (контейнер приложения)

    $ docker-compose up

    Создаем базу данных (в другом терминале)

    $ docker-compose run web rake db:create

    Проверяем работу приложения в браузере - http://0.0.0.0:3000.

    Опубликовано: 22.01.2016Категория: Ruby on RailsКомментарии: 0
  • Поисковая оптимизация (SEO)
    CTR сайта в результатах поиска

    И снова о CTR сниппета сайта в результатах поиска в зависимости от занимаемой позиции. Последние самые свежие данные, которые мне удалось найти представлены ниже. Исследование проводил портал AdvancedWebRanking.com. Данные снимались по Google и являются усредненными по всем запросам.

    CTR сайта в зависимости от позиции

    Итак, первая позиция "забирает" порядка 31%, далее идет падение почти в 2 раза (первая позиция по сравнению со второй приносит почти в 2 раза больше трафика), после чего падению уже более плавное. Последние позиции в топ 10 имеют уже ниже 4% кликабельности, на вторую же страницу поиска переходят также менее 4% всех пользователей.

    Естественно, что картина серьезно меняется, если речь идет о брендовом запросе (пользователь ищет конкретную компанию или определенный сайт). В этом случае CTR "взлетает" почти в 2 раза!

    CTR сайта в зависимости от позиции по брендовому запросу

    С другими данными исследования и методикой его проведения можно ознакомиться в официальном отчете.

    Опубликовано: 11.11.2015Категория: Поисковая оптимизация (SEO)Комментарии: 0
  • Ruby on Rails
    И снова о переходе на новую версию Ruby on Rails

    Продолжаю ранее поднятую тему Как правильно перейти на новую версию Ruby on Rails. Особенно актуально в свете предстоящего скорого выхода Ruby on Rails 5. Могу порекомендовать один очень полезный сервис. Он будет просто незаменим в ситуациях, когда вам приходится переходит на новую версию Rails, перепрыгивая сразу несколько промежуточных релизов. Ведь не секрет, почти всегда просто обновить версию gem'а Rails до нужной бывает явно недостаточно для миграции. Что же делать? Как учесть все необходимые изменения при переходе на новые Рельсы?

    Ресурс называется RailsDiff. Идея проста - указываете текущие версию Rails вашего проекта и ту версию, на которую хотите перейти.

    Обновление на новую версию Ruby on Rails

    И в результате получаете diff изменений всех стартовых файлов Rails нового проекта.

    Обновление на новую версию Ruby on Rails

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

    Опубликовано: 11.11.2015Категория: Ruby on RailsКомментарии: 0