пятница, 2 марта 2018 г.

Outlook 2016 Moving a data file to another disk

Situation

On a laptop with the first small SSD drive, I want to move the outlook data file to another large disk (to free up more space on the SSD)


Task

Transfer the Outlook 2016 data file to another drive (in general, to another location)


What did not work?

a rough move of the file and the restart of Outlook did not help. Outlook 2016 recreates its file in the old location.


What worked

solution for Windows 10


Creating a symbolic link


Steps:


1. Close Outlook

2. Move the .ost data file (it is usually stored C: \ Users \ (user) \ AppData \ Local \ Microsoft \ Outlook \).

3. Make a symbolic link



mklink "C: \ Users \ (user) \ AppData \ Local \ Microsoft \ Outlook \ (filename) .ost" "D: \ Outlook \ (filename) .ost"



Do not forget to replace

(user) and (filename) to real values



Related links

Moving the ost-file or pst-file of an Outlook.com or IMAP account
(this is about the creation of symbolic links)
https://www.howto-outlook.com/howto/movingostpstoutlookcomimap.htm




Move the ost-file to another disk or folder location
https://www.msoutlook.info/question/463
here it is said that for the Outlook 2016 the file transfer method does not work

Google Cloud Translation API C# code sample

A simple example of implementing the Google Cloud Translation API for C #


Google.Cloud.Translation.V2 library must be installed into the project through the NuGet


public class TranslateServiceGoogle
    {
        public int MaxTextLenght => 4999;

        private readonly string apiKey;

        private TranslationClient _client;
        private TranslationClient Client => _client ?? (_client = TranslationClient.CreateFromApiKey(apiKey));

        public TranslateServiceGoogle(string apiKey)
        {
            this.apiKey = apiKey;
        }        

        public string TranslateText(
            string text,
            string languageFrom,
            string languageTo
            )
        {
            if (string.IsNullOrWhiteSpace(text)) return "";

            CheckTranslatebleText(text);                      

            var res = Client.TranslateText(text, languageTo, languageFrom);

            return res.TranslatedText;
        }

        public string TranslateHtml(
            string text,
            string languageFrom,
            string languageTo
        )
        {
            if (string.IsNullOrWhiteSpace(text))
                return "";

            CheckTranslatebleText(text);
            
            var response = Client.TranslateHtml(text, languageTo, languageFrom);

            return response.TranslatedText;
        }

        public void CheckTranslatebleText(string text)
        {
            if (text.Length > MaxTextLenght)
            {
                throw new ArgumentOutOfRangeException($"Text length exceeds ({text.Length} symbols)!");
            }
        }
    }


суббота, 24 февраля 2018 г.

Google Cloud Translation API пример кода на C#

Простой пример реализации сервиса перводов Google Cloud Translation API на C#

Для работы коду нужно устанвоить в проект через NuGet библиотеку Google.Cloud.Translation.V2


public class TranslateServiceGoogle
    {
        public int MaxTextLenght => 4999;

        private readonly string apiKey;

        private TranslationClient _client;
        private TranslationClient Client => _client ?? (_client = TranslationClient.CreateFromApiKey(apiKey));

        public TranslateServiceGoogle(string apiKey)
        {
            this.apiKey = apiKey;
        }        

        public string TranslateText(
            string text,
            string languageFrom,
            string languageTo
            )
        {
            if (string.IsNullOrWhiteSpace(text)) return "";

            CheckTranslatebleText(text);                      

            var res = Client.TranslateText(text, languageTo, languageFrom);

            return res.TranslatedText;
        }

        public string TranslateHtml(
            string text,
            string languageFrom,
            string languageTo
        )
        {
            if (string.IsNullOrWhiteSpace(text))
                return "";

            CheckTranslatebleText(text);
            
            var response = Client.TranslateHtml(text, languageTo, languageFrom);

            return response.TranslatedText;
        }

        public void CheckTranslatebleText(string text)
        {
            if (text.Length > MaxTextLenght)
            {
                throw new ArgumentOutOfRangeException($"Недопустимый размер текста ({text.Length} символов) в блоке!");
            }
        }
    }


см. также
Сравнение сервисов облачных переводов Microsoft Azure Translator Text API и Google Cloud Translation API

четверг, 15 февраля 2018 г.

Connection to MS SQL Server slows down via WiFi (TP-Link Archer C2, AC 750 router)

Situation

I bought and installed a new TP-Link Archer C2, AC 750 router

Found strange slows down when connecting to a remote MS SQL Server database

When connecting by cable, the connection speed with the database is almost instantaneous (up to 1 second)

Through the wi-fi connection to the base took 35 seconds (although the overall speed of the wi-fay is almost the same as the cable)

With the old D-link dir 300 router, there were no such problems. The laptop did not change. The provider did not change.

I use EMS SQL Manager for SQL for database coneection
https://www.sqlmanager.net/en/products/mssql/manager


What did not help


Switched to different 2.4 and 5 MHz bands
Played with subtle settings WiFi (channel, channel width, Package, WPS) - all useless


What helped


It turned out that it was in the settings for WiFi authorization

in the web interface of the router (usually access through http://192.168.0.1/)
section
Wireless Security

defaults:

Authentication type: WPA2-PSK
Encryption: AES

It was necessary to change the encryption to TKIP

Note: to change the encryption from AES to TKIP it was necessary to disable WPS mode for one of the channels (this is also done via the web interface of the router.) The section is called "WPS")

I want to note the support service TP-Link.
Although the modem is home-use, but I was not left alone with the problem. Manager Vyacheslav Didenko contacted me and we spent more than an hour dealing with the situation. Good job!

Соединение с MS SQL Server тормозит по WiFi (роутер TP-Link Archer C2, AC 750)

Ситуация

Купил и установил дома новый роутер TP-Link Archer C2, AC 750

Обнаружил странные торможения при подключении к удаленной базе данных MS SQL Server

При соединении по кабелю скорость соединения с базой данных практически моментальная (до 1-ой секунды)

Через вай-фай соединение с базой заняло 35 сек (хотя общая скорость по вай-фаю почти такая же как и по кабелю)

Со старым роутером d-link dir 300 таких проблем не было. Ноутбук не менял. Провайдера не менял

С БД коннекчусь через EMS SQL Manager for SQL Server
https://www.sqlmanager.net/en/products/mssql/manager 


Что НЕ помогло


Переключался на разные диапазоны 2,4 и 5 Мгц
Игрался с тонкими настройками WiFi (канал, ширина канала, Пакет, WPS) - все без толку


Что помогло


Оказывается дело было в настройках авторизации WiFi

в веб-интерфейсе роутера (обычно доступ через http://192.168.0.1/)
раздел
Защита беспроводного режима

по умолчанию стояло так

Тип аутентификации: WPA2-PSK
Шифрование: AES

Нужно было изменить шифрование на TKIP

Примечание: чтобы сменить шифрование с AES на TKIP пришлось для одного из каналов отключить режим WPS (это тоже через веб-интерфейс роутера делается. Раздел так и называется "WPS")

Отдельно хочу отметить службу поддержки TP-Link.
Хоть модем и домашний, но меня не бросили один на один с проблемой. Менеджер Вячеслав Диденко связался со сной и мы больше часа разбирались с ситуацией. Зачет однозначно!

пятница, 1 декабря 2017 г.

ASP.NET Ошибка приложения: Заданный аргумент находится вне диапазона допустимых значений. Имя параметра: site

Окружение

Visual Studio 2017, ASP.NET MVC проект

Ошибка


При запуске веб-приложения получил ошибку

Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: site

Трассировка стека:

[ArgumentOutOfRangeException: Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: site]
   System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +280

[HttpException (0x80004005): Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: site]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10042604
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254



Английская версия ошибки
Specified argument was out of the range of valid values.Parameter name: site


Решение

Фактически сделал такие действия


  • переобновил через панель установки приложений IIS Express

  • сбросил через диспетчер задач запущенный процесс IIS Express

После этого приложение заработало нормально

Помогла статья
https://stackoverflow.com/questions/17772216/specified-argument-was-out-of-the-range-of-valid-values-parameter-name-site

четверг, 23 ноября 2017 г.

Сравнение сервисов облачных переводов Microsoft Azure Translator Text API и Google Cloud Translation API

Задача

Обеспечить автоматизированный перевод (с последующей выверкой человеком) контента сайта с русского на украинский.

Варианты решения

Были протестированы облачные платформы
от Microsoft: Microsoft Azure Translator Text API 
от Google: Google Cloud Translation API

По итогом тестирования переводы Microsoft Azure Translator Text API  были значительно хуже чем переводы Google Cloud Translation

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

Примеры

Пара примеров из классики

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

Перевод Microsoft Azure Translator Text API
Всі щасливих сімей подібні, кожен нещасні родини є нещасні на свій лад.

Перевод Google Cloud Translation API
Всі щасливі сім'ї схожі один на одного, кожна нещаслива сім'я нещаслива по-своєму.

Исходная фраза
В конце ноября, в оттепель, часов в девять утра, поезд Петербургско-Варшавской железной дороги на всех парах подходил к Петербургу.

Перевод Microsoft Azure Translator Text API
В кінці листопада, під час відлиги годин о 9 ранку, поїзд Петербург-Варшава залізниці на всіх парах прийшли до Петербурга.

Перевод Google Cloud Translation API
В кінці листопада, у відлигу, годині о дев'ятій ранку, поїзд Петербургско-Варшавської залізниці на всіх парах підходив до Петербургу.

И более практичный пример

Исходная фраза
Программа и время проведения мероприятий, а так же режим сна и питания могут корректироваться по месту в зависимости от погодных условий, длительности мероприятий.

Перевод Microsoft Azure Translator Text API
Програми й час події, а також як спати і харчування може бути скоригована на сайті в залежності від погодних умов, тривалість подій.

Перевод Google Cloud Translation API
Програма і час проведення заходів, а так само режим сну і харчування можуть коригуватися за місцем залежно від погодних умов, тривалості заходів.

Решение 

Было принято использовать  Google Cloud Translation API

Материалы по теме


Google Cloud Translation API
https://cloud.google.com/translate/

Microsoft Translator Text API
http://docs.microsofttranslator.com/text-translate.html

Google Cloud Translation API пример кода на C#
http://dev-doc.blogspot.com/2018/02/google-cloud-translation-api-primer-c-sharp.html