четверг, 5 декабря 2013 г.

Redmine. How to make a plugin

The Quest

set RAILS_ENV=production //Выбор окружения

ruby script/rails generate redmine_plugin <name> //Создание плагина

init.rb//Редактируем init.rb
Redmine::Plugin.register :quest do
  name 'Quest plugin'
  author 'Vladislav R.'
  description 'This is a plugin for Redmine'
  version '0.0.1'
  menu :application_menu, :questions, { :controller => 'questions', :action => 'index' }, :caption => 'Questions'//Ярлык на плагин в главном меню
end

ruby script/rails generate redmine_plugin_model quest questions question:string answer:boolean other:string
//Создание модели.
//quest - название плагина
//questions - название модели
//question:string - набор полей( имя поля:тип)

1001_create_questions.rb (Если ошибка, возможно у вас более 1 плагина и номер миграции совпадает => сменить номер миграции (101, 1001, 1000001...))
class CreatePolls < ActiveRecord::Migration //Описание структуры таблицы
  def change
    create_table :polls do |t|
      t.string :question
      t.integer :yes, :default => 0
      t.integer :no, :default => 0
    end
  end
end

rake redmine:plugins:migrate //Миграция в базу. Сам добавил вопросы в базу

questions.rb
class Questions < ActiveRecord::Base
  def ans(answer)
answer == 'true' ? :true : 'false' ? :false : :answer //Редактирование модели
  end
end

ruby script/rails generate redmine_plugin_controller Quest questions index vote
//Создание контроллера.
//Quest - название плагина
//questions - название контроллера
//index vote - созданные по умолчанию методы

questions_controller.rb
class QuestionsController < ApplicationController //Редактирование контроллера
  unloadable

  def index
@ques = Questions.all //Показать все записи
  end
  
  def ans 
flash[:notice] = 'Work' //Сообщение
redirect_to :action => 'index' //Возврат на функцию index
  end
end

index.html
<% @radio = 0 %> //Переменная для нумирации
<% @n = 'answerYesNo' %> //Переменная для изменения имени группы кнопок
<% @ques.each do |q| %> //Проход по всем элементак коллекции
<p>
<%= @radio = @radio + 1 %>)
<%= q.question %>? //Первое поле таблицы и др.
<br>
<%= radio_button_tag name = @n, 'true', false, { :answer => 'true' } %> Да
<br>
<%= radio_button_tag name = @n, 'false', false, { :answer => 'false' } %> Нет
<br>
<%= radio_button_tag name = @n, 'false', false %>
<%= text_field_tag 'answerText', '', { :answer => 'text' } %>
<% @n+='1' %>
</p>
<% end %>
<%= button_to 'Save', { :action => 'ans', :controller => 'questions'}, :method => :post %>
//Кнопка сохранения. Перенаправляет в функцию сохранения

routes.rb
get 'questions', :to => 'questions#index' //Вызов функции index
post 'ans', :to => 'questions#ans' //Перенаправление на функцию ans из контроллера question


Удаление плагина
rake redmine:plugins:migrate NAME=<plugin_name> VERSION=0

Откат миграции
rake db:rollback

четверг, 21 ноября 2013 г.

Создание пользователя из-под cmd

Просмотр всех пользователей

net users

Изменение пароля

net user <user_name> *

Активация записи Администратора

net user Administrator /active

Создание учетной записи Admin с паролем 123456789

net user Admin 123456789 /add

Добавление учетной записи Admin в группу Администраторы(ru)/Administrators(en)

net localgroup Администраторы Admin /add

Удаление учетной записи Admin из группы Пользователи(ru)/Users(en)

net localgroup Пользователи Admin /delete

Создание учетной записи User без пароля

net user User /add

Установка неограниченного срока действия паролей

net accounts /maxpwage:unlimited

Boot menu


Персональные ПК

Lenovo                      F12, F8 или F10

DELL                          ESC

hp                             F12

ThinkCentre             F12

acer                           F12

ASUS                         F8

BenQ                         F8



Ноутбуки

Lenovo                      F12

hp                             F9

ThinkPad                  F12

ASUS                        ESC

DELL                         F12, ESC

acer                          F12

SONY                        ESC, F10

Samsung                  F12, ESC

Toshiba                    F12

Gateway                    F12

IBM                           F12

FUJITSU                    F12

msi                            F11

BenQ                         F9

eMachines                 F12

Gigabyte                   F12


PS: Большинство boot меню на ноутбуках вызывается клавишей F12


Материнские платы

ASUS                                F8

GIGABYTE                        F12

msi                                  F11

ONDA                               ESC, F11

BIOSTAR                           F9

ASRock                             F11

Colorful                           ESC, F11

ECS                                  ESC, F11

SOYO                           ESC, F12

FOXCONN                        ESC, F12

Intel                                  F12

UNIKA                               ESC, F10

yeston                               F8

jetway                               ESC

SPARK                              ESC, F11

CTHIM                               F12, F11

Topstar                             F11, F12 или ESC

J&W                                   ESC, F8

EPOX                                 ESC

QDI                                   F12

суббота, 9 ноября 2013 г.

Установка ImageMagick

ImageMagick


1) Скачать установочник с официального сайта
2) В настройках установочника установить:
  • Add application directory to your system path
  • Install development headers and libraries for C and C++
3) Завершить установку
4) В cmd:
  • set CPATH=C:\Program Files\ImageMagick-6.7.7-Q16\include
  • set LIBRARY_PATH=C:\Program Files\ImageMagick-6.7.7-Q16\lib
PS: Проверить корректность пути

среда, 30 октября 2013 г.

Redmine(Windows)

1) Установить:

  • ImageMagick-6.8.7-0-Q16-x86-dll.exe
  • mingw-get-setup.exe
  • postgresql-9.3.0-1-windows-x64.exe
  • railsinstaller-2.2.1.exe
  • rubyinstaller-2.0.0-p247-x64.exe
2) libmySQL.dll скопировать в C:\RailsInstaller\Ruby1.9.3\bin
3) Скачать Redmine
http://www.redmine.org/projects/redmine/wiki/Download
4) Переместить Redmine в нужную папку
5) В консоли перейти в папку
6) PostgreSQL

  • Создать нового пользователя и выделить ему все права
  • Создать 3 базы: redmine, redmine_production, redmine_development

7) Изменить /config/database.yml

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: admin
  password: admin
  encoding: utf8
  schema_search_path: public

development:
  adapter: postgresql
  database: redmine_development
  host: localhost
  username: admin
  password: admin
  encoding: utf8

test:
  adapter: postgresql
  database: redmine_test
  host: localhost
  username: admin
  password: admin
  encoding: utf8


8) cmd

  • bundle install
PS:  при ошибке гема pg добавить
gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw]
в Gemfile
  • rake generate_secret_token
  • set RAILS_ENV=production
  • rake db:migrate
При ошибке попробывать:
rake db:migrate RAILS_ENV=production
  • rake redmine:load_default_data
При ошибке попробывать:
rake redmine:load_default_data RAILS_ENV=production
9) rails server
10) Зайти на http://localhost:3000
Логин: admin(или root)
Пароль: admin

PS:
Установка Redmine на Heroku
Установка ImageMagick
Установки на Google
Redmine instal

вторник, 22 октября 2013 г.

Redmine on Heroku

Установка Redmine на  Heroku


1) Установить локальную версию Redmine
Установка Redmine
2) Установить Git. Перейти в папку установленного Redmine
git init
3) В файле .gitignore

Удалить:
  • Gemfile.lock
  • /config/initializers/secret_token.rb
  • /config/initializers/session_store.rb
  • /public/plugin_assets
  • /Gemfile.lock
  • /Gemfile.local
Добавить:
  • .svn
4) В файле Gemfile

group :development do
          gem "sqlite3"
end
gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw]

5) bundle install
6) В файле config/environment.rb закоментировать
#exit 1
7) heroku create
8) git add -A
9) git commit -m "Blank Redmine"
10) git push heroku master
11) heroku run rake db:migrate
12) heroku run rake redmine:load_default_data
13) heroku ps:restart

Дополнительные команды


heroku config:add BUNDLE_WITHOUT="sqlite" //При ошибках bundle
ruby script/rails server webrick -e production //Запуск локальной версии
gem install <name> //Установка гема
gem update <name> //Обновление гема
bundle install //Установка гемов
bundle update //Обновление гемов
heroku logs //логи Heroku
heroku run bash --app <name> //Консоль приложения

пятница, 6 сентября 2013 г.

Подключение сетевого принтера в Mac OS X


1) Откройте Системные настройки

2) Выберите Печать и сканирование из меню Аппаратное обеспечение.

3) Для добавления принтера нажмите кнопку +. 

4) Нажмите правую кнопку мыши на панели управления сверху и нажмите Настроить панель инструментов 

5) Перетащите значок Windows на панель инструментов. 

6) Нажмите кнопку Готово.

7) Щелкните по значку Windows, который появился на панели инструментов.

8) Выберите рабочую группу и компьютер, на котором находиться сетевой принтер.

9) При выборе компьютера появится окно ввода логина и пароля. Введите своё имя и пароль.

10) Выберите принтер из списка доступных.

11) Нажмите на выпадающее меню Принтер и нажмите Выбрать ПО принтера.

12) В появившемся меню введите в окно поиска введите название модели принтера, выберите драйвер для устройства и нажмите OK.

13) В появившемся окне нажмите Продолжить или настройте принтер, если это необходимо.

14) После этого в настройках принтеров появится принтер, который вы настраивали.

Создание загрузочной флешки


В интернете есть огромное количество инструкций и советов по созданию загрузочных usb-устройств. Некоторые советуют какую-нибудь платную программу, другие - утилиту непонятного происхождения. Не всегда есть возможность носить с собой эти программы.
Здесь будет описан простой способ без использования стороннего soft'а, который позволит быстро создать загрузочную флешку из под Windows 7.

Ниже приведен набор команд. Для начала откроем командную строку: (кнопка пуск) + R
В появившемся окне вводим cmd
Теперь здесь можно вводить команды:

DISKPART

LIST DISK

SELECT DISK 1
Точно определить диск Флешки. Не перепутать! Проверить размер носителей(может незначительно отличаться)

CLEAN 
Может выдать ошибку, но это не критично. Переходим к следующей команде

CREATE PARTITION PRIMARY

SELECT PARTITION 1

ACTIVE

FORMAT FS=NTFS 
Или быстрое форматирование FORMAT FS=NTFS QUICK

ASSIGN

EXIT

пятница, 5 июля 2013 г.

На заметку: Оператор Кэнни

Компьютерное зрение. Оператор обнаружения границ изображения. Использование многоступенчатого алгоритма для обнаружения широкого спектра границ в изображениях.

Кэнни изучил математическую проблему получения фильтра, оптимального по критериям выделения, локализации и минимизации нескольких откликов одного края. Он показал, что искомый фильтр является суммой четырёх экспонент. Он также показал, что этот фильтр может быть хорошо приближен первой производной Гауссианы. Кэнни ввёл понятие подавления не максимумов, которое означает, что пикселями границ объявляются пиксели, в которых достигается локальный максимум градиента в направлении вектора градиента.

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

Основные этапы

Сглаживание.
Размытие изображения для удаления шума. Оператор Кэнни использует фильтр который может быть хорошо приближен к первой производной гауссианы. \sigma = 1.4:

\mathbf{B} = \frac{1}{159} \begin{bmatrix} 
2 & 4 & 5 & 4 & 2 \\
4 & 9 & 12 & 9 & 4 \\
5 & 12 & 15 & 12 & 5 \\
4 & 9 & 12 & 9 & 4 \\
2 & 4 & 5 & 4 & 2
\end{bmatrix} * \mathbf{A}.
Поиск градиентов.
Границы отмечаются там, где градиент изображения приобретает максимальное значение. Они могут иметь различное направление, поэтому алгоритм Кэнни использует четыре фильтра для обнаружения горизонтальных, вертикальных и диагональных ребер в размытом изображении.
\mathbf{G} = \sqrt{ {\mathbf{G}_x}^2 + {\mathbf{G}_y}^2 }
\mathbf{\Theta} = \operatorname{arctan}\left({ \mathbf{G}_y \over \mathbf{G}_x }\right).
Угол направления вектора градиента округляется и может принимать такие значения: 0, 45, 90, 135.
Подавление немаксимумов.
Только локальные максимумы отмечаются как границы.

Двойная пороговая фильтрация.
Потенциальные границы определяются порогами.

Трассировка области неоднозначности.
Итоговые границы определяются путём подавления всех краёв, несвязанных с определенными (сильными) границами.
Перед применением детектора, обычно преобразуют изображение в оттенки серого, чтобы уменьшить вычислительные затраты. Этот этап характерен для многих методов обработки изображений

воскресенье, 23 июня 2013 г.

IP-адрес и маска подсети

Вот и наступила сессия. До экзамена остаются считанные часы...
Задания на экзамене будут состоять из 2-х вопросов:
- Создание простейшей БД
- Расчета количества хостов и подсетей на основе IP-адреса и маски подсети

Первый вопрос отложим на потом, я, пожалуй, остановлюсь на 2-м. И так, приступим:

IP-адреса
IP-адреса используются для идентификации устройств в сети. Для взаимодействия по сети IP-адрес должен быть назначен каждому сетевому устройству (в том числе компьютерам, серверам, маршрутизаторам, принтерам и т.д.). Такие устройства в сети называют хостами. 
С помощью маски подсети определяется максимально возможное число хостов в конкретной сети. Маски подсети позволяют разделить одну сеть на несколько подсетей.

Одна часть IP-адреса представляет собой номер сети, другая – идентификатор хоста. Точно так же, как у разных домов на одной улице в адресе присутствует одно и то же название улицы, у хостов в сети в адресе имеется общий номер сети. И точно так же, как у различных домов имеется собственный номер дома, у каждого хоста в сети имеется собственный уникальный идентификационный номер – идентификатор хоста. Номер сети используется маршрутизаторами для передачи пакетов в нужные сети, тогда как идентификатор хоста определяет конкретное устройство в этой сети, которому должны быть доставлены пакеты.

Структура
IP-адрес состоит из четырех частей, записанных в виде десятичных чисел с точками (например, 192.168.1.1). Каждую из этих четырех частей называют октетом. Октет представляет собой восемь двоичных цифр (например, 11000000, или 192 в десятичном виде). 
Таким образом, каждый октет может принимать в двоичном виде значения от 00000000 до 11111111, или от 0 до 255 в десятичном виде. Количество двоичных цифр в IP-адресе, которые приходятся на номер сети, и количество цифр в адресе, приходящееся на идентификатор хоста, могут быть различными в зависимости от маски подсети.

Частные IP-адреса
У каждого хоста в сети Интернет должен быть уникальный адрес. Если ваши сети изолированы от Интернета (например, связывают два филиала), для хостов без проблем можно использовать любые IP-адреса. Однако, уполномоченной организацией по распределению нумерации в сети Интернет (IANA) специально для частных сетей зарезервированы следующие три блока IP-адресов:

10.0.0.0 — 10.255.255.255
172.16.0.0 — 172.31.255.255
192.168.0.0 — 192.168.255.255

IP-адреса можно получить через IANA, у своего провайдера услуг Интернет или назначить из диапазона адресов для частных сетей.

Маски подсети 
Маска подсети используется для определения того, какие биты являются частью номера сети, а какие – частью идентификатора хоста (для этого применяется логическая операция конъюнкции – "И"). Маска подсети включает в себя 32 бита. Если бит в маске подсети равен "1", то соответствующий бит IP-адреса является частью номера сети. Если бит в маске подсети равен "0", то соответствующий бит IP-адреса является частью идентификатора хоста. 

Маски подсети всегда состоят из серии последовательных единиц начиная с самого левого бита маски, за которой следует серия последовательных нулей, составляющих в общей сложности 32 бита.

Маску подсети можно определить как количество бит в адресе, представляющих номер сети (количество бит со значением "1"). Например, "8-битной маской" называют маску, в которой 8 бит – единичные, а остальные 24 бита – нулевые. 
Маски подсети записываются в формате десятичных чисел с точками, как и IP-адреса. 

Размер сети 
Количество разрядов в номере сети определяет максимальное количество хостов, которые могут находиться в такой сети. Чем больше бит в номере сети, тем меньше бит остается на идентификатор хоста в адресе. 
IP-адрес с идентификатором хоста из всех нулей представляет собой IP-адрес сети (192.168.1.0 с 24-битной маской подсети, например). IP-адрес с идентификатором хоста из всех единиц представляет собой широковещательный адрес данной сети (192.168.1.255 с 24-битной маской подсети, например). 

Формат записи
Поскольку маска всегда является последовательностью единиц слева, дополняемой серией нулей до 32 бит, можно просто указывать количество единиц, а не записывать значение каждого октета. Обычно это записывается как "/" после адреса и количество единичных бит в маске. Например, адрес 192.1.1.0 /25 представляет собой адрес 192.1.1.0 с маской 255.255.255.128.