суббота, 28 мая 2016 г.

Как добавить в Blogger возможность красиво вставлять код на различных языках?

Нашёл возможность, как более-менее красиво оформлять код в Blogger.

В большинстве случаев мне бы хватило минимальной возможности написать текст с отступом и шрифтом Courier New, но, ###, возможности отступа в стандартном редакторе почему-то нет. Или я слепой! :(

В общем я нашёл инструмент под названием code-prettify:
https://github.com/google/code-prettify
В нём можно выбирать темы оформления.

Для моего (тёмного) блога мне по душе пришлась следующая конфигурация.

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sons-of-obsidian'/>

Данную строку нужно добавить в раздел HEAD шаблона в настройках редактирования кода шаблона: Шаблон -> Изменить HTML.

Для того, чтобы некий текст обернуть в красивое оформление, нужно обернуть его тегами
<pre class="prettyprint lang-sh"> ... </pre>

где "lang-sh" означает язык, на котором написан фрагмент кода, в данном случае это shell.

Список поддерживаемых языков можно посмотреть на страничке проекта.


Начало работы с RubyOnRails -- Rails для чайников

Я решил, что пора уже разобраться с RubyOnRails.

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


С чего начать ?

Я пока остановился на "Ruby on Rails Tutorial. Изучение Rails на Примерах", Майкл Хартл.

Данная книга доступна онлайн на русском языке по следующей ссылке:
http://railstutorial.ru/chapters/4_0/beginning

Там же можно найти и англоязычную версию.


Приятные полезности после установки rvm, rails, bundler

 

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

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

Этого можно добиться, создав файлы с названиями ".ruby-version" и ".ruby-gemset".
Ниже привожу пример содержания данных файлов.

.ruby-version
ruby-2.2.5
где, "ruby-2.2.5" -- это название версии  Ruby, которая установлена с помощью rvm и используется вашим приложением.

.ruby-gemset
learning_rails

где "learning_rails" -- это название гемсета, на который должен переключиться rvm после открытия директории, в которой находятся эти файлы.

UPD: нашёл вариант, когда эти 2 файла можно не создавать ,а вместо этого дописать строку в файл 'Gemfile', например

#ruby-gemset=learning_rails 


среда, 18 мая 2016 г.

How to update Java plugin after upgrading Mozilla Firefox to version 46 in Ubuntu 14.04 ?

I have upgraded my Firefox and after running Firefox I have found a notice that Java plugin has to be upgraded too.

So there are steps to do it.

1. Install the latest (at the moment) version of Java 8
sudo apt-get install oracle-java8-installer

2. Update alternatives
sudo update-alternatives --config mozilla-javaplugin.so

вторник, 30 декабря 2014 г.

Skype's sound in Ubuntu 14.04 (virtual device)

Слава пингвинам!

Я наконец-то успешно разрешил проблему с Skype на Ubuntu 14.04: не было звука; в 'Options -> Sound Devices' в выпадающих списках отображалось только устройство под названием "Virtual device".

Ранее было выявлено, что имеется некая проблема с PulseAudio. Но предыдущие попытки найти решение были неудачными.

Но вот мне повезло!

Всё просто! Т.к. Skype -- 32-разрядный, то ему нужна 32-разрядная версия PulseAudio.

Для этого устанавливаем пакет:

sudo apt-get install libpulse0:i386

пятница, 26 декабря 2014 г.

Capistrano 2 (для чайников)

Собственно осознал то, что я до конца не понимал, в каком порядке работают таски в Capistrano 2.
Задался вопросом ликвидировать этот пробел в своих знаниях.

И вот что получилось.

Дефолтный таск в указанном namespace


Когда вы запускаете 

cap deploy

то это имеется в виду, что вы запукаете

cap <namespace>:<task>

Если task, не указан, то будет использоваться дефолтный таск в указанном namespace


Стандартный порядок запуска тасков


Смотрим ссылку [1].
Читаем описание по ссылке [2].

От себя добавлю немного цитат из исходного кода Capistrano:

namespace :deploy do
  task :default do
    update
    restart
  end
  task :update do
    transaction do
      update_code
      create_symlink
    end
  end

end

Про миграции в БД


В Capistrano имеется таска deploy:migrate. Она не запускается в стандартном потоке. Ее нужно запускать отдельно. 
Вывод: я привязывал запуск миграций к таске deploy:update:

after 'deploy:update', 'project:migrations'

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


Также в Capistrano имеется таска deploy:migrations для "ленивых" :) :

  task :migrations do
    set :migrate_target, :latest
    update_code
    migrate
    create_symlink
    restart
  end

Но тут надо обратить внимание на то, что нет транзакции, если сравнивать с deploy:update


Ссылки на ресурсы:

понедельник, 15 декабря 2014 г.

Error when you run JMeter 2.12 : "Could not initialise key store java.io.IOException (Permission denied)"


I was surprised when I had run JMeter using 'jmeter' command and I could not use 'HTTP Test script recorder' to record some scenario.

2014/12/15 12:49:13 WARN  - jmeter.protocol.http.proxy.ProxyControl: Could not open expected file or certificate is not valid /opt/apache-jmeter-2.12/bin/proxyserver.jks /opt/apache-jmeter-2.12/bin/proxyserver.jks (No such file or directory) 
2014/12/15 12:49:13 INFO  - jmeter.protocol.http.proxy.ProxyControl: Generating standard keypair in /opt/apache-jmeter-2.12/bin/proxyserver.jks 
2014/12/15 12:49:14 ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException:   >> keytool error: java.io.FileNotFoundException: proxyserver.jks (Permission denied) <<
Command failed, code: 1
'keytool -genkeypair -alias :jmeter: -dname "cn=JMeter Proxy (DO NOT TRUST)" -keyalg RSA -keystore proxyserver.jks -storepass {redacted} -keypass {redacted} -validity 7'



To solve this trouble I have found that JMeter can be run with the following parameters (JMeter was installed into '/opt/apache-jmeter-2.12' directory on my machine):

export JVM_ARGS=-Dproxy.cert.directory=`readlink -f ~`; /opt/apache-jmeter-2.12/bin/jmeter

вторник, 25 марта 2014 г.

Rspec, nested example groups and RTFM

Очень давно я уже не писал в блог. (сказал словами мастера Йоды я)
Значит это не было первой необходимостью.

А сегодня я открыл автотесты Cucumber и наткнулся на интереснейший пример: вложенные describe-блоки. А также несколько блоков "it {...}" идущих один за другим.

Пример можно посмотреть тут:
https://github.com/cucumber/cucumber/blob/master/spec/cucumber/formatter/html_spec.rb

 Это просто чудесно!

Вот и статейка интересная на эту же тему:
http://blog.codefront.net/2007/12/30/why-i-love-rspec-nested-example-groups/


Я совсем не специалист в Руби на данный момент, системно Руби никогда не изучал (только по мере необходимости), поэтому "мануалов" по RSpec дотошно не читал. А надо бы )))
Собственно как и любые мануалы. А в вселенной, где существуют автоматизированные тесты, они (тесты) дают очень много интересной информации.

В общем надо по утрам повторять мантры "RTFM" and "RTFT" (read the f***ing tests) :)

Осталось только привести свой образ жизни в такой, когда будет время по утрам для "пения" мантр. :-D