четверг, 20 марта 2014 г.

Установка и настройка web-сервера (Apache/PHP/MySQL/httpd-virtual-host)

Цель: установить на локальный компьютер web-сервер.

Используемое ПО:
1. Apache 2.2;
2. NuSphere PHPEd 5.9 Professional - в состав входит PHP + IDE для разработки сайтов;
3. MySQL Server 5.1;
4. MySQL Front;

Шаг 1. Устанавливаем Apache 2.2 в каталог "C:\webRoot\Apache2.2".

Шаг 2. Устанавливаем PHP, в моем случае это NuSphere PHPEd 5.9 Pro в каталог "C:\webRoot\PhpED".

Шаг 3. Устанавливаем MySQL Server 5.1 в каталог "C:\webRoot\MySQL Server 5.1".

Шаг 4. В самое начало файла "c:\webRoot\Apache2.2\conf\httpd.conf" прописываем строки:
LoadModule php5_module "C:/webRoot/PhpED/php53/php5apache2_2.dll"
AddType application/x-httpd-php .php

и

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
index.html меняем на index.php

Шаг 5. Перезапускаем Apache.

Шаг 6. Копируем в каталог "c:\windows" файлы:
c:\webRoot\PhpED\php53\php.ini
и
c:\webRoot\MySQL Server 5.1\bin\libmySQL.dll

Шаг 7. Перезапускаем Apache.

web-сервер Apache установлен, PHP и MySQL для совместной работы сконфигурированы, теперь настраиваем виртуальные хосты.

Шаг 8. В файл "c:\windows\system32\drivers\etc\hosts" прописываем строки:
127.0.0.1 localhost
127.0.0.1 astra-sv.100ms.local
127.0.0.1 mbdou53.100ms.local
127.0.0.1 astra-blog.local
127.0.0.1 astra-secure.local

Шаг 9. В файле "c:\webRoot\Apache2.2\conf\httpd.conf" снимем комментарий со строки:
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

чтобы получилось

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Шаг 10. Создаем 4 каталога, для хранения файлов соответствующих четырех сайтов:
C:\webRoot\Apache2.2\htdocs\astra-blog.local
C:\webRoot\Apache2.2\htdocs\astra-secure.local
C:\webRoot\Apache2.2\htdocs\astra-sv.100ms.local
C:\webRoot\Apache2.2\htdocs\mbdou53.100ms.local

Шаг 11. В самый конец файла "c:\webRoot\Apache2.2\conf\extra\httpd-vhosts.conf" добавляем описание четырех виртуальных серверов:
...
<VirtualHost *:80>
ServerAdmin astra-sv@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-sv.100ms.local"
ServerName astra-sv.100ms.local
</VirtualHost>

<VirtualHost *:80>
ServerAdmin astra-blog@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-blog.local"
ServerName astra-blog.local
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mbdou53@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/mbdou53.100ms.local"
ServerName mbdou53.100ms.local
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin astra-secure@local
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-secure.local"
ServerName astra-secure.local
</VirtualHost>
...

Шаг 12. Перезапустить Apache.

Шаг 13. Для удобства работы с базами данных MySQL устанавливаем MySQL Front.

пятница, 21 февраля 2014 г.

Установка Oracle x32 на Windows x64

Дистрибутив (файл OracleXE112_Win32.zip) можно взять на официальном сайте корпорации Oracle (требуется регистрация): http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

1. Распаковываем архив и запускаем установщик Oracle XE (DISK1/setup.exe)
2. В ходе установки выбираем директорию для установки Oracle



Внимание!
Под сиcтемой windows с разрядностью 64 бита установщик завершается с ошибкой вида:
«The installer is unable to instantiate the file C:\Users \soarin\AppData\Local\Temp\{E6AD5C75-4961-4B43-870F-1270FB3D4E02}\KEY_XE.reg. The file does not appear to exist.»
Чтоб этого избежать, проделайте следующие шаги (если ОС 32 битная, то выполнять эти шаги под буквами не нужно):

a) Не нажимаем кнопку Next установщика. Отодвинем установщик пока в сторону и откроем в файловом менеджере (например, можно использовать проводник) папку вида

C:\Users\soarin\AppData\Local\Temp\{E6AD5C75-4961-4B43-870F-1270FB3D4E02}\, которая содержит файл OracleMTSRecoveryService.reg. Soarin – в данном случае это имя пользователя в ОС windows, а код в фигурных скобках будет другой.

Можно и с помощью поиска файлов найти эту директорию, указав имя «OracleMTSRecoveryService.reg» и не забыв разрешить поиск в скрытых папках.



б) Сделаем копию файла OracleMTSRecoveryService.reg и переименуем её в «KEY_REG.reg», и вторую копию файла в «KEY_XE.reg»



в) Возвращаемся к установщику Oracle Server и продолжаем процесс инсталляции.

3. Задаём пароль для СУБД (проверяем, что стоит английская языковая раскладка и caps lock отключён!)

4. Жмём кнопку Next и дожидаемся завершения установки.

среда, 19 февраля 2014 г.

Удаление Oracle вручную

