?

Log in

AlexWWolf's live journal

Свежие записи

Январь, 1, 2016

2016 Это специальная, вынесенная наверх запись - для того, чтобы можно было в комментах задать мне вопрос на произвольную тему. Или просто чего-нибудь написать. Ну и пусть будет деление по годам.

Июль, 25, 2016

Цитата дня

Поделиться
"Если не начать диалог, то будут появляться законопроекты из ниоткуда. Они рискуют быть немедленно принятыми"

http://tass.ru/obschestvo/1762535

Ой, всё!

Июнь, 10, 2016

Достаточно очевидно, но все же: что будет в результате?

declare @t table (a int, b int)

insert into @t values (4, 5)

update @t set a = a - b, b = b - a

select * from @t

Ответ:
  • a = -1
  • b = 1

Май, 26, 2016

Обнаружил сегодня достаточно неприятную вещь: при использовании в нескольких потоках независимых запросов через HttpWebRequest/HttpWebResponse, они начинают блокировать друг друга. Насколько я понял, это связано с реализацией требований стандартов HTTP/1.x, согласно которым разрешается не более 2 одновременных подключений между парой "клиент-сервер" с использованием протокола HTTP. Подробней можно прочитать в RFC 2616, раздел 8.1.4. Вообще говоря, современные браузеры не соблюдают это ограничение, однако классы HttpWebRequest/HttpWebResponse активно поддерживают лимит на активные соединения (он может быть увеличен, но значение по умолчанию =2). При достижении лимита, последующие запросы зависают в состоянии ожидания. В случае превышения срока таймаута, запросы могут быть закрыты с исключением таймаута.

Небольшой пример для демонстрации проблемы:

using System;
using System.IO;
using System.Net;
using System.Threading;

namespace ConsoleApplication3
{
    class Program
    {
        private static string sBlock = "";

        static void Main(string[] args)
        {
            for(int i = 0; i < 2; i++)
                new Thread(DoRequest).Start(i);

            Console.ReadLine();
        }

        private static void DoRequest(object o)
        {
            try
            {
                lock (sBlock)
                    Console.WriteLine("Started " + (int)o);

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://yandex.ru");
                request.Timeout = 10 * 1000;
                WebResponse response = request.GetResponse();
                Stream s = response.GetResponseStream();
                Thread.CurrentThread.Join(30 * 1000);
                new StreamReader(s).ReadToEnd();
                response.Close();

                lock (sBlock)
                    Console.WriteLine("Completed " + (int)o);
            }
            catch (Exception ex)
            {
                lock (sBlock)
                    Console.WriteLine(ex.ToString());
            }
        }
    }
}


Май, 14, 2016

Недавно наткнулся на такую проблему: при работе с WCF-сервисом, построенным по модели WCF RESTful, и передачей данных в формате XML, часть полей на стороне сервиса оказывалась незаполненной. То есть, клиент отправляет нормально сформированный объект, сериализация на стороне клиента проходит штатно, XML формируется валидный, на стороне сервиса исключений не возникает, но объект данных формируется только частично заполненный. Каждый раз пропускаются одни и те же поля для одного и того же типа объектов; для разных типов объектов пропускается разное количество полей.

Продолжение здесь...Свернуть )

Май, 7, 2016

Скоро лето

Поделиться
Скоро лето
Яблони начинают цвести

Декабрь, 31, 2015

2015 - год быка

Поделиться
 Это специальная, вынесенная наверх запись - для того, чтобы можно было в комментах задать мне вопрос на произвольную тему. Или просто чего-нибудь написать. Ну и пусть будет деление по годам.
Счастья, успехов, и удачи всем в Новом Году!

Декабрь, 10, 2015

38

Поделиться
Поздравляю меня с днем рождения!

UPD: Всем спасибо за поздравления!

жж счетчик - lj counter

Разработано LiveJournal.com