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

Gem::RemoteFetcher::FetchError

При запуске Web-сервера возникла следующая ошибка:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/gems/rake- 10.4.2.gem)

Для лечения необходимо в Gemfile заменить:

source 'https://rubygems.org'

на

source 'http://rubygems.org'

четверг, 11 декабря 2014 г.

Как в rails исключить первый элемент в итераторе each?

Конструкция довольно простая:

<% documents[1..-1].each do |document| %>

где documents — коллекция элементов. Действие происходит в шаблоне. Если в конструкции вместо [1..-1] указать [1..-2], то мы исключим и первый и последний элемент.

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

FATAL: 28000: no pg_hba.conf entry for host "a.b.c.d"

Ошибка возникает при попытке подключения к БД, указав в качестве имени хоста его IP-адрес, с другого компьютера в сети.

Для лечения ошибки необходимо в файл pg_hba.conf добавить строку:

host all all a.b.c.d/24 md5

где a.b.c.d — IP-адрес компьютера с СУБД PostgreSQL.

В конце нужно перезапустить службу postgresql-x64-9.2 и все должно заработать.

четверг, 4 декабря 2014 г.

Автоинкремент билда в C#

Для добавления номера билда в программу на C# необходимо:

В файле AssemblyInfo.cs:

[assembly: AssemblyVersion( "1.0.*" )]
[assembly: AssemblyFileVersion( "1.0.*" )]

Затем в нужном месте считываем номер билда:

Assembly.GetExecutingAssembly().GetName().Version.ToString()

и он при каждой компиляции будет увеличиваться.

пятница, 28 ноября 2014 г.

Программная установка режима документов в IE

Чтобы установить режим просмотра документов максимальный для данного браузера (IE), необходимо добавить в head следующую строчку:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

вторник, 11 ноября 2014 г.

четверг, 16 октября 2014 г.

Удаление непустого калатога в Linux

rm -rf DIRNAME

Ключ 'r' говорит о том, что удаление рекурсивное, а ключ 'f' говорит о том, что удалять надо без лишних запросов.

четверг, 9 октября 2014 г.

Подготовка машины к web-разработке на Ruby on Rails

  1. Добавление пользователя в группу sudo;
  2. Установка Node.js;
  3. Установка curl: # apt-get install curl
  4. Установка RVM;
  5. Установка Ruby;
  6. Проверяем корректность установки: $ ruby -v
  7. Установка интерпретатора Ruby по умолчанию;
  8. Установка Rails: $ gem install rails
  9. Проверяем корректность установки: $ rails -v
  10. Установка Java Development Kit: # apt-get install default-jdk
  11. Установка RubyMine
  12. Установка git: # apt-get install git
  13. Установка примочки для использования БД Sqlite: $ gem install sqlite3-ruby
  14. Изучаем один из лучших туториалов Ruby on Rails Tutorial и начинаем творить на рельсах!

Ошибки при переходе на Django 1.7

TypeError: Couldn't reconstruct m2m field tags on Task: __init__() got an unexpected keyword argument 'serialize'

Для устранения данной ошибки необходимо обновить обновить пакет django-taggit:

# pip install django-taggit --upgrade

Следующая ошибка:

ImportError: cannot import name simplejson

вылечилась обновлением пакета django-recaptcha:

# pip install django-recaptcha --upgrade

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

суббота, 4 октября 2014 г.

Определение нажатой кнопки в Django

Если на странице у нас находятся 2 формы соответственно с 2-мя кнопками "Отправить", то во вьюхе нужно как-то определить, какую именно кнопку нажал пользователь.

Решение проблемы следующее:

Для начала для каждой кнопки задаем уникальное имя:

<button type="submit" name="button1">Отправить</button>
<button type="submit" name="button2">Отправить</button>

Затем в представлении определяем, какая именно кнопка была нажата:

if 'button1' in request.POST:
    # Нажата кнопка 1
elif 'button2' in request.POST:
    # Нажата кнопка 2

пятница, 3 октября 2014 г.

Поразмять мозги

Помогут сайты с задачами по программированию. Наиболее понравились следующие:

В комплекте: множество задач разной сложности + автоматическая проверка кода. Язык программирования также можно выбрать из большого списка.

среда, 1 октября 2014 г.

Как создать копию папки с такими же правами?

Для создания копии папки с аналогичными правами, необходимо в Total Commander нажать Shift+F5, поставить галочку "Copy NTFS Permissions".

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

Как расположить Notepad++ по центру экрана при старте?

Часто бывает, что при открытии текстовых файлов, программа Notepad++ отображается не по центру экрана.

Проблема решается установкой необходимых параметров в файле:

c:\Program Files\NotePad++\config.xml

<GUIConfig name="AppPosition" x="50" y="50" width="955" height="659" isMaximized="no" />

воскресенье, 7 сентября 2014 г.

Could not find a JavaScript runtime

Если при запуске сервера появляется ошибка:

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. ExecJS::RuntimeUnavailable)

Необходимо добавить в gem-файл следующие строчки:

gem 'execjs'
gem 'therubyracer'

После чего выполнить команду:

$ bundle install

среда, 3 сентября 2014 г.

Как проверить, какая версия Rails запускается по умолчанию?

$ rails --version

Команда возвращает номер версии.

Как получить список всех установленных версий Rails?

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

$ gem list --local rails

Можно ли сделать аналогичное на Django? Вспоминается песочница virtualenv... Но в рельсах это как-то попроще реализовано.

понедельник, 1 сентября 2014 г.

Сколько стоит попытка получить визу в Канаду?

Предположим, в один прекрасный день вы решили повысить свои познания в английском языке посредством обучения за границей. В качестве страны обучения вы выбрали Канаду, чтобы осуществить полное погружение в среду. Спросив у гугла вы находите школу английского языка ILAC, которая имеет свои филиалы в городах Торонто и Ванкувер. Ванкувер конечно красивее, но из Москвы туда нет прямого рейса, да и по деньгам билет до Торонто дешевле. Минимальный срок обучения — 2 недели.

Расценки в данной школе следующие:

Регистрация (Program Registration Fee) — $125
2 недели интенсивного английского / 38 уроков в неделю (Power English) — $780
Медицинская страховка (Health Insurance) — $35
Плата за размещение (Accommodation Placement Fee ) — $195
Проживание в семье (Single Room Homestay ) — $440
Итого: $1575

Плата за подачу документов на визу составляет 100$
В случае отказа в визе ILAC возвращает деньги за исключением платы за регистрации и 5% комиссии банка. В моем случае получаем обратно: $1575 - $125 (регистрация) – 5% от оставшейся суммы $72,5 (комиссия банка) = $1377,5
Итого с учетом подачи документов на визу получаем общие расходы в $297,5
Сюда я еще не включил затраты на перевод документов на визу, но это тема отдельной статьи...

Какой можно сделать вывод: стоимость обучения в школе ILAC не такая уж большая, проживание в семье тоже не дорогое. Всё портит сбор за регистрацию и не понятная комиссия банка, которая снимается при возврате денег в случае отказа в выдаче визы.

воскресенье, 31 августа 2014 г.

суббота, 17 мая 2014 г.

Эффект слайда при разворачивании контейнера на jquery

$('div').slideToggle('slow'); 

Изначально контейнер должен быть скрыт.

Использование this в juery

$(document).ready(function()
{
  $('div').click(function()
  {
    $(this).fadeOut('slow');
  });
});

В данном примере скрываются не все контейнеры div, а только тот, по которому кликнули мышкой.

Плавное скрытие контейнера div в jquery

$('div').fadeOut('slow');

Плавное появление контейнера div в jquery

$('div').fadeIn('slow');

Получение n-го элемента списка в jquery

$a = $('li:nth-child(n)')

где n — номер элемента списка, который хотим получить. Нумерация начинается с 1.

Действия при клике на контейнере div в jquery

$(document).ready(function()
{
  $('div').click(function()
  {

  });
});

Скрытие контейнера div в jquery

$('div').hide();

Действия, при покидании мыши контейнера div в jquery

$(document).ready(function()
{
  $('div').mouseleave(function()
  {

  });
});

Действия при наведении мыши на div в jquery

$(document).ready(function()
{
  $('div').mouseenter(function()
  {
    
  });
});

суббота, 3 мая 2014 г.

Проверка на уникальность в полях на рельсах

validates :field_name1, uniqueness: true

Где field_name1 — название поля, значения которого необходимо проверять на уникальность.

Валидация чисел в полях на рельсах

validates :field_name1, numericality: {greater_than_or_equal_to: 0}

Проверка того, что поле field_name1 имеет допустимое положительное значение.

Проверка наличия данных в полях на рельсах

Метод validates() проверяет поля модели на соблюдение одного или нескольких условий. Пример:

validates :field_name1, :field_name2, :field_name3, presence: true

field_name1, field_name2, field_name3 — имена полей модели.

Инструкция presence: true предписывает валидатору проверять наличие данных в каждом из указанных полей.

среда, 16 апреля 2014 г.

Количество строк в TextArea в представлении на рельсах

<%= f.text_area :field_name, rows: rows_count %>

где field_name — название поля, rows_count — количество строк, которое должно отображаться в элементе управления TextArea.

вторник, 15 апреля 2014 г.

Настройка базы данных в рельсах

В файле config/database.yml задаются все необходимые параметры подключения к базе данных. Конечно после django некоторое потрясение от того, как все в рельсах удобнее и продуманнее сделано.

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

Вывод списка файлов в текущем каталоге на рельсах

В контроллере:

@files = Dir.glob('*')

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

<ul>
<% for file in @files %>
  <li><%= file %></li>
<% end %>
</ul>

Ссылки в рельсах

<%= link_to "link_title", controller_name_action_name_path %>

Для создания ссылки в рельсах есть замечательный метод link_to, в котором необходимо указать: link_title — заголовок ссылки, controller_name — имя контроллера, action_name — название действия.

Магия конечно после django ощущается сильно...

Создание контроллера на рельсах

$ rails generate controller controller_name action_name

где controller_name — название контроллера, action_name — список действий через пробел.

Вывод текущего времени в шаблоне на рельсах

<%= Time.now %>

воскресенье, 13 апреля 2014 г.

Запуск web-сервера для приложения на рельсах

$ rails server

Если сервер успешно запустился, можно перейти по ссылке http://0.0.0.0:3000 для просмотра приложения.

Создание нового приложения на рельсах

$ rails new app_name

где app_name — название приложения. Команда создает просто огромное количество файлов и папок (если быть точным — 74 итема).

Установка интерпретатора Ruby по умолчанию

$ rvm --default x.x.x

где x.x.x — версия интерпретатора Ruby.

Установка конкретной версии рельсов

$ rvm use x.x.x
$ gem install rails --version y.y.y --no-ri --no-rdoc

где x.x.x — номер используемой версии Ruby, y.y.y — номер версии рельсов, которая нужна.

Установка конкретной версии Ruby через RVM

$ rvm install x.x.x
где x.x.x — номер версии.
Узнать последнюю стабильную версию Ruby можно тут: https://www.ruby-lang.org/en/downloads/

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

$ ruby -v

Установка всего необходимого для Ruby

Перед самой установкой Ruby, выполним команду:

$ rvm requirements --autolibs=enable

Она по идее поставит все, что нужно.

Установка RVM

$ curl -L https://get.rvm.io | bash -s stable

Затем в терминале установить свойство:

Edit -> Profile Preference -> Title and command -> Run command as login shell

Перезапустить терминал.

Проверить корректность установки, запустив rvm.

Update. Debian 8.1:

  1. gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
  2. \curl -sSL https://get.rvm.io | bash -s stable
  3. source /home/user_name/.rvm/scripts/rvm
  4. echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile

Установка Node.js в Debian из исходников

sudo apt-get install python g++ make checkinstall
src=$(mktemp -d) && cd $src
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz && cd node-v*
./configure
fakeroot checkinstall -y --install=no --pkgversion $(echo $(pwd) | sed -n -re's/.+node-v(.+)$/\1/p') make -j$(($(nproc)+1)) install
sudo dpkg -i node_*

Команды надо выполнять по очереди.

Добавление пользователя в группу sudo в Debian

Запускаем утилиту от рута:

# visudo

Добавляем пользователя после строчки %sudo:

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
user_name ALL=(ALL:ALL) ALL

где user_name — имя добавляемого пользователя.

UPDATE: В Debian 8 утилиту visudo выпилили. Поэтому добавить пользователя в группу sudo можно несколько иначе:

# apt-get install sudo

Правим следующий файл:

nano /etc/sudoers

воскресенье, 2 февраля 2014 г.

Получение всех объектов модели в Django

Команда:

model_name.objects.all()

возвращает все объекты модели с именем model_name.

Запуск django shell из командной строки

Команда:

$ python manage.py shell

запускает командную оболочку django shell.

Быстрое переключение в mcedit

Для быстрого переключения в mcedit между файловым менеджером и командной строкой необходимо воспользоваться комбинацией клавиш Ctrl+O.

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

Команда:

$ python manage.py startapp app_name

создает Django-приложение с именем app_name.

Создание проекта в Django

Каждый раз забываю...

Простая команда:

django-admin.py startproject project_name

создает проект Django.

Создание модели по существующей БД

Есть в Django мега-крутая фича, позволяющая моментально получить модель по существующей базе данных. Название волшебной команды — inspectdb. Следующая команда создает файл с моделью models.py на основании схемы базы данных, которая указана в settings.py:

$ python manage.py inspectdb > models.py

Конечно построенную модель нужно просмотреть и при необходимости подправить.

Как создать pdf-файл из нескольких изображений в Linux?

На мое удивление оказалось, что в Linux есть встроенная утилита convert. Конвертирование картинок в pdf осуществляется следующим образом:

convert *.jpg file_name.pdf

Главное следить, чтобы файлы шли в нужном порядке.

пятница, 3 января 2014 г.

Пакет south

Важное приложения для осуществления миграций. Установка:

# pip install south

В INSTALLED_APPS необходимо добавить 'south'.

Пакет django-recaptcha

Приложение, позволяющее добавить каптчу в систему регистрации. Установка:

# pip install django-recaptcha

В INSTALLED_APPS необходимо добавить 'captcha'.

Пакет django-taggit

Очень ценное приложение, реализующее поддержку тегов. Установка:

# pip install django-taggit

В INSTALLED_APPS необходимо добавить 'taggit'.

Ошибка «No module named defaults в Django»

При миграции с Django 1.5.1 на Django 1.6.1 обнаружил ошибку:

Exception Type: ImportError
Exception Value: No module named defaults


В следующей строке кода:

from django.conf.urls.defaults import patterns, url, include

Лечение — простое: заменить строчку выше на следующую:

from django.conf.urls import patterns, url, include

четверг, 2 января 2014 г.

Восстановление базы данных mysql из бэкапа

Следующая команда восстановит базу данных из дампа:

$ mysql -u user_name -p db_name < file_name.dmp

Создание базы данных и пользователя в mysql

Создание базы данных:
create database db_name;

Создание пользователя:
create user 'user_name'@'localhost' identified by 'password';

Установка прав созданному пользователю на созданную базу данных:
grant all privileges on db_name.* to 'user_name'@'localhost' with grant option;

Создание дампа базы данных в mysql

Достаточно распространенная и очень важная задача — создать дамп базы данных. Следующая команда позволяет это сделать:

$ mysqldump -u user_name -p db_name > file_name.dmp

Установка Putty в Debian

Для работы с удаленным хостингом по SSH необходим SSH-клиент. PuTTY наверное самый известный. Установка:

# aptitude install putty

Импорт существующего репозитория Mercurial в Aptana

Импортируем существующий проект с  Bitbucket в Aptana Studio.

File -> Import -> Mercurial -> Clone Existing Mercurial Repository

В качестве URL необходимо указать удаленный репозиторий на Bitbucket:

https://user_name@bitbucket.org/user_name/project_name

Добавление поддержки Mercurial в Aptana Studio

Чтобы Aptana подружилась с Mercurial, необходимо установить соответствующую примочку:

Help — Install New Software — Add — Location: http://cbes.javaforge.com/update — выбрать MercurialEclipse.

Примочка позволит использовать систему контроля версий Mercurial в Aptana Studio.

Update 09.08.2015
Изменилось месторасположение: http://mercurialeclipse.eclipselabs.org.codespot.com/hg.wiki/update_site/stable

Распаковка zip-архивов в Debian

Для распаковки zip-архивов в Debian служит команда:

$ unzip file_name.zip

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

Установка Mercurial в Debian

Для web-разработки жизненно необходима система контроля версий. Я выбрал Mercurial. Установка проста:

# aptitude install mercurial

Установка mysql-server в Debian

  • В начале устанавливаю сервер mysql:
    # aptitude install mysql-server
    В ходе установки будет необходимо ввести пароль root'a.
  • После установки сервера mysql необходимо отредактировать файл my.cnf, для того, чтобы не было проблем с кодировками:
    # mcedit /etc/mysql/my.cnf
    В секцию [mysql] добавляю:
    default-character-set=utf8
    В секцию [mysqld] добавляю:
    character_set_server = utf8
    collation_server = utf8_general_ci
  • Необходимо перезагрузить компьютер:
    # reboot
  • Подключаюсь к mysql под root'ом:
    mysql -u root -p
    Проверяю, что кодировка MySql правильная:
    mysql> show variables like 'char%';
    Должны получить следующий результат:
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.01 sec)
    

Установка django через pip

Установка предельно простая:

# pip install django

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

$ python

>>> import django
>>> django.VERSION


Если ошибок нет — то всё в порядке.

Update 08.09.2015
Желательно зайти на сайт https://www.djangoproject.com/download/ и узнать последнюю версию Django и при установке указать именно ее. Пример:

pip install Django==1.8.4

Печатаем тире и русские кавычки в Debian

Заходим в System settings -> Region and Language -> Layouts -> Options -> Compose key Options. Устанавливаем в качестве клавиши Compose к примеру правый Alt.

Все готово! Чтобы набрать тире (—) нажимаем правый Alt, затем сочетание ---. Чтобы набрать кавычки-елочки, набираем: Shift+<< для левой кавычки («) и Shift+>> для правой кавычки (»).

Устанавливаем python-pip в Debian

python-pip ­— установщик пакетов Python в Debian. Позволяет легко устанавливать различные пакеты Python (к примеру, Django).

Установка простая:

# aptitude install python-pip

среда, 1 января 2014 г.

Установка Adobe Flash плеера в Debian

Для начала необходимо подключить возможность устанавливать несвободные пакеты. Как это сделать, описано здесь. Затем выполнить простую команду:

# aptitude install flashplugin-nonfree

Обновление плеера следующее:

# update-flashplugin-nonfree --install

Как в Debian добавить возможность ставить несвободные пакеты?

Открываем файл на редактирование:

# mcedit /etc/apt/sources.list

Добавляем в него следующие строчки:

deb-src ftp://ftp.debian.org/debian wheezy main contrib non-free
deb ftp://ftp.debian.org/debian wheezy main contrib non-free


Закрываем и сохраняем, после чего делаем обновление:

# aptitude update

Как сделать Dash в GNOME 3 всегда видимым?

По каким-то причинам панель Dash, которая отображается в левой части экрана постоянно сворачивается и закрепить её штатными средствами не представляется возможным. Это конечно косяк разработчиков.

Нашел выход, установив расширение Dash to Dock: https://extensions.gnome.org/extension/307/dash-to-dock/.

Как в Midnight Commander скрыть скрытые файлы?

Снять галочку с:
Options -> Panel Options -> Show hidden files

Добавление русского языка на панель в GNOME

Предполагается, что мы установили Debian с английским языком по умолчанию. Для добавления русской раскладки клавиатуры необходимо:

System settings -> Region and Language -> Layouts -> Add

Затем устанавливаем сочетание клавиш для смены раскладки:

Options... -> Key(s) to change layout