Удаление предыдущей установки Oracle.
1. Останавливаем все службы (сервисы), которые начинаются на Oracle
2. Останавливаем службу Distributed Transaction Coordinator (Координатор рапределённых транзакций).
3. Удаляем C:\Program Files\Oracle
4. Удаляем C:\Orant (или др.каталог, куда был установлен оракл ранее)
5. Удаляем в реестре HKCU/Software/Oracle, HKLM/Software/Oracle
6. Удаляем в реестре HKLM/System/ControlSet001/Services/Oracle.......
7. Удаляем в реестре HKLM/System/ControlSet002/Services/Oracle........
8. Удаляем в реестре HKLM/System/CurrentControlSet/Services/Oracle......
9. Перезагружаем компьютер.

C# RichTextBox color text

RichTextBox rtbLog = new RichTextBox();

public void AppendText(string text, Color color)
{
    rtbLog.SelectionStart = rtbLog.TextLength;
    rtbLog.SelectionLength = 0;
    rtbLog.SelectionColor = color;
    rtbLog.AppendText(text);
    rtbLog.SelectionColor = rtbLog.ForeColor;
}
...

AppendText("[" + DateTime.Now.ToShortTimeString() + "]", Color.Red);
AppendText(" ");
AppendText(userid, Color.Green);
AppendText(": ");
AppendText(message, Color.Blue);
AppendText(Environment.NewLine);

пятница, 27 декабря 2013 г.

C# PropsAppReader - чтение файла формата "tag1...\tag1"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

namespace Solution.Framework
{
    class PropsAppReader
    {
        string fileName;
        string[] fileText;
        
        
        public PropsAppReader(string f_fileName)
        {
            this.fileName = f_fileName;
            fileText= File.ReadAllLines(f_fileName);
        }

        public string GetValueByParamName(string paramName)      
        {
            string sPattern = "(?<=<" + paramName + ">)(.*)(?=</" + paramName + ">)";
            string OneString = "";

            foreach (string s in fileText)
                OneString += s;


            return Regex.Match(OneString, sPattern).Value.ToString().Trim();
        }


        public string[] GetAllText()
        {
            return fileText;
        }
    }
}


Использование класса Solution:

...

PropsAppReader scriptManager = new PropsAppReader(file_path);


string val1 = PropsAppReader.GetValueByParamName("tag1-name")

string val2 = PropsAppReader.GetValueByParamName("tag2-name")
...
string valN = PropsAppReader.GetValueByParamName("tagN-name")
...


Структура файла:

<tag1-name>Tag1_value</tag1-name>
<tag2-name>Tag2_value</tag2-name>
...
<tagN-name>TagN_value</tagN-name>

вторник, 10 декабря 2013 г.

Автоматический backup базы данных (*.bak) MS SQL Server 2008


sqlcmd -S DECLSERVER\SQLGTD -E -Q "declare @s varchar(255) set @s='E:\backup\GTD_' + convert(varchar(1), datepart(dw, getdate())) + '.bak' backup database GTD to disk = @s with init, noformat, skip, nounload"

sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD,

где:

  • -S — задает имя сервера, server[\instance_name]
  • DECLSERVER\SQLGTD — имя сервера/имя экземпляра, на котором крутится база;
  • -E — использует для соединения с SQL server вместо имени пользователя и пароля доверительное соединение;
  • -Q " cmdlinequery " — при запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше;
  • declare — объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s — это папка (диск) хранения бэкапов;
  • varchar(n) — задает тип переменной @s как строковый с длинной строки n, в примере 255 символов;
  • set — задает значение переменной @s,в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла, где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длиной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak. На выходе получим файл с именем GTD_номер дня недели.bak;
  • backup — создает бэкап;
  • database — указывает на создание бэкапа всей базы;
  • GTD — в нашем примере имя базы на SQLсервере;
  • to disk — указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла;
  • with init, noformat, skip, nounload — указывает на то, что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели, перезаписываемые по кругу.

Именно для моего случая строка сценария будет иметь следующий вид:
sqlcmd -S SR-P2K-ORE -E -Q "declare @s varchar(255) set @s='D:\askue-backup\sr-p2k-ore\Piramida2000new_' + replace(replace(replace(CONVERT(VARCHAR(19), GETDATE(), 120), '-', '_'), ':', '_'), ' ', '__') + '.bak' backup database Piramida2000new to disk = @s with init, noformat, skip, nounload"

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

C# DataGridView select row by right mouse button click



private void dgv_MouseDown(object sender, MouseEventArgs e)
{
    DataGridView.HitTestInfo Hti;

    if (e.Button == MouseButtons.Right)
    {
        Hti = dgv.HitTest(e.X, e.Y);

        if (Hti.Type == DataGridViewHitTestType.Cell)
        {
            if (!((DataGridViewRow)(dgv.Rows[Hti.RowIndex])).Selected)
            {
                dgv.ClearSelection();
                ((DataGridViewRow)dgv.Rows[Hti.RowIndex]).Selected = true;
            }
        }
    }
}

Nginx + Let's Crypt

Шаг 1. Установка Certbot # apt-get install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing...