среда, 24 мая 2017 г.

VPN WINAPI | Создание VPN соединения средствами WINAPI

#include <stdio.h>
#include <windows.h>
#include <strsafe.h>

#include <ras.h>
#include <raserror.h>

#include <string.h>
#include <winbase.h>
#include <time.h>
#include <stddef.h>
#include <stdlib.h>
#pragma comment(lib, "rasapi32.lib")

int main(void)
{
HRASCONN hConnection = NULL;
RASDIALPARAMSW RasDialParams;
memset (&RasDialParams, 0, sizeof (RasDialParams));
// Configure the RASDIALPARAMS structure.
RasDialParams.dwSize = sizeof (RasDialParams);
RasDialParams.szPhoneNumber[0] = TEXT('\0');
RasDialParams.szCallbackNumber[0] = TEXT('\0');
wsprintfW(RasDialParams.szEntryName, L"%s", L"test");
wsprintfW(RasDialParams.szUserName, L"%s",  L"test");
wsprintfW(RasDialParams.szPassword, L"%s",  L"test");
wsprintfW (RasDialParams.szDomain, L"%s", L"\0"); //This is optional

воскресенье, 14 мая 2017 г.

MSSQL Сервер база перешла в подозрительное состояние SUSPECT


Выполнить скрипт.

ALTER DATABASE [BD_NAME] SET EMERGENCY
GO
ALTER DATABASE [BD_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
DBCC CHECKDB ('BD_NAME', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE [BD_NAME] SET MULTI_USER
GO

вторник, 21 февраля 2017 г.

Мониторинг вашего сервера на стабильность.

        Иногда требуется получить уведомление если один из серверов перестает быть доступен. Уведомление будет отсылаться на e-mail. Алгоритм работы скрипта который мониторит ваши сервера будем реализовывать на perl. И так у нас есть список серверов. Мы прогибаемся по этому списку раз в 10 минут(список состоит из ip + port) на который можно присоединится с помощью telnet. Если соединится по telnet не удается отправляем письмо на почту, мол такой сервер перестал быть доступен. Первое что требуется это установить perl, далее после того как perl поставлен можно открыть cmd/terminal набрать следующее : 

cpan Net::SMTP::TLS;
cpan Net::SMTP::SSL;
cpan Net::Telnet;

#Собственно сам скрипт.
use strict;
use warnings;
use Net::Telnet;
use 5.010;
use Net::SMTP::TLS;
use Net::SMTP::SSL;
 
#Создать список серверов для проверки.
#Если сервер в течении 10 минут не отвечает, отправить письмо на e-mail, в теме #письма указать сервер который не отвечает.
my $user = 'MyRuMailUser'; //Пользователь
my $pass = 'MyRuMailPassword'; //Пароль от ящика.
my $server     = 'smtp.mail.ru';
my $to         = 'mymonitorserver@gmail.com';
my $from_name  = 'MyRuMailUser@mail.ru';
my $from_email = 'MyRuMailUser@mail.ru';

воскресенье, 15 января 2017 г.

SQLITE регистр для LIKE

SQLITE не учитывает регистр для оператора LIKE для русских символов.
Например у вас в базе есть, некоторое значение "тестовая строка";
Если вы напишите такой код : SELECT * FROM FOO WHERE str LIKE('%Тестовая строка');
результат запроса будет - 0;
Известные решения:

  1. Использовать расширение, которое уже есть стандартно - FTS3. Создание специальных виртуальных таблиц с поддержкой поиска и использование оператора MATCH
  2. Создать в вашей таблице еще один столбец(нормализованный), который будет содержать ту же инфу по которой вам нужно провести поиск, только в верхнем(или нижнем) регистре и делать LIKE по этому столбцу, но результат возвращать по обычному столбцу