20 сентября 2012 г.

 Настройка работы Tortoise по протоколу SSH через PuTTY.

1. Установка PuTTY

Первым шагом необходимо скачать и установить программу PuTTY.
Скачиваем с оф.сайта: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html инсталятор для Windows из секции A Windows installer for everything except PuTTYtel.


Запускаем скачанный файл putty-0.62-installer.exe. Первым делом нас приветствуют и рекомендуют перед установкой закрыть все запущенные приложения и после этого нажать Next>  (рис. 1).

Рисунок 1

  На следующем шаге возможно выбрать путь установки PuTTY выбрав Browse...После выбора каталога необходимо нажать Next> (рис. 2).
Рисунок 2

На следующем шаге инсталятор предлагает создать ярлыки для устанавливаемых программ. Имеется возможность выбрать папку куда будут сохранены ярлыки, а также возможность отключить создание ярлыков в меню ПУСК (Don't create a Start Menu folder) (рис. 3). После настройки нажимаем Next>.

Рисунок 3

На следующем шаге предлагается настроить (рис. 4)
Ярлыки:
Create a desctop icon for PuTYY - создать ярлык для PuTTY на рабочем столе.
For all users - для всех пользователей
For the current user only - только для текущего пользователя
Create a Quick Launch icon for PuTTY (current user only) - создать ярлык для PuTTY в панели быстрого запуска (только для текущего пользователя)

А так же:
Associate .PPK file(PuTTY Private Key) with Pageant and PuTTYgen - ассоциировать расширение файлов .PPK(PuTTY приватный ключ) с программой PuTTYgen.
Рисунок 4

На следующем шаге выводится сводная информация о сделанных ранее настройках(рис.5). Проверяем что все настроено как иы хотели и нажимаем Install для запуска процесса инсталяции.

Рисунок 5

После установки появится экран с сообщением об удачном завершении процесса. Для окончания установки следует нажать Finish (рис. 6).

Рисунок 6

После всего проделанного у вас в меню ПУСК->Все программы должны создаться (если вы не выключили) следующие ярлыки (рис. 7).

Рисунок 7

2. Создание ключей с помощью PyTTYgen.

Для генерации ключей запускаем программу PyTTYgen (рис. 7). После запуска появится главное окно приложения PyTTYgen (рис. 8).
Рисунок 8
В поле Parameters (параметры) указываем какой тип ключа необходимо сгенерировать. Данную информацию уточните у своего системного администратора. Если вы и есть администратор, то решайте сами какой тип вы будете использовать на сервере. Для генерации нажимаем кнопку Generate.


Окно примет вид изображенный на рисунке 9. Для генерации необходимо в произвольном порядке передвигать курсор мыши в области под полосой прогресса.

Рисунок 9

После генерации в верхней части окна будет отображен открытый ключ для сервера (рис. 10). 
Рисунок 10

Для дополнительной защиты приватного ключа можно ввести фразу пароль в поле Key passphrase и подтвердить в Confirm passphrase. (PS: если вы не установили ключевую фразу сразу, то это можно сделать позднее загрузив свой ключ с помощью кнопки Load и установив ключевую фразу сохранить новый ключ. Публичный ключ в замене не нуждается). Теперь сохраняем наши ключи:

Save public key - сохранить публичный ключ (рис. 11)
Рисунок 11

Save private key - сохранить приватный ключ (рис. 12)
Рисунок 12

После всего проделанного мы получили два ключа (рис. 13)
Рисунок 13

Теперь приватный ключ прячьте и не кому не показывайте, а публичный отдаем администратору для размещения на сервере.


3. Настройка Pageant для работы с ключами.

Теперь необхдимо настроить PuTTy Pageant (рис. 14)
Рисунок 14

В правой части клавного окна выбираем категорию Session (рис. 15)
В поле Host Name (or IP address) - Имя хоста(или IP адресс) вводим адрес нашего SVN-сервера.
В поле Port (порт) вводим порт SSH.
Теперь самое главное! в поле Saved Sessions пишем имя соединения и запоминаем его, оно нам еще пригодится!
Рисунок 15

Теперь необходимо установить наш приватный ключ (рис. 16). Для этого переходим Connection->SSH->Auth
В секции Authentication parameters в поле Private key file for authentication необходимо вставить путь к вашему приватному ключу или с помощью кнопки Browse можно выбрать располжение ключа.
Рисунок 16

Для автоматического входа на сервер от имени заранее известного пользователя необходимо перейти в Connection->Data и в поле Auto-login username вписать имя пользователя (рис. 17).
Рисунок 17

Теперь сохраним нашу сессию. Для этого переходим в Session и нажимаем Save (рис.18). В нижнем списке должно отразиться имя нашей новой сессии.
Рисунок 18

4. Выкачиваем репозиторий с помощью SVN Tortiose

В подготовленном заранее каталоге нажимаем правую кнопку мыши и выбираем SVN Checkout...(рис. 19).
Рисунок 19

Теперь в поле URL of repository (URL адрес репозитория) пишем строку формата svn+ssh://имя_нашего_соединения_из_PuTTY/путь_в_репозитории и нажимаем OK (рис. 20)
Рисунок 20

Наблюдаем процесс скачивания (рис. 21).
Рисунок 21
Настройка завершена!!!

3 сентября 2012 г.

Форматированный вывод даты в JavaScript

Форматированный вывод даты в JavaScript.

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

В функции используются следующие ключи (на примере даты 1 февраля 2012г 10:5:23:233):

yyyy - полный год, пр.: 2012
yy - последние цифры года, пр.: 12
MM - номер месяца, пр.: 02
dddd - полное название дня недели, пр.: Среда
ddd - сокращенное название дня недели, пр.: Ср.
dd - число, пр.: 01
hh - часы, пр.: 10
mm - минуты, пр.: 05
ss - секунды, пр.: 23
zz - миллисекунды, пр.: 233

Пример использования:


getDateTimeToString("dd/MM/yy г. Время:hh:mm:ss");
getDateTimeToString("dd-MM-yyyy hh:mm");
getDateTimeToString("Год: yyyy, День недели: dddd");

Исходный код функции:

/**
* Генерирует дату и время в заданном формате
* 12:59:52 03.09.2012
* @author Ильин Олег
* @param {String} strFormat формат-строка
* @returns {String} отформатированная дата
*/

function getDateTimeToString(strFormat){
var resultDateTime = strFormat;
var d = new Date();

var daysLong = ["Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье"];
var daysShort = ["Пн.","Вт.","Ср.","Чт.","Пт.","Сб.","Вс."];
var yearRegExp = d.getFullYear();
var monthRegExp = (String(d.getMonth()+1).length ==1) ? ("0"+(d.getMonth()+1)) : (d.getMonth()+1);
var dayRegExp = (d.getDate().toString().length ==1) ? ("0"+d.getDate()) : d.getDate();
var dayNameRegExp = d.getDay();
var hoursRegExp = (d.getHours().toString().length ==1) ? ("0"+d.getHours()) : d.getHours();
var minuteRegExp = (d.getMinutes().toString().length ==1) ? ("0"+d.getMinutes()) : d.getMinutes();
var secondsRegExp = (d.getSeconds().toString().length ==1) ? ("0"+d.getSeconds()) : d.getSeconds();
var milisecondsRegExp = (d.getMilliseconds().toString().length ==1) ? ("00"+d.getMilliseconds()) : ((d.getMilliseconds().toString().length ==2) ? ("0"+d.getMilliseconds()) : d.getMilliseconds());

resultDateTime = resultDateTime.replace(new RegExp('yyyy', 'g'), yearRegExp);
resultDateTime = resultDateTime.replace(new RegExp('yy', 'g'), String(yearRegExp).slice(-2));
resultDateTime = resultDateTime.replace(new RegExp('MM', 'g'), monthRegExp);
resultDateTime = resultDateTime.replace(new RegExp('dddd', 'g'), daysLong[dayNameRegExp-1]);
resultDateTime = resultDateTime.replace(new RegExp('ddd', 'g'), daysShort[dayNameRegExp-1]);
resultDateTime = resultDateTime.replace(new RegExp('dd', 'g'), dayRegExp);
resultDateTime = resultDateTime.replace(new RegExp('hh', 'g'), hoursRegExp);
resultDateTime = resultDateTime.replace(new RegExp('mm', 'g'), minuteRegExp);
resultDateTime = resultDateTime.replace(new RegExp('ss', 'g'), secondsRegExp);
resultDateTime = resultDateTime.replace(new RegExp('zz', 'g'), milisecondsRegExp);

return resultDateTime+"";
};