μ

Zurb Foundation 5

Блог переписан под foundation 5. С нетерпением жду плашку mobile friendly от гугла. Проверить свой сайт можно по ссылкам mobile-friendly и mobile-usability

Foundation приглянулся мне вполне стандартными фичами в 2015-ом году:

Жалею что не начал использовать css фреймворки раньше. Проблема была в том, что тот же Bootstrap приелся ещё до того, как я захотел его попробовать.

Обходим блокировку Роскомнадзора для GitHub

Red Queen: "Now, here, you see, it takes all the running you can do, to keep in the same place."

Web Proxy #

Для браузеров Firefox и Chrome блокировку можно обходить практически в один клик поставив бесплатный аддон на выбор:

Я предпочитаю fri-gate, его можно включать только для выбранных сайтов и он не требует регистрации. Преимущество этих прокси перед Tor и I2P — они очень быстрые.

Tor (Linux) #

А чтобы использовать консольные команды нужно поставить не менее бесплатный Tor и оборачивать все команды в него. Так это выглядит для Arch:

pacman -S tor torsocks

sudo systemctl enable tor.service
sudo systemctl start tor.service

Можно работать:

torsocks git pull

В следующем посте обходим стоимость доллара в 55Р.

Хелпер для title

Типичная задача для нового сайта, расставить заголовки для страниц.

Если для тега указано значение, то выводим значение и название сайта. Если не указано, то только название сайта.

В application_helper.rb:

  def head_title
    if content_for(:title).present?
      "#{content_for :title} › #{Settings.main.title}"
    else
      Settings.main.title
    end
  end

В макет:

doctype
html
  head
    title= head_title

В представление:

- content_for :title, @post.title

exception_notification для мониторинга ошибок

Иногда ошибки возникают в production среде. Их не очень просто отловить даже если ошибка возникла из-за непосредственно ваших действий — нужно лезть в логи.

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

Чтобы быть в курсе дел можно использовать трекеры ошибок, например Airbrake и его opensource альтернативу Errbit.

Но в случае если приложение простое, например этот блог, можно ограничиться отправлением ошибок на почту при помощи exception_notification.

Вам автоматически будут приходить уведомления на почту, когда что-нибудь сломается:

Для четвёртых Рельс подключается так:

Gemfile #

gem 'exception_notification'

config/environments/production.rb #

В блок config добавить ваши настройки:

config.middleware.use ExceptionNotification::Rack,
    email: {
    email_prefix: "[dobroserver][error] ",
    sender_address: "server@domain.tld",
    exception_recipients: "admin@domain.tld",
    email_format: :html
  }

That's all folks!

Движок блога обновлён до четвёртых Рельс

GitHub #

https://github.com/ksevelyar/dobroserver

Что нового? #

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

Параметры по умолчанию для rails new

Обычно я пишу примерно такую команду, чтобы создать приложение:

rails new solar_system --skip-test-unit --skip-bundle -d postgresql

Чтобы не указывать эти флаги каждый раз, можно создать .railsrc:

echo "--skip-bundle
--skip-test-unit
--database=postgresql" > ~/.railsrc

Поиск пакета по команде

Устанавливаем утилиту:

pacman -S pkgfile

Обновляем базу:

sudo pkgfile --update

Ищем пакет содержащий команду cgdisk:

pkgfile cgdisk 

Результат:

extra/gptfdisk

html2rss — flick

Очень простенькое веб-приложение, которое генерирует atom ленту о выходящих в московский прокат фильмах. Чтобы не пропустить возвращение The Big Lebowski, например.

http://flick.dobroserver.ru/

  1. С помощью nokogiri строим массив хешей с фильмами (при этом берём только фильмы с рейтином >= 7).
  2. Отправляем на покой полученные раньше фильмы (если фильма нет в последнем массиве, то кинотеатры он покинул).
  3. Создаём новые фильмы и выводим в atom ленту / index.

Всё это дело происходит в rake таске, который каждый час запускает whenever.

Можно использовать для получения rss из любого другого html.

Если мне понравится ходить по кинотеатрам — всё будет намертво закешировано и покрыто тестами. И возможно на более легковесном фреймворке.