👨‍💻 Блог Анатолия Гуляева

rails memo

Заметки по Rails.

assets:precompile

На слабом VDS команда rails assets:precompile может иногда не выполнятся, т.к. не хватает оперативной памяти. Решения:

  1. sudo reboot;
  2. Добавить больше swap памяти;
  3. Арендовать более мощный VDS.

(moar)

static pages

Для создания статичных страниц необходимо выполнить следующее:

rails g controller StaticPages home about help

Данная команда создаст контроллер со следующими действиями:

class StaticPagesController < ApplicationController
  def home
  end

  def about
  end

  def help
  end
end

Затем необходимо обновить файл routes.rb:

Rails.application.routes.draw do
  root to: 'static_pages#home'
  get '/about', to: 'static_pages#about'
  get '/help', to: 'static_pages#help'
end

nil? vs if true vs empty? vs blank?

nil

source

db:migrate:reset

$ rails db:migrate:reset

Как-то раз в schema.rb в таблицу posts затесалась лишняя колонка из другой ветки. В миграциях этой колонки не было, поэтому с помощью этой команды можно ресетнуть БД. Команда эквивалентна следующему: $ rails db:drop db:create db:migrate.

дружим paperclip и mina при деплое

Нужно отредактировать файл config/deploy.rb следующим образом:

set :shared_paths, ['config/database.yml', 'config/secrets.yml', 'log', 'public/system']

Затем на сервере вручную создать директорию ~/app/shared/public/system/ и создать симлинк:

$ ln -s ~/app/shared/public/system/ ~/app/current/public/system/

updates

Апдейт (10 Ноября 2016):

  • добавил разделы про db:migrate:reset и paperclip и mina.

git memo

Небольшая шпаргалка по git, которая будет дополнятся по мере изучения данного инструмента.

Клонирование репозитория с удаленного источника

cd ~/dev/
git clone <link_to_the_repo>

Commit

echo test > TODO.txt
git add TODO.txt
git commit -m "Commit message"

Push

git push origin master

Branch and merge workflow

Допустим хочу сделать изменения в проекте:

git checkout -b new_feature

Можем вернуться к основной ветке:

git checkout master

Если в ветке вышло что-то путное, мерджим ветку с master:

git commit -m "commit_message"     # делаем коммит всех изменений из new_feature
git checkout master
git merge new_feature

Не забываем отправить код на Github/Bitbucket:

git push origin

Перед началом работы не забываем накатить последнюю версию проекта:

git pull origin

Сделать коммит:

git commit -a -m "Commit desc"

Запушить все ветки локального репозитория:

git push origin

Только ветку master:

git push origin master

Запушить текущую ветку:

git push origin HEAD

Накатить все ветки с удаленного репозитория:

git pull origin

Только ветку master:

git pull origin master

Накатить изменения текущей ветки:

git pull origin HEAD

Получить список веток, с которыми работаем:

git branch

Замерджить some_branch в текущую ветку:

git merge some_branch

Просто удалить some_branch (тупиковая ветвь):

git branch -D some_branch

Удалить some_branch (после мерджа):

git branch -d some_branch

Adding a remote

git remote add origin https://github.com/user/repo.git

Revert to a previous commit

git reset --hard 0d1d7fc32

Как я использую Evernote

Evernote logo

Введение

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

Блокноты

Мне хватает четырех блокнотов:

  • !inbox;
  • !sorted;
  • $bullet journal 2016;
  • archieved.

Notebooks

Не создавайте много блокнотов по типу: personal, dev, project_1, project_2 etc. Удобнее пользоваться тегами, хотя бы потому, что их можно бесконечно вкладывать в друг друга.

!inbox

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

!sorted

После добавления тегов к заметке она перемещается в блокнот под назавнием !sorted, в котором хранятся 90% заметок. Лишние заметки из этого блокнота удаляются раз в месяц.

$bullet journal 2016

Я интегрировал систему Bullet Journal в Evernote, переместив ее из аналога в цифру. О системе и как ею пользоваться - тема для другой статьи.

archived

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

Теги

Tags

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

  • \^blog - тег, в котором хранятся заметки об идеях и сами посты для блога:
    • .blog-misc - для идей, что написать, статьи о ведении блога.
    • .blog-posts - сами посты, а также черновики.
  • \^dev - хранятся теги, относящиеся к программированию:
    • .rails, .ruby, .css, .osx etc.
    • .dev-misc - все, что не относится к вышеназванным темам.
    • .tutorials
  • \^personal - для тегов: сканы документов, информация об аккаунтах, идеи, списки, что посмотреть/почитать/послушать.
    • .accounts - данные моих профилей в соц. сетях, аккаунтов с различных веб-сайтов.
    • .contacts - визитки, контакты.
    • .documents - сканы и данные физических документов.
    • .ideas - идеи.
    • .lists - списки, например, какие фильмы посмотреть, что почитать. Эти списки формируются из следующих трех тегов.
    • .to-buy - что купить: книги, программы, игры, гаджеты.
    • .to-read - какие книги прочитать.
    • .to-watch - какие фильмы, сериалы, аниме посмотреть.
  • \^projects - проекты для реализации.
  • \^topic - тег для: 3ds, аниме, комиксы, вдохновение etc.
    • например, тег .3ds - заметки, связанные с Nintendo 3DS.
    • .insights - все, что меня вдохновляет.
  • \^university - временный тег, пока там хранятся заметки, касающиеся учебы.
  • \^web - избранное из твиттера, ссылки, письма:
    • .favd-twitter - избранное из твиттера.
    • .links - заметки, которые представляют собой только ссылку.
    • .starred-gmail - избранные письма.
  • _who

  • ~miscallaneous - разное: read later, reference, Scannable, templates:
    • //TO DO -
    • read later - статьи к прочтению на потом.
    • reference - служит как архив. Помечаю ключи активации, пароли Wi-Fi точек, разные ID, все, что не нужно в краткосрочной перспективе.
    • templates - шаблоны для других заметок.

Стоит сказать, что тегами _what, ~miscallaneous и которые начинаются со знака \^, не помечаются никакие заметки, чтобы не было путаницы и избыточности.

Что добавляется в Evernote?

  • Статьи;
  • Избранное из твиттера;
  • Документы;
  • Идеи;
  • Задачи на исполнение;
  • Картинки;
  • Фото записок из блокнота;
  • Конспекты;
  • Данные о профилях с разлчиных соц. сетей или сайтов;
  • Ключи активации;
  • Youtube видео.

Как все это работает?

Шаг 1

В конце недели в блокноте !inbox накапливается n-ое количество заметок:

  • Из закладок браузера;
  • Когда ставлю лайк под постом в твиттере;
  • В виде фотографии или диктофонной записи;
  • Просто в виде текстовой заметки.

Bookmarks

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

Шаг 2

В субботу или воскресенье уделяю перемещению закладок из браузера в Evernote и сортировке всех записей в блокноте !inbox полчаса. Во время этого процесса удаляю лишнее, расставляю теги (прелесть в том, что заметка может иметь несчетное количество тегов), в твиты с картинками добавляю оные в заметку. Статьи стараюсь сохранять с помошью расширения Web Clipper в формате simple article, youtube видео идут в формате youtube (стоило бы сохранять сами видео в заметку), остальное идет как просто link.

Web clipper

Inbox-1

Inbox-2

Шаг 3

Перемещаю “причесанные” заметки в блокнот !sorted. Блокнот !inbox становится пустым и готовым к наполнению на следующей неделе.

Шаг 4

Раз в месяц инспектирую систему на наличие неактуальных заметок, если нахожу такие, то удаляю.

Заключение

Система минималистична. Постоянно использую 2 блокнота - !inbox и !sorted. Легко и безболезненно можно внедрять новые теги, изменять их структуру и модифицировать. Статья будет обновляться и исправляться по мере развития системы. У системы есть недостатки: пока я не знаю, что будет, если в блокноте !sorted накопится несколько тысяч заметок. Судя по статье, у Evernote проблемы с сохранением данных.

Посткриптум

  • Evernote поддерживает шифрование заметок. Зашифруйте от любопытных глаз ваш список любимого порно, например.
  • Стоит купить подписку на год вперед. Мне не хватило условий бесплатного плана: трафик 60 Мб/мес, нет офлайна, лимит устройств.
  • Рекомендую поставить расширение для браузера Web Clipper. На деле он ужасен (херит форматирование, сниппеты кода превращаются в говно), но без него никак.
  • Корзину не очищаю, а то мало ли.
  • На данный момент в системе 432 заметки, в неделю добавляю от 10 до 50 заметок.
  • Не упомянул тег _who, так как он в стадии планирования.

Ссылки

  1. {tech tips} How I Use Evernote
  2. Evernote Tips: How Students Can Use Evernote To Be More Organized
  3. Create a digital Bullet Journal with Evernote
  4. HOW I ORGANIZE EVERNOTE - A Peek Inside My Personal System
  5. Evernote, the bug-ridden elephant

Bootstrap flash notice on Rails

In views/layouts/application.html.erb add following line after header:

<%= render 'layouts/messages' %>

views/layouts/_messages.html.erb must look like this:

<% flash.each do |type, message| %>
  <div class="alert <%= bootstrap_class_for(type) %> fade in">
    <button class="close" data-dismiss="alert">×</button>
    <%= message %>
  </div>
<% end %>

In messages.html.erb we used bootstrap_class_for helper which is declared in helpers/application_helper.rb:

module ApplicationHelper

  def bootstrap_class_for flash_type
    case flash_type
      when "success"
        "alert-success"
      when "error"
        "alert-danger"
      when "alert"
        "alert-warning"
      when "notice"
        "alert-info"
      else
        flash_type.to_s
    end
  end
end

Минимализм или как постичь Дзен в OS X и не только

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

Я устал от перегруженных интерфейсов, устал от беспорядка и хаоса. В данный момент я нахожусь в постижении Дзена. Мой ноутбук - это последний оплот спокойствия и минимализма в этом государстве.

Минимализм в OS X

Мой рабочий стол выглядит вот так:

My Desktop

Довольно скучно, но мне по нраву.

Дальше я буду скучно перечислять пункты для достижения Дзена в OS X:

  • cделай Menu Bar и Dock темными, убери прозрачность, поставь на обои 11% Grey Scale
  • спрячь Dock и убери из него все иконки (Finder и корзину не получится)
  • храни ~/ в чистоте:
    • chflags hidden ~/Public
    • chflags hidden ~/Applications
    • chflags hidden ~/Movies
    • chflags hidden ~/Documents
    • chflags hidden ~/Desktop
  • установи Bartender 2, спрячь все иконки кроме часов
  • установи Alfred, пользуйся им вместо Spotlight. Alfred действительно удобен, хотя бы тем, что он не проглатывает первый введенный символ (очень бесячий меня баг в OS X)
  • отключи нахер нотификации
  • отключи Dashboard
  • сделай отдельную папку для скриншотов
  • Desktop держи всегда в чистоте
  • в конце недели всегда чисти папки (Downloads, Projects etc), удаляй лишнее
  • поставь iTerm + oh-my-zsh
  • я не пользуюсь несколькими рабочими столами, не распыляйся
  • желательно все хранить в dropbox/google drive (в моем случае - проекты, скрины, документы и книги крутятся в дропбоксе, фотки, установщики программ, некоторые фильмы в гугл драйве)
  • установи CleanMyMac, он удаляет языковые файлы и прочий мусор
  • удали стандартный пакет iLife (кроме офисных приложений естественно)
  • DaisyDisk наглядно показывает, какие папки много весят
  • в Chrome спрячь лишние иконки расширений, иконку “домой”, панель закладок. поставь AdBlock
  • держи на системе по-минимуму программ, только необходимое. Мой Джентельменский Набор состоит из:
    • Developer Tools:
      • Atom
      • iTerm
    • Browsers:
      • Google Chrome
      • Tor Browser
    • Social:
      • Telegram
      • TweetDeck
      • Skype
      • iMessage
    • Productivity:
      • Pages
      • Keynote
    • Utilities:
      • CleanMyMac
      • Transmission
      • Dropbox
      • Android File Transfer
      • DaisyDisk
      • Keka
      • TunnelBear
      • Adobe Acrobat Reader
      • MacDjView
      • VLC
      • Skitch
      • Calculator
      • Bartender 2
      • Alfred 2
      • flux
    • Misc:
      • Adobe Photoshop CC 2015

Минимализм в сервисах

Удалил нахуй инстаграм, ластфм, вайн, goodreads.

Зачем я удалил инстаграм, вайн?

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

Зачем я удалил ластфм?

  • уже не тот, блевотный дизайн, счетчики и всякие плюшки, что были сбоку профиля канули в лету
  • был головной болью: ибо приходилось править вручную теги, добавлять обложки
  • скробблер устарел, плохо работал: крашился после скробблинга
  • скробблеры как расширение то еще говно:
    • vkopt: регулярно сбрасывались настройки, небезопасен
    • какой-то там самый попуряный экстеншен: иногда скроблил трек по два раза

В итоге я сэкономил себе 169 руб/мес на подписке Apple Music, кучу времени и нервов. Музыку слушаю в ВК, качаю оттуда же.

vk.com

Отпишись нахуй от пабликов в ВК. В моем случае, ВК только для музыки, постов от “Библиотека программиста” и переписки с парой личностей. Ну иногда можно посохранять картиночки. Подписан всего на пару десятков пабликов. Лента читается утром и вечером за пару минут. Завел группу куда скидываю (репостами) музыку и книги с пабликов.

Почта

Мой inbox всегда чистый, есть пару ярлыков для специфичных писем (например, переадресация с почты моей университесткой группы, куда препода кидают лекции и прочее), важное помечаю и архивирую, остальное удаляю. Регулярно отписывался от всех рассылок, теперь они почти не беспокоят.

bookmarks + google keep + pocket

Ныне неактуально.

Завел на github’е репозиторий по типу этого jbranchaud/til. Закидываю туда небольшие вещи. Для интересных материалов использую закладки бразуера, коплю их в течение недели, а затем самые нужные статьи/видео/скринкасты в конце недели добавляю в Pocket, прочие ссылки сортируются внутри менджера закладок Chrome’а (у меня есть две папки - blogs и books). То, что можно прочитать здесь и сейчас, прочитываю, и если в материале уже нет нужды спокойно удаляю его. Для совсем мелких заметок и всего остального использую Google Keep. По надобности заметка из Keep может перейти в репозиторий til.

Вместо заключения

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

Updates

  1. Не забудьте удалить все иконки из dock’а и скройте его. Я им вообще непользуюсь, вместо него у меня есть Alfred и горячие клавиши:
    • Ctrl + Space (для вызова Alfred’а)
    • Cmd + Tab (для переключения между приложениями)
    • Cmd + ~ (для переключения между окнами отдельного приложения)
  2. 1 апреля поставил miitomo, угорел на пару дней, но потом понял, что не надо распыляться на сервисы. Чем их больше, тем хуже для тебя.
  3. Зачем-то зарегистрировал второй аккаунт в твиттере (не бот), где писал чисто на английском, постил эччи etc. Ненужность вытекает из второго пункта.
  4. Ах да, у меня был Facebook. Искренне не понимаю, как некоторые люди сидят чисто там (и им еще кажется, что он удобный). Facebook - зло, страшный сон дизайнера и еще один отвлекающий фактор. У меня там не было друзей, с которыми можно было общаться. Я ничего туда не постил. Он был мне нужен для быстрой регистрации в каких-либо сторонних сервисах (например agar.io), что не есть хорошо, т.к., во-первых, сторонние сервисы - это отвлекающие факторы, а во-вторых, не стоит доверять facebook’у вообще любую информацию.
  5. Tumblr - помойка с говном, вообще с этими картиночками надо завязывать. Он у меня был буквально один день, поставил на него тему, постанул сдесяток постов, а потом понял, что он тоже нафиг не нужен. Ведь у меня и так есть сохраненные картинки.
  6. Советую завести в твиттере списки. Это поможет определить ценность информации людей, которых вы читаете. Например, я стараюсь, чтобы политота в моей ленте появлялась как можно реже (идеально - вообще никогда).
  7. Блядь, я снова мигрировал в Evernote. Но это в последний раз, так как я опробовал множество разных сервисов для создания и хранения заметок. Мой путь был таков: Evernote -> Apple Notes -> Bullet Journal -> OneNote -> Google Keep + Pocket -> Evernote. Вообще надо накатить отдельный пост про эти сервисы и как я храню информацию.
  8. Удалил некоторые программы из списка ввиду отсутствия в них надобности:
    • Unity3D
    • Blender
    • Pocket