Thoughts KPOH's

24.05.2011

Подготовка у установке Microsoft SharePoint 2010 (Prerequisite) для Project Server

Как я понимаю существует не один способ развернуть SharePoint, но расскажу о том с чем довелось столкнуться мне. Писать инструкцию непосредственно по развертыванию SharePoint для Project не вижу смысла, потому что общий случай хорошо описан на сайте технета. Больше всего времени у меня отнял поиск недостающих компонентов, которые необходимы для начала установки.

Поэтому далее по пунктам:

1. Роль сервера приложений, роль веб-сервера (IIS): настраивается установщиком автоматически.

2. Собственный клиент Microsoft SQL Server 2008: установочный пакет можно найти на странице: http://www.microsoft.com/downloads/ru-ru/details.aspx?FamilyId=228de03f-3b5a-428a-923f-58a033d316e1&displaylang=ru. Обратите внимание на тип процессора, для которого предназначен клиент перед началом скачивания.

3. Исправление для Microsoft Windows (KB976462): установочный пакет можно найти на странице http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=23806. Обратите внимание на тип процессора, для которого предназначен клиент перед началом скачивания. Возможно что данное обновление уже было установлено на сервер – в этом случае повторно устанавливать его не нужно.

4. Windows Identity Foundation (KB974405): установочный пакет можно найти на странице http://www.microsoft.com/downloads/en/details.aspx?FamilyID=eb9c345f-e830-40b8-a5fe-ae7a864c4d76. Обратите внимание на тип процессора для которого предназначен клиент перед началом скачивания.

5. Среда выполнения Microsoft Sync Framework 1.0: установочный пакет можно найти на странице http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6. Обратите внимание на тип процессора и язык до начала скачивания.

6. Элементы управления Microsoft Chart для Microsoft .NET Framework 3.5: установочный пакет можно найти на странице http://www.microsoft.com/downloads/ru-ru/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c.

7. Microsoft Filter Pack 2.0: установочный пакет можно найти на странице http://www.microsoft.com/downloads/ru-ru/details.aspx?familyid=60c92a37-719c-4077-b5c6-cac34f4227cc&displaylang=ru.

8. Службы аналитики Microsoft SQL Server 2008 ADOMD.NET: установочный пакет можно найти на странице http://www.microsoft.com/downloads/ru-ru/details.aspx?FamilyID=1B2BD555-CB5B-47B9-88C7-3F89F3B43779 (SQLSERVER2008_ASADOMD10.msi).

9. Microsoft Server Speech Platform Runtime (Не обязательный компонент): установочный пакет можно найти на странице http://www.microsoft.com/downloads/en/details.aspx?FamilyID=674356c4-e742-4855-b3cc-fc4d5522c449. Обратите внимание на тип процессора для которого предназначено ПО до начала скачивания.

10. Microsoft Server Speech Recognition Language - TELE(en-US, Не обязательный компонент),

11. Microsoft Server Speech Recognition Language - TELE(ru-RU, Не обязательный компонент): установочные пакеты для пунктов 10 и 11 можно найти на странице http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=e16641db-b20c-4bb5-ab22-f382eb4f22f3.

Надстройка служб отчетов SQL 2008 R2 для SharePoint 2010: установочный пакет можно найти на странице http://www.microsoft.com/downloads/en/details.aspx?FamilyID=200fd7b5-db7c-4b8c-a7dc-5efee6e19005&displaylang=en. Обратите внимание на тип процессора для которого предназначена надстройка до начала скачивания.

18.02.2011

Функциональный подход к разработке парсера на языке C#

Недавно отправил тезисы на конференцию, думаю стоит опубликовать их и здесь.

УДК 004.9, 004.02

ФУНКЦИОНАЛЬНЫЙ ПОДХОД К РАЗРАБОТКЕ ПАРСЕРА НА ЯЗЫКЕ C#

Автор: Д.А. Пелевин, Тюменский Государственный Нефтегазовый Университет

Научный руководитель: к.ф-м.н А.О. Ярославов, группа ИТ-Компаний Арсенал+

По иерархии Хомского, грамматики делятся на 4 типа, каждый последующий является более ограниченным подмножеством предыдущего (но в тоже время легче поддающегося анализу, таблица 1).

Таблица 1 – Иерархия грамматик по Хомскому.

 

Грамматика

Язык

Необходимый и достаточный автомат

Тип-0

Неограниченная

Рекурсивно перечислимый

Рекурсивный

Машина Тьюринга

Решатель

Тип-1

Контекстная

Индексированная

Контекстные

Индексированные

Линейно-ограниченные

Встроенная магазинная

Тип-2

Контекстно-свободная

Детерминированная КС

Наблюдаемая магазинная

Контекстно-свободные

Детерминированные КС

Наблюдаемо магазинные

Не/детерминировано магазинный

Наблюдаемо магазинный

Тип-3

Регулярная

Регулярные

Конечный автомат

Исторически сложилось, что фактически все существующие грамматики были разработаны с учетом отсутствия больших вычислительных мощностей и сводятся к автоматам. Создание таких автоматов сложно и требует высокой квалификации, тщательного тестирования. Модернизация таких алгоритмов требует повторного полного тестирования всего автомата. Кроме того с ростом и развитием технологий требуется портирование старых алгоритмов на новые платформы.

Проблема написания конечных автоматов была решена посредством создания специализированных программ генераторов синтаксических анализаторов (Yacc, Bizon, ANTLR и др.). В некоторых случаях требуется также наличие лексического анализатора, поэтому используются совместно с генераторами лексических анализаторов. Данные генераторы на входе получают грамматику, а на выходе выдают программный код-парсер, который потом компилируется.

Преимуществами описанных генераторов является использование языков описания грамматик (Lada, PEG, ppeg, Frisby и др.), использование быстрых автоматов. Недостатками же данных генераторов являются:

- сложность внесения изменений в генерируемый код;

- сложность управления оптимальной кодогенерацией;

- неприменимость при создании динамических парсеров.

Целью исследования является поиск удобных подходов к решению практических задач синтаксического анализа.

При написании программ на языках типа C++, Java и др., чаще всего используется императивный подход, который, главным образом, заключается в том, что оперирует переменными, структурами, массивами, состоянием памяти компьютера, посредством алгоритма, т.е. посредством последовательности конкретных команд.

Многие алгоритмы могут быть более эффективно реализованы при помощи чистых функций. В первую очередь это относится к сортировке и поиску. Некоторые задачи, как например задача перевода одного формализованного языка на другой или задача разбора синтаксических конструкций, могут быть решены только при использовании методов функционального программирования.

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

Особенностями функционального подхода является:

- отсутствие явно выраженной последовательности действий;

- отсутствие глобальных переменных, которые вы можете свободно менять в любой функции;

- отсутствие аргументов, передаваемых по ссылке;

- функция это не адрес на некий блок кода, а полноценный объект;

- функция может оперировать только своими аргументами и только в режиме чтения;

- функции не разрешается вызывать внутри себя какие-либо функции, которые могут изменить внешние объекты (массивы, классы, структуры, глобальные переменные, объекты ядра ОС);

- нет возможности напрямую использовать указатели и адресную арифметику.

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

В итоге, очевидно, что имеется ряд серьезных ограничений, однако в этом есть огромные преимущества. Главное преимущество в том, что функции при таких ограничениях превращаются в самодостаточные детерминированные сущности, которые не зависят от состояния внешней среды. Другими словами, нет такой вероятности и/или внешних и внутренних обстоятельств, чтобы для некоторой функции F, когда-либо изменилось истинность выражения F(A) == B, где A – некоторое конкретное значение аргумента; B – конкретное значение результата. Такое качество называют отсутствием побочных эффектов.

А это значит, можно свободно оперировать функциями:

- вызывать в любой последовательности (распараллеливание);

- кэшировать результаты вычислений (меморизация);

- как угодно комбинировать функции, т.е. динамически порождать из одних функций другие.

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

Комбинатор - это функция, принимающая в качестве аргументов другие функции и возвращающая функцию, которая является комбинацией аргументов по какому-то определённому правилу.

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

Если представить любой парсер как функцию, которая принимает на вход текст, а на выходе возвращает результаты анализа в некоторой унифицированной форме, то можно будет, с помощью комбинаторов, делать из простых парсеров более сложные (комплексные).

Следует так же понимать, что при программировании парсера порядком вызова комбинаторов мы определяем ещё и грамматику парсера.

Комбинаторный подход позволяет пользоваться ранее написанными парсерами любой природы. Внутри лямбда функций можно использовать, в том числе, и императивные функции – это отступление от ФП, но при определенных условиях допустимое. К примеру, можно использовать регулярные выражения. Таким образом, можно использовать наиболее подходящий парсер в каждом конкретном случае, повторно использовать ранее разработанный код.

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

Большие перспективы у такой методики анализа текста в динамическом программирование (т.к. возможны интерпретация и компиляция на лету). Как следствие, в генетических адаптивных алгоритмах; в адаптивных алгоритмах обучения нейронных сетей.

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

17.01.2011

Чего нет в блоге - того не существует

Взято из Блога Петра Диденко

Как просто понять, зачем продолжать вести блог, а не бросить его, например, в пользу твиттера или Facebook? И вообще, зачем нужны блоги? Набрёл в этой связи на интересное обсуждение, откуда "достал" несколько интересных поинтов.

1. В блог надо писать, когда у вас есть что-то "большое". Самые популярные записи в блогах сегодня отличаются размером более 1600 слов. Лично я пытаюсь в своём твиттере выражать в 140 символах мысли любой сложности ;-) Но очевидно, что это скорее такой спорт или шутка. "Большие" идеи очень редко умещаются в 140 символов, и не надо их насиловать.

2. Постинги в блоге чаще, чем твиты, "вырастают" во что-то большее, чем было задумано при их написании. Это значит, что вокруг хороших тем в блогах случаются серьезные же обсуждения, которые многое добавляют, заставляют смотреть на те же вещи иначе, развивают идею.

3. Блоги ближе к новостным сайтам или газетам, чем к твиттеру, потому у каждого материала есть уникальный постоянный адрес, где тексты живут, обсуждаются, где рождаются новые идей и дополнения и так далее. У твитов это не так выражено, и часть дополнительного смысла теряется, если он есть.

4. С одной стороны, Твиттер в силу формата может претендовать на место с возможностями наиболее сильного самовыражения, но при этом на сегодня нет возможности взять и "достать" все твиты юзера через API - доступны только 3200 штук. Самовыражение без возможности свободного доступа к его плодам? Хм..

5. Иногда последовательное изложение и развитие идеи в одном или даже в нескольких блогах в формате "ответов" или публичной переписки блоггеров позволяет развить идею и сделать важное "открытие", которое не состоялось бы, если бы мы не пользовались всеми перечисленными выше преимуществами природы блогов.

6. Твиттер же представляет собой такой формат, где длинные разговоры невозможны и мысли теряются, не живут условно "вечно". Твиты - "одноразовые" мыслишки, которые, возможно, и не прочитают - мало кто читает все твиты всех людей, за которыми следит в твиттере (я - читаю ;-)

7. Твиттер - уникальное место, где нет количества "непрочитанных" сообщений, так как это не требуется. При личной встрече тебя не осудят, если в твиттере собеседника ты что-то пропустил.

В общем, с текущим представлением о социальных сетях и без значительных изменений в отношении к ним, если вы хотите донести что-то серьезное до тех, кто интересуется вашим мнением - пишите это в блог.

Чего нет в блоге - того не существует.

17.12.2010

Руками не трогать

Видели, как зачастую ведут себя маленькие дети? Им нужно дотронуться до всего нового и неизвестного, пощупать все своими руками, чтобы понять, как дальше общаться с тем, что они встретили. Взрослому же человеку вести себя подобным образом не принято, но, порой, это бывает так интересно!

Представьте себе, приходите Вы в музей или огромную галерею, зная, что Вам нужна какая-то конкретная экспозиция. А как к ней пройти? Вы оборачиваетесь в поисках бумажной карты, в которой отмечены все экспозиции или милой девушки возле входа, которую каждый посетитель мучает вопросами. А вместо этого Вам попадается на глаза с виду обычный, но на деле скрывающий в себе огромное количество секретов, стол. При первом контакте уже начинается Ваше путешествие по новому миру. Вы, стоя на месте, можете просматривать экспозиции, фотографии красивейших картин или музейных предметов которые очень редко показывают публике вживую. Каждый слайд Вы своими руками можете увеличивать, уменьшать и вращать, рассматривая каждую мелкую деталь, которую могли бы и не заметить, наблюдая за экспонатом из-за стекла или окинув взглядом, проходя мимо. Если Вы все ещё помните о том, зачем Вы обратились к столу, можно открыть карту. Она будет такой же интерактивной, как и картины, которые Вы только что посмотрели. На карте можно выбрать определенные категории объектов – залы с похожими экспозициями (к примеру, все экспозиции, относящиеся к 18 веку), наличие определенный предметов (например, все места, где есть музейные экспонаты, принадлежащие египетским фараонам), почитать аннотации к каждому залу, да, и просто воспользоваться поиском нужного Вам экспоната или картины. На любой Ваш вопрос найдется ответ – достаточно лишь прикосновения. Захватывает, не правда ли? И теперь, узнав о структуре музея или галереи, можно следовать к тем экспозициям, которые Вы запланировали посмотреть, воспользовавшись картой и ее подсказками.

Что же это за «волшебный» стол? Такая технология называется мультитач (multitouch) или по другому - сенсорный экран, которая уже несколько лет используется многими производителями телефонов, а сейчас вышла на новый рубеж – производство таких вот «столов» для удобства посетителей отелей и ресторанов, крупных публичных библиотек, аэропортов, музеев, многие из которых уже используют данную технологию и довольно успешно.

В октябре 2009 года сеть отелей Sheraton установила в 7 отелях в общей сложности 40 машин. Каков же итог? Эти компьютеры практически никогда не бывают свободны, посетителям просто очень нравиться работать с мультитач экранами – их приятно трогать, они выдают нужную информацию, не устают и не отказывают. Один из таких компьютеров был размещен в холле отеля Шератон Бостон. На протяжении шести месяцев он был постоянно занят: гости и посетители использовали устройство для проигрывания музыки, поиска ресторанов, просмотра карт местности и даже игры в шашки.

Возможности и области применения мультитач столов ограниченны разве что фантазией. К примеру, можно использовать стол для демонстрации деталей автомобилей, которые пользователь не сможет увидеть невооруженным взглядом, или моделей которые ещё только будут выпущены. В ресторане или баре с помощью такой системы можно организовать бронирование столиков, оформление заказов – тогда не нужно будет ждать официанта, а если рядом установить платежный терминал, то можно будет и оплачивать заказы к примеру с помощью пластиковых карт. Музыкальный прилавок – приходит человек, садиться в удобное креслице и прослушивает музыку, выбирает интересные ему композиции и нажатием пальца отправляет песни к себе в плеер, а владельцу киоска деньги.

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

Перспективны и возможности использования мультитач устройств в сфере образования. Можно, к примеру, сделать класс, в котором они будут установлены вместо парт и будут представлять из себя яркий разноцветный стол с сенсорной поверхностью, сидя за которым, ученики могут одновременно выполнять традиционные задания и взаимодействовать с цифровым контентом. Думаю, было бы очень интересно в таком классе проводить опасные химические опыты! Главное, что смоделировать поведение химической реакции довольно просто, и, даже если ученик ошибется и сделает что-то не так, он не сможет пролить на себя едкую жидкость, запачкаться или пораниться. К новинкам также относятся и мультитач-доски. Например, учитель вначале может представить тему на интерактивной доске, а потом попросить учеников проработать ее в небольших группах за столом или индивидуально. Например, уроки математики можно сделать интереснее: «пишем» на такой «доске» примеры и пусть ученик их решает и подставляет ответы или даже интереснее – пишет их собственной рукой прямо на экране и тут же узнает правильно ли он решил или нет. Работа за столом отличается ориентированностью на индивидуальные потребности ученика, когда он сам может одновременно выделять или передвигать объекты, рисовать или писать на экране, и при этом взаимодействовать с остальными учениками, отвечая на общие поставленные вопросы. Мультитач стол позволяет простыми касаниями рук ответить на тесты, окунуться в мир искусства, программное обеспечение позволяет загрузить в стол все учебные программы утвержденные министерством образования, познакомится с интернетом, в общем, все что нужно динамично развивающемуся поколению.

Последний наш проект с использованием мультитач столов – Информационные киоски Тюменской областной научной библиотеки - занял около 2.5 месяцев работы. Эти киоски теперь умеют работать с электронными документами, изображениями и картами. Очень интересно было наблюдать за посетителями в моменты отладки приложения. Только представьте себе, приходит пара веселых, витающих где-то в своих идеях программистов, устанавливают новую версию приложения на мультитач стол чтобы её протестировать, а неподалеку оказываются посетители. Программистов буквально вытесняют из-за стола и тут же начинаются вздохи восхищения: «как интересно - можно листать книгу, нарисованную на экране, просто потянув пальцем за уголок страницы» или «можно открыть несколько разных изображений и рассматривать их одновременно», благо размер стола позволяет – длина стола 113 см, ширина 91 и одновременно можно обрабатывать до 30 прикосновений! Управление всем контентом информационного киоска происходит централизованно, т.к. стол подключен к локальной сети, а при желании можно подключить его и к интернет.

Начинки столов тоже хороши - каждый киоск имеет процессор 2.4 Ghz Intel Core 2 Dual, 1 Gb двухканальной оперативной памяти DDR2, жесткий диск на 250 Gb, видеокарту ATI HD4850. Разрешение экрана такого стола WXGA 1280 x 800, а потребляемая мощность около 500-600 W. Что по характеристикам очень близко к обычному персональному компьютеру.

В ближайших планах сделать ещё один такой мультитач-стол, на этот раз для детской комнаты Тюменской областной научной библиотеки. Конечно, детям будет не так интересно читать книжки, да и карты Европы изучать им наверное рановато, но возможность смотреть картины, слушать музыку и самое главное – игры, совершенно разнообразные: пятнашки, пазлы, квесты и т.п. наверняка привлекут к обучению детей всех возрастов.

Проекты мультитач устройств в большинстве своем индивидуальны и уникальны. Ввиду новизны самой идеи, время которое может понадобиться на подготовку решения, варьируется от пары недель до 2-3 месяцев – в зависимости от сложности задумки. К примеру, если Вы просто хотите произвести впечатление на друзей - можно купить бильярд с мультитач столом. Шары катаются, разгоняя под собой воду, которую практически не отличить от настоящей, а под водой может быть какое-нибудь интересное изображение – стоить данное удовольствие будет всего лишь 80 000$! В общем, для того чтобы похвастать перед друзьями - олигархами самое-то.

Надеюсь, краткий обзор такого замечательного устройства как мультитач стол заинтересовал Вас. Его возможности для бизнеса, обучения и развлечений безграничны. Теперь достаточно лишь прикоснуться, чтобы попасть в мир литературы, музыки, искусства, далеких стран и новых впечатлений! Пришло время, когда наша фантазия и возможности вместе принесут удивительные результаты!

Скачать журнал http://itpartner.arsplus.ru/itp4-web.pdf

25.08.2010

ПО Azbuka от Арсенал+

Буквально пару недель назад была выпущена первая релизная версия программного обеспечения Azbuka. Данное ПО предназначено для удобного хранения оцифрованного контента книг и поддерживает возможность синхронизации с ИРБИС.

В рамках проекта по реконструкции Тюменской областной научной библиотеке с помощью  ПО Azbuka будет выполнять управление цифровым контентом, который в последствии будет доступен  из CRM, и читатели смогут работать с ним через АРМ расположенные в читальных залах.

image – это полноценная клиент-серверная система учёта библиографических описаний и отсканированных документов (книг) как для малых, так и для крупных библиотек.

  • Простая – масштабируемая архитектура, позволяющая легко развёртываться как на домашнем компьютере, так и использовать мощь клиент-серверной технологии;
  • Использование самых современных технологий, которые позволят легко сопровождать систему в течение продолжительного периода;
  • Поддержка современных библиотечных международных стандартов;
  • Эргономичный и простой в освоении интерфейс;
  • Богатые возможности описания и всесторонней классификации ресурсов;
  • Оперативный доступ к информации за счёт расширенных поисковых возможностей.

Полноценный редактор библиографических записей в формате Dublin Core

 image

  • Интерактивный контроль ввода данных;
  • Защита от опечаток и синтаксических ошибок;
  • Единая форма для ввода данных;
  • Поддержка авторитетных справочников;

 

Последовательный поиск и фильтрация библиографических записей

image

  • Фильтрация по типам издания (многотомники, периодика);
  • Поиск по кодам ГРНТИ, УДК и т.д.;
  • Поиск по дате создания, изменения записи;
  • Поиск по точному совпадению части фразы (слова).

Классификация и поиск записей по иерархическим справочникамimage

 

  • Универсальная десятичная классификация;
  • Рубрикатор научно-технической информации;
  • Государственный классификатор информационных ресурсов;
  • Классификатор ВАК;
  • Классификация по аудитории.

Работа с ассоциированными документами, картинками, сканами

image

  • Загрузка объёмных файлов на сервер одним пакетом;
  • Синхронизация совместного доступа к файлам;
  • Удалённый просмотр документов без предварительного скачивания;

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

image

  • Поиск по всем полям библиографической записи;
  • Поиск кодов;
  • Поддержка сложносоставных запросов;
  • Поддержка релевантности;

Импорт библиографических записей

image

  • Поддержка стандартных форматов RUSMARC, UNIMARK;
  • Поддержка модификации RUSMARC для IRBIS;
  • Поддержка ISO-формата;
  • Поддержка пакетной загрузки многотомников и периодических изданий.

Архитектура приложения

image

Взаимодействие АРМ только через сетевой сервис позволяет:

  • осуществлять масштабирование до уровня распределённой системы;
  • ориентировать версии оконных приложений для различного уровня потребителей;
  • осуществлять независимое обновление программного обеспечения.

Демонстрации:

Установка

Импорт библиографических данных

Поиск и работа с файлами

http://www.arsplus.ru

15.07.2010

Как не надо делать ScreenCast

Недавно коллега по работе писал Screen Cast по разработанному и допиливаемому в данный момент продукту. Перед записью он благоразумно не продумал сценарий скрин каста и немного поправил код. Вот что вышло:

 

22.04.2010

Как определить что Control в режиме дизайна - IsDesignMode

  1. protected static bool IsDesignMode(Control control)
  2. {
  3.     PropertyInfo designModeProperty = typeof(Component).
  4.      GetProperty("DesignMode", BindingFlags.Instance | BindingFlags.NonPublic);
  5.     while (designModeProperty != null && control != null)
  6.     {
  7.         if ((bool)designModeProperty.GetValue(control, null))
  8.         {
  9.             return true;
  10.         }
  11.         control = (control.Parent as Control);
  12.     }
  13.     return false;
  14. }
* This source code was highlighted with Source Code Highlighter.

С удивлением обнаружил что этот код работает. Кто-нибудь сможет объяснить… КАК?

typeof(Component) ???

 

____

Варианты ответов:

Один из родительских контролов унаследован от класса Component. Однако это работает только в режиме дизайна и только.
Дело в том, что корневым родителем у WPF контрола является окно редактора, которое унаследовано от Component. И в будущих версиях студии эта фишка может не работать, например в VS10 скорее всего работать не будет ибо там всё визуальное дерево построено на WPF и старых компонентных блоков там может не быть.

Другой вариант:

просто у какого-то из контролов есть такое же свойство, как у компонента - IsDesignMode. причем оно не public, т.к родитель контрола не может быть унаследован тогда от компонента, иначе он не будет контролом и не сможет привести типы (control = (control.Parent as Control);

Ещё один вариант определить что мы в режиме дизайна, и судя по всему он правильный -
System.ComponentModel.DesignerProperties.GetIsInDesignMode(this);

Возвращает значение вложенного свойства IsInDesignMode для заданного элемента UIElement.

28.12.2009

Почему я не считаю Маркетинговый анализ показателем для принятия решения на будущие?

Банально, но сначала разберем. Что же такое маркетинговый анализ как таковой? Для начала МО – это сбор информации о ТЕКУЩЕМ состоянии рынка, отношении и состоянии потребителей, спросе и предложении, уровне конкуренции и т.п.

1. Для того чтобы успешно работать на каком-либо рынке необходимо максимально приближаться к клиенту, его потребностям и желаниям. Любое исследования рынка, а тем более если мы берем в расклад что мы не готовы тратить слишком много ресурсов на исследование – это создание некой буферной зоны между Клиентами и Продавцами. Типичный случай. Исследование проводит какая то группа или специалист компании, или вообще нанимается сторонняя организация, тем самым лишая других работников фирмы возможности взаимодействия с клиентами лицом к лицу.

Что получается в итоге. Гора исписанной бумаги, куча отчетов, куча какой-то статистики и опыта набранного теми кто проводил исследование и большая часть персонала фирмы так и остается неграмотной в этом отношении. На мой взгляд самым оптимальным вариантом исследования может быть наблюдение за клиентами в их естественной среде. Можно просто придти в магазин и наблюдать за тем что и как выбирают покупатели, что обсуждают в этот момент. Почему решаются на покупку или отказываются от нее. Это чем то похоже на развитие общения, нужно больше случать чем говорить и быть максимально внимательным.

Подобный случай можно найти в статьях по маркетингу. Сводиться он примерно к следующему рассказу. Менеджер среднего звена одной пивной компании в качестве “исследователя рынка” просто посещал пивной бар. Он брал кружку пива, а затем просто сидел и наблюдал за тем что делали другие посетители. Как то он заметил что посетители охотно брали какое-то неизвестное мексиканское пиво и непонятной бутылке. Он упомянул об этом в разговоре со своим начальством, но начальство отказалось обращать на это внимание, т.к. данное пиво не было упомянуто в официальном исследовании. Результатом стало то что компания потеряла долю рынка, уступив пиву Corona. В последствии компании пришлось принимать более серьезные решения для того чтобы вернуть свое положение на рынке.

Мораль очевидна.

2. “Политичность” исследований рынка. Все исследования “политичны”, нет людей которые бы не вкладывали в свое исследование свое восприятие. “Нет ничего проще подгонки механизма, чтобы он работал так, как тебе нужно” – не могу вспомнить где я впервые услышал эту цитату, но суть очевидна...

3. Погрешность инструментария. Ну собственно изначально погрешность наверное даже не в инструменте, а в том, что им пытаются измерить – субъективные выборки. Но есть и другой момент. Ответы респондентов во многом зависят от правильности постановки вопроса… Это как работа с данными геологических исследований. Если на входе есть мусор, то на выходе тоже будет мусор. От него надо избавляться, а это уже ещё одна не менее сложная работа.

4. Судя по наблюдениям некоторых аналитиков от 75 до 90 процентов новых продуктов, которые ставятся на полки магазинов на следующий год там стоять уже не будут. Жизненные циклы товаров в наше время крайне коротки.

5. Технологии моделирования и анализа сложны и непонятны для большинства людей которые принимают решения.

6. Получаемые результаты имеют общий характер, в то время как большая часть компаний старается приспособить свой товар под нужны конкретного потребителя. Обобщенные результаты отлично подходят для массовых рынков, проблема лишь в том что массовых рынков не существует.

7. Исследования рынка дают фотографию текущего состояния рынка и мало пригодны для принятия решений в будущем. Для успешного принятия решений более необходима развитая интуиция и чувство рынка, а так же понимание и способность сделать продукт, о котором сейчас ещё никто не догадывается, но через какое-то время потребуется каждому.

Можно встретить наглядные примеры таких принятий решений. Один из наглядных примеров – Sony в 1955-79 годах. В это время выбор маркетинговой стратегии этой компании осуществляла небольшая команда во главе с Акио Морита. Их стратегия была проста: Внимательно наблюдайте за тем, как люди живут, извлекайте из наблюдений интуитивное ощущение того, что они могут пожелать и делайте это. Проще говоря о новинках можно выразиться ещё и так: Как Вы можете проводить исследование рынка, если рынка ещё не существует?

Мораль сей басни такова: Хотите быть первым и иметь рынок – создайте его сами. Создайте услугу или продукт который в данный момент отсутствует, который возможно некоторыми воспринимается как бесполезный или не нужный. Его сейчас ещё нет и никто реально не сможет сказать что Вы получите в итоге. Главное суметь правильно позиционировать и объяснить что то что Вы сделали сейчас актуально и необходимо.

30.11.2009

Мотивация в период кризиса

Что вообще такое "период кризиса" и когда он кончится? В первую очередь период кризиса это время на протяжении которого в головах сотрудников живет мысль - кризис... кризис... кризис... Как подметил один мой знакомый:
- А Вы кризис почувствовали?
- Нет.
- А он есть.
На самом деле у большинства фирм показатели изменились не столь значительно чтобы можно было говорить о какой-либо панике. И в тоже время их сотрудники продолжают кататься по заграничным "командировкам" и т.п.

Ознакомился со статистикой на портале SuperJob.ru... Оказалось что только 7% опрошенных не считаю мотивацию сотрудников необходимой в период кризиса. Политика - "А зачем мотивировать? Ведь и так все сидят на своих местах боясь потерять работу" на мой взгляд проигрышна, по различным причинам. В частности хороший работник всегда может найти какой-нить стартап в котором он окажется нужным, получит больше и ещё на пенсию останется. Стартапы которые были начаты в период кризиса есть и начаты они были вполне успешно, вопрос лишь в выбранной планке и наличии нужных людей для начала. Естественно если предлагается участие в сомнительном стартапе, в который пока никто не готов вкладывать, в котором нет человека который готов заниматься (и умеет это делать успешно) работой с инвесторами и т.п. В такой стартап вряд ли уйдет именитый и хорошо получающий сотрудник. Если только его никто не будет подталкивать к этому, но тут просто отсутствия мотивации не достаточно, тут надо скорее крупномасштабную акцию по де мотивации.

Как вообще можно мотивировать сотрудника?
1. Денежные премии и доплаты.
2. Коллективные мероприятия (соревнования)
3. Корпоративное обучение
4. Индивидуальный подход
5. Увеличение процента с прибыли (для процентников, при этом возможно уменьшение заработной платы... забавный такой способ мотивации)
6. Командный дух
7. Новые проекты (актуальные в кризис)

На мой взгляд пункты 4 и 7 наиболее интересны для "правильной" мотивации. Например если сотруднику не выплачивать зарплату в течении какого-то времени упираясь на командный дух и проведение каких-либо мероприятий, а у сотрудника к примеру взят большой кредит то вряд ли от Вашего внимания сотрудник возрадуется и забудет про кредит. Нужно выбирать индивидуальные способы мотивации и комбинировать их.

Ну и 7 - актуальные проекты. Актуальные проекты именно тем и интересны в период кризиса что несмотря на него, а иногда и благодаря ему они позволяют получить ещё большую прибыл, чем могли бы в "обычное" время. Да и работать над актуальными новыми проектами сотрудникам скорее всего будет значительно интереснее, чем над какой-то своей рутинной работой.

Что делают крупные компании в период кризиса?
Вот например пару примеров из www.computerra.ru
Американская компания NVIDIA анонсировала специализированную бизнес-программу GPU Ventures Program - финансовая помощь стартапам, связанным с перспективными технологиями в сфере компьютерной графики. Начинающие фирмы, специализирующиеся на разработке графических чипов, технологий для систем высокопроизводительных вычислений, трехмерных интерфейсов и т.д. будут получать дополнительное финансирование.

По условиям программы, минимальный размер инвестиций составит 500 тысяч долларов США, максимальный – 5 миллионов. В обмен на это NVIDIA сможет рассчитывать на определенную долю в финансируемой компании. Главная цель GPU Ventures Program – укрепление позиций NVIDIA на рынке графических процессоров и сопутствующих технологий.

Hewlett-Packard собирается построить ещё одной представительство в Ирландии.

В результате реализации проекта стоимостью 18 миллионов евро будет создано 500 новых рабочих мест - об этом сообщил премьер-министр страны Брайан Коуэн.

Часть инвестиций в проект осуществило ирландское правительство, вдохновленное возможностью создать новые рабочие места для высококвалифицированных специалистов, владеющих несколькими языками. Набор на 300 вакансий начнется немедленно, а остальные 200 позиций заполнятся в течение года.

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

Как рассматривается ситуацию с точки зрения управления персоналом?
Опасность кризисной ситуации заключается в том, что сотрудники теряют "веру в будущие". Это может происходить по различным причинам: отсутствие достоверной информации от руководства, слухи среди персонала, увольнение сотрудников (самостоятельное или по воле свыше).
Поэтому от руководства требуется постановка четких, понятных персоналу целей, а главное - возможных, реальных целей, которые будут вписываться в общую картину происходящего и в которую работники смогут поверить.
Сотрудники так же должны знать текущую информацию полностью, понимать что ожидается от них и знать, на что можно будет рассчитывать в случае успеха.

Один из немаловажных элементов мотивации - признание. Необходимо замечать и адекватно оценивать успехи сотрудников, даже не самые выдающиеся. Чаще всего даже не нужно делать этого официально. Спонтанная похвала будет лучше и сильнее чем официальное благодарственное письмо или что-то тому подобное.

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

28.10.2009

Ваш “оппонент” и Вы. Развитие общения.

Немного об общении… В моем случае это будет общение не с простыми людьми, а с людьми которые представляют Ваших клиентов или контрагентов с которыми Вы работаете, а иногда и исполнителей.

Проблема общения, а вернее её возникновение, да наверное как и любая другая проблема которая у Вас возникает, это 90% Ваша вина.

Проблемы возникающие при общении слишком многогранны и многообразны. Не знаю возможно ли избавиться от них совсем, но улучшить свои навыки и избегать острых столкновений вполне реально. Основными причинами проблем в общении чаще всего являются 3 фактора: страх (боязнь раскрыться в общении, показать свои эмоции, чувства) , непонимание (непонимание мотивов), усталость и нежелание общаться вообще. Причем проблема может быть как в недостатке каких-то качеств общения, так и в их избытке у Вас или собеседника, и это нужно уметь оценивать.

Если разбирать все причины по порядку, то на мой взгляд можно начать с боязни. В данном случае под боязнь чаще всего стоит понимать социальную фобию. Типичное поведение человека который испытывает социальную фобию – нервозность в присутствии других (скорее все таки незнакомых) людей. Он боится что о нём могут подумать другие, старается произвести впечатление, но в нем всегда есть сомнение что ему это удается. Именно по этой причине такой человек старается быть незаметным, неприметным, избегает ситуаций в которых, как ему кажется другие могут его отвергнуть.

Защитные реакции психики человека, которых он скорее всего и не осознает, а делает все совершенно машинально, не дают ему возможности проявить себя, выразить свое отношение, показать эмоции и чувства. Зачастую причина такого поведения – подсознательный или рефлекторный страх, не осознаваемый человеком (а зачастую и собеседниками) и трактуемый, как скромность, застенчивость, стеснительность, особенности характера. По моему мнению социофобия все таки является отклонением, но рассматривать варианты избавления от нее я не буду, т.к. не считаю себя компетентным в таком вопросе.

Перейдем к второму моменту – непонимание. Почему человек что-то сдерзил в ответ или просто букрнул себе под нос? Нужно очень четко разделять причины такого поведения. Невежливость, страх перед общением, раздражение, гнев, противоречия, желание изменить правила вашего общения, да в принципе может быть ещё множество мотивов для подобного поведения. Их нужно уметь четко разделять. Самое глупое ответное поведение в такой ситуации – вывод о человеке (навроде “неуверенный в себе”, “странный человек”, “неудачник” и т.п."). Делать вывод о человеке на основании первого впечатления, манере речи или внешнем виде – основная ошибка очень многих людей, зачастую она присуща даже тем кто бахвалится тем что хорошо разбирается в людях, способен определить по человеку все с первого взгляда и т.п. От одного взгляда и первого впечатления зачастую нельзя сделать правильный вывод о человеке и его мотивах. Понять мотивы поступка, принять человека таким какой он есть – немного сложнее. В последнее время стал встречать в сети даже рекомендации и целые курсы ТЕРАПИИ (я был в шоке) по проблемам общения. Называется поведенческая психотерапия или (оцените) когнитивно-бихевиоральная терапия. Разбирая суть можно понять что в принципе вся их работа разбита на 2 части: работа с когнитивным компонентом, т.е. по сути работа над восприятием конкретного человека и, как следствие, изменение стандартных стратегий поведения.

Вообще изначально чтобы понимать о чем идет речь нужно разобраться что такое когнитивная система и почему она так важна для человека. Если обратиться к опредилению в Википедии, то получим следующие:
Когнитивная система — система убеждений человека, сложившаяся в его сознании в результате его характера, воспитания, обучения, наблюдения и размышления об окружающем мире. На основе этой системы человек ставит себе цели и принимает решения о том как надо действовать в той или иной ситуации, стараясь избежать когнитивного диссонанса.
Когнити́вный диссона́нс — состояние индивида, характеризующееся столкновением в его сознании противоречивых знаний, убеждений, поведенческих установок относительно некоторого объекта или явления, при котором из существования одного элемента вытекает отрицание другого, и связанное с этим несоответствием ощущение дискомфорта.

Что подразумевается под “поведенчискими установками” проще всего понять наверное людям связанным с программированием, на самом деле это крайне тривиально и можно представить кучей различных способов. Поведение любого человека можно нарисовать к примеру в виде графа или, чуть сложнее, представить в виде нейронной сети (да по сути то это и есть нейронная сеть, только ух.. в общем это уже не по делу). По сути в поведение человека есть четкие закономерности и если наблюдать за человеком какое-то время то можно сделать довольно четкие выводы о поведении в той или иной ситуации, т.к. человеческий разум работает как некий блок обработки получает на вход информацию об обстановки –> дает в качестве результата определенные действия. Есть одно но, человек в отличии от машины обучается намного быстрее, и если человек следит сам за собой и своим поведением и анализирует желаемый и получаемый результат – то скорее всего в следующий раз он может немного изменить линию поведения в ту сторону, которую посчитает более оправданной для достижения поставленной цели.

Что такое общение и для чего мы его используем? По идее (все таже Википедия говорит) Обще́ние — обмен сведениями с помощью языка или жестов, а также иных способов контакта. По сути же общение – это нечто большее, в нем заключено взаимоотношение людей. Чтобы оно было эффективным нужен непрерывный поток информации в обе стороны, причем не важно как происходит общение (устро или письменно). Некоторые люди способны воспринимать чувства людей на расстоянии, и думаю надо признать в развитии этой способности все большее внедрение электронных средств общения (я бы даже сказал молчаливого общения, когда можно часами сидеть и набирать сообщения. Иногда создается впечатление что ты чувствуешь интонацию написанных собеседником сообщений и его голос).

А теперь ближе к нашем баранам. Все таки нам в первую очередь в данный момент интересна практическая польза от общения. А что может сообщить один человек другому во время общения?

  1. То, что говорящий хочет сказать;
  2. То, что говорящий сказал на самом деле;
  3. То, что слушатель хотел услышать;
  4. То, что слушатель воспринял;
  5. То, что слушающий услышал на самом деле.

Вероятность любого из вариантов огромна. А может быть слушатель вообще не воспримет никакой информации. Вы говорите в тот момент когда его мысли где то не здесь и он вообще не слышит вас. Слушает конечно, но не слышит.

Какие вообще существуют рекомендации по общению? Да в 99% случаев они очень банальные.

1.  “Я не согласен с вашим мнением, но я готов умереть за ваше право его высказать.” © Вольтер.
Тут на самом деле сразу 2 момента. Во первых нужно уметь слушать точку зрения оппонента, во вторых нужно вести равный диалог, не стараться говорить все время самому и не забывать о круге интересов и потребностях собеседника, а лучше даже ориентироваться на них. Первоначально зачастую тяжело приучить себя больше слушать, чем говорить, но это должно врастать в привычку. Невозможно в полной мере воспринимать партнера, если Вы одновременно пытаетесь сформулировать ответ.

2. Я бы назвал это “Держите партнера в комфорте”.
Если Вы видите что человек с которым Вы разговариваете напряжен, занят, стесняется… В общем находится не в самом комфортном для него состоянии, то ваше общение будет весьма ограниченно, я бы даже сказал ограниченно остатками его терпения. Какие-то правила поведения в такой ситуации установить сложно, все нужно смотреть по реакции собеседника, но тем не менее общепринятые элементы: быть дружелюбным и улыбаться, если Вы хозяин то будьте гостеприимны, усадите человека на удобное место, предложите что-либо, ну и главное – начинайте разговор всегда с темы которая интересует Партнера. Тут же мы приходим к следующей рекомендации.

3. Вопросы.
Если Вы чувствуете возможность – задавайте вопросы. Это позволит получить больше информации, прояснить непонятные для Вас моменты. Но учитывайте что формулировка вопроса должна быть ободряющей, в худшем случае – нейтральной. Если собеседник начнет чувствовать неуверенность, недоверие или вызов, то это может осложнить дальнейшее общение.

4. Отвечайте прямо.
На прямой поставленный вопрос человек хочет получить такой же ответ. В противном случае создается впечатление, что отвечающий уходит от ответа. В итоге первый повторяет свой вопрос в надежде получить более конкретный ответ. Я бы сказал в лучшем случае для того чтобы получить ответ, иногда он может начать делать это намеренно почувствовав что этот уход от ответа имеет какую-то мотивацию. К примеру в некоторых фирмах менеджерам запрещенно вести какие-либо переговоры о ценах и вообще озвучивать их. На моей практике было забавно выводить из себя менеджера со стажем одной Консалтинговой фирмы. Да бесспорно “речевой модуль”, как они его называют поставлен отлично. Говорит красиво и мастерски уводит от заданного вопроса, только есть один момент, не каждого человека возможно так сбить с вопроса и не каждый будет удовлетворен таким ответом. Ну и тут же выходит следующие правило.

5. Терпение.
Цель – дать почувствовать собеседнику что вы уважаете его и тему разговора. Просто принять сообщение от человека не является первоцелью. Ну и как сказал Бенджамин Дизраели: “Терпение – неотъемлемая черта гения”.
Терпение нужно не только для того чтобы слушать, но и для того чтобы излагать свою мысль. Если Вы находитесь в такой ситуации что Ваш собеседник заводит Вас в тупик вопросами ни к коем случае не следует начинать нервничать и забывать о терпении. В самой тупиковой ситуации всегда можно взять небольшой таймаут, например попить воды ;)

6. Предоставьте информацию
Прежде чем ожидать ответа на свой вопрос сообщите сначала все что может быть интересно собеседнику. Он должен иметь достаточно информации, понимать цель вопроса и взаимосвязь.

7. Суть вопроса
Помня о пунктах 2, 3, да и остальных в принципе тоже нужно помнить что лишнего времени и энергии на общение нет ни у Вас, ни, скорее всего, у вашего собеседника, поэтому не маловажно максимально быстро переходить к сути вопросов, избегая излишней болтовни.

8. “Повторенье – мать ученья” 
А профессиональный оратор видимо отец. Повторение – отличный способ выделить суть и тему. Повторение важно не только для того чтобы собеседник запомнил о чем Вы говорите, зачастую повторение нужно для того чтобы собеседник успевал осмыслить что Вы уже сказали. Как не странно, но очень часто когда Вы говорите собеседник “запаздывает”. Это похоже на медленное соединение у которого теряются пакеты. В принципе вы говорите постоянно и вроде бы все связанно, а собеседник может получив блок информации начать её осмысливать. В момент когда собеседник думает о том что уже сказано он может не слышать что Вы говорите сейчас. Безусловно если Вы находитесь в радиусе визуального контакта, то скорее всего он Вас будет так же слушать, но не слышать. Поэтому повторение нужно для того чтобы заполнить эти самые потерянные пакеты.

9. “В споре рождается истина”
Если Вы видите или чувствуете что в аудитории с которой Вы общаетесь есть несогласие – спросите их мнение. Спор – тоже полезен диалоге, главное не перегибать палку, иначе в споре истина может начать теряться.

Это пожалуй основные рекомендации, которым нужно следовать, следующие что можно сделать это добавить еще несколько:

1. Не пытайтесь общаться с разгневанным человеком.
Злость меняет значения слов, и результат такого диалога вряд ли будет полезным…

2. Сочувствие!
Сопереживание, сочувствие.. Вообще это уникальные качества, присущие небольшому количеству животных, а для человека это качество крайне важно. Пытайтесь поставить себя на место собеседника, увидеть мир его глазами, понять его мысли.

3. Уберите помехи
Есть мнение что во время диалоге необходимо исключить любые посторонние шумы: шуршание бумаги, щелканье ручки, скучание пальцами, рисование. Считается что такие вещи мешают восприятию и говорит что Вам мало интересны слова собеседника. По моему мнению конечно не стоит демонстративно щелкать ручкой на протяжение всего диалога, или упиваться собственными художествами, не глядя на собеседника, но вполне резонно представлять графически некоторую информация, т.к. большая часть людей все таки визуалы, и так лучше запомнят и поймут, а что касается производства шумов… Иногда имеет смысл пошуметь для того чтобы на Вас обратили внимание и возникла небольшая пауза, естественно если Вы понимаете чем хотите эту паузу заполнить.

Что нужно для того чтобы получить положительный ответ собеседника, когда Вы предлагаете ему что-то новое?
1. Понимание.
2. Согласие интересов.
3. Соотвествие целям.
4. Готовность партнера.

Если разобрать по пунктам то получим нечто следующие: Ваш партнер должен понимать вашу идею. Не имеет смысла получить одобрение пока не убедитесь в том, что Вас понимают. Люди не принимают новшеств, пока их не понимают. После того как парнер поймет вашу идею он начнет оценивать насколько она согласуется с его личными интересами, поэтому нужно стараться дать как можно больше информации о пользе предлагаемого нового. Если Вы предлагаете что-то руководителю хотя-бы не большой команды он будет оценивать насколько предложение соответствует целям его команды. Нарушать жизнь сообщества из-за новых идей готовы не все, поэтому иногда нужно уделить отдельное внимание пользе, для всего отдела/компании/команды/сообщества в целом. Ну и в итоге Партнер должен быть готов выполнить задачу. Чаще всего для этого достаточно просто немного подбодрить человека, иногда дать некоторые объяснения, чтобы помочь преодолеть сомнения, но есть и случае когда нужно затратить намного больше энергии на то чтобы обучить и сделать большую часть работы самому.

Ну и последнее что касается развития общения – попробуйте понаблюдать за людьми в комфортном для них состоянии, не важно где это будет происходить, понаблюдайте за беседующими парами или группами людей.  Мимика, жестикуляция, движения – словарь состояния человека. Его можно использовать чтобы лучше налаживать отношения с людьми.

Последний оставшийся практически нерассмотренным момент – усталость. Не важно от чего она возникает, от долгой работы или от внезапно возникшей проблемы. Небольшая казалось бы проблема, глубоко сидящая в душе у человека изнуряет намного сильнее чем многие сутки работы. Такой человек может быть раздражителен даже по пустякам. Тут по моему мнению тоже есть несколько путей. Первый – дать человеку отдохнуть, если причина в усталости. Отдохнуть не 2-3 дня, а как минимум пару недель. Пара дней отдыха на многих людей действует так же как и пара часов сна во второй половине дня. Казалось бы отдохнул, а стало только хуже. Потому что организм не успевает адаптироваться. Второй момент, когда усталость связанна с внутренней проблемой я рассматривать не буду, потому как тут все индивидуально. Кто-то готов справится с ней сам и ему главное не мешать, кому-то наоборот нужна поддержка и он тоже с ней справится, а некоторым уже нужна полноценная помощь, но это на мой взгляд уже крайний и очень печальный случай.

На этом пожалуй пока все…

Постоянные читатели