понедельник, 25 января 2010 г.

08.01.2003 - 09.01.2003 Page 15

Андрей Finder Плахов 8 января, 20:38
smollett

Да ты, никак, MS-ненавистник? :)

>В C# их сохранили для обратной совместимости.
Совместимости с чем?? Не считаешь же ты, что С# совместим с С или с С++?

>под винду оптимизированый
Что там можно оптимизировать специально под винду? Я же не о графических библиотеках речь веду.

>Сам C# не разрабатывался как язык
>призваный внести новые языковые
>возможности
C# "первой волны " уже несет новые возможности по сравнению с Java, как-то: properties, enums, events, structs.
Во "второй волне " будет еще и определение функций непосредственно при создании delegate'ов, а также динамически подключаемые библиотеки шаблонов (о мечта!)
Как Java - не просто "очищенный С++ ", так и С# - не просто "M$ Java ".

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 20:48
Иван FXS
как этот Ваш class CLogged будет узнавать и СИГНАЛИЗИРОВАТЬ (= обозначать) в СУБД - в каком именно месте программного кода его значение ... того, чик-чик ... изменили

Ну естественно. В этом же вся прелесть С++. Поскольку мы можем переопределить оператор присваивания и конструктор с деструктором, то мы можем непосредственно в них вставить вызов команд, ведущих лог. То есть инструкции

CLogged a(5, "активность ");
int b = 2;
a *= b;

будут поняты как

CLogged a;
a.value = 5;
a.name = "активность ";
log < < "Создана переменная " < < a.name < < endl;
int b = 2;
a.value *= b;
log < < "К переменной " < < a.name < < " применен оператор *= с параметром " < < b < < ". Значение стало равно " < < a.value < < endl;

Естественно, как именно будет происходить запись в лог (глупые сообщения в поток, как здесь, или запись в базу данных), зависит от того, что написать при определении этих операторов.

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

int a = 5;
int b = 2;
a *= b;

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

--------------------------------------------------------------------------------
smollett 8 января, 20:49
2Андрей Finder Плахов
>Да ты, никак, MS-ненавистник? :)
Да пофигу мне мс.
>Совместимости с чем? Не считаешь же ты, что С# совместим с С или с С++?

Считаю, НО!!!!!!
Я не имею практического опыта с С#, ежели Вам интересно (мне да) то мне нужно 2 дня и я буду квалифайд для этой дискуссии по поводу С#/джава.

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 20:52
2 smollett
Ну в общем-то мне не особенно интересно. Думаю, этот форум не затем. А С# все-таки с С несовместим. С С++ тем более.

--------------------------------------------------------------------------------
smollett 8 января, 20:57
2Андрей Finder Плахов
>А С# все-таки с С несовместим. С С++ тем более.

Вы имеете ввиду что С# компаилер не всосет С++ код?
Это так чтоб точку в дискуссии поставить:)

--------------------------------------------------------------------------------
Dr.Drew 2 Smollett 8 января, 21:05
Тесты Тьюринга фильтруют спам :::

Тесты, разработанные для того, чтобы дать возможность отличить человека от машины, находят применение в борьбе с нежелательной электронной почтой - так называемым спамом. Испытуемому предлагается выполнить несложное задание, основанное на анализе визуальной информации. Человек справляется с ним без труда, в то время как компьютерам подобное задание оказывается не под силу. • обсудить • переслать • распечатать Методика тестирования заключается в том, что компьютерной программе предлагается распознать слово, написанное с искажениями либо частично скрытое. Подобная задача, с которой человек справляется относительно легко, остается практически неразрешимой для большинства компьютеров. Методика получила наименование "полностью автоматизированные открытые тесты Тьюринга по распознанию людей и машин " (completely automated public Turing tests to tell computers and humans apart, CAPTCHA). История тестов восходит к 1950 году, когда британский математик Алан Тьюринг высказал предположение о том, что если возможности компьютера будут равны человеческим, отличить машину от человека станет невозможным и компьютер может быть признан разумным. С тех пор ученые без устали пытаются создать машину, которая смогла бы пройти тест Тьюринга. Для сбора адресов электронной почты, регистрации бесплатного адреса и рассылки с него миллионов сообщений ежедневно используются автоматические программы-роботы. Следовательно, возможность отличить такого робота от реального человека дала бы возможность покончить с рассылкой спама еще на ранней стадии. Для этих целей тест Тьюринга оказался как нельзя более подходящим. Программное обеспечение Spam Arrest, к примеру, использует фильтр Тьюринга для выделения спама еще до того, как он попадет в почтовые ящики клиентов. Программа предлагает отправителю выполнить несложный визуальный тест, перед тем как его письма будут отправлены получателям. Если тест будет выполнен успешно, все сообщения в будущем будут немедленно доставляться адресатам. Программы же автоматической рассылки спама окажутся заблокированными. Аналогичные тесты уже нашли применение в почтовой службе Yahoo! Еще одна популярная бесплатная почтовая служба, Hotmail, ввела аналогичное тестирование пользователей, начиная с декабря минувшего года. Правда, воспрепятствовать автоматическому сбору адресов электронной почты такие программы не в состоянии. Тем временем группа специалистов из Калифорнийского университета (Беркли) занялась разработкой методов борьбы с фильтрами, основанными на тесте Тьюринга. Для этих целей используются алгоритмы распознания таких сложных объектов, как рукописный почерк или человеческие фигуры. 10 декабря было объявлено, что новая программа смогла пройти тест Тьюринга в 83% попыток. Однако Yahoo! тут же усложнил собственный визуальный тест, увеличив количество символов, которые необходимо распознать испытуемому. Компьютер не сможет прочитать слово "smile ", в отличие от человека. Источник: по материалам New Scientist.

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:11
Я имею в виду, что у них не так много общего.
С# компаилер (как и Java) не всосет С++ код, естественно, кроме того, вообще неправильно на С# писать точно так же, как на С++. И С# и Java поощряют другие методы и многое, что на С++ привычно делаешь (например, задумываешься каждый раз, а делать ли эту функцию виртуальной, ведь это удорожает ее вызов, или при создании класса первым делом пишешь пару конструктор-деструктор, или недрогнувшей рукой пишешь class A: public B, С) для этих языков или бессмысленно или просто нельзя написать.

--------------------------------------------------------------------------------
Dr.Drew 2 Smollett 8 января, 21:11
наши австралийские братья с удовольствием послушали бы ваши заметки по Си-С++-Джава вопросу на Форуме Эмиграция...
А вам мы шлем заметку в кач аванса

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:15
Австралийские братья, если им принесут пользу заметки такого уровня, пусть почитают Страуструпа. Там они еще и не такое узнают.

--------------------------------------------------------------------------------
Dr.Drew 8 января, 21:17
мы смоллетта хотели в свободное время пощупать...

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:18
В каком смысле пощупать?

--------------------------------------------------------------------------------
Dr.Drew 2 Андрей Finder Плахов 8 января, 21:23
как человек-человека,
но не то что вы подумали...
но это офф-топик, сорри, ухожу-ухожу...

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:27
Гм, вот ведь нравы у ихнего поколения. "Не то что вы подумали " - пером, что ли, пощупать решили, за вольнодумство?

--------------------------------------------------------------------------------
DrDrew 2 Андрей Finder Плахов 8 января, 21:36
ну
уж скорей не-моего поколения...
мы и слов то таких не знали...

А вы наверное находитесь под скромным обаянием Инфинити... зря... по-читайте его поподробнее... теста моего он не прошел...

а мы езмъ ловцы человеков... не берите в голову \тьфу вас всех... не в том смысле...\,
I mean, Show must go on!

ушел еще дальше \поймите правильно\...

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:39
Под очень скромным обаянием Инфинити... Нет, это я Ваш стиль пытался имитировать. Конечно, с учетом слов, которых Ваше поколение не знало :)

--------------------------------------------------------------------------------
NO <контакт> 8 января, 21:39
2 Иван FXS
самый быстрый компилятор у Delphi, обычно между очередной правкой исходника и остановкой на этой строке по breakpoint'у проходит секунды три. Язык слегка академичный, человеку тоже читать удобно, вообще этим языком занимались, его создавали, тогда как С случился. Извиняюсь если задел чьи-то религиозные чувства.

smollett:
>например гвозди забивать:)
В каком-то смысле да. Если добавить известную фразу боксера "а еще я туда ем " то в образной формулировке проект ИИ готов на 66%.

--------------------------------------------------------------------------------
DrDrew 2 No 8 января, 21:47
Правильно ли я понимаю Дельфи как продолжение линии -

Алгол - Паскаль - Модила - Ада
=============== - ПЛ\СКЛ - Дельфи ?
=============== - Дельфи ???

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 21:53
Дельфи - это объектно-ориентированный Паскаль, постепенно превращающийся в компонентно-ориентированный. Любят его за неплохую RAD - среду, ориентированную на быстрое создание Windows - приложений.
Все лучшие идеи Microsoft недавно сперла у них и использовала в VisualStudio .NET, поддержав тремя языками (С++ с доп.библиотеками и RAD-визардами, С# и VisualBasic), что Delphi, возможно, и погубит. Cейчас Инпрайз, бывший Борланд, на всякий случай мигрирует на платформу Linux, Delphi под линукс будет зваться Kylix. Вкратце вот так.

--------------------------------------------------------------------------------
smollett 8 января, 22:03
>Delphi под линукс будет зваться Kylix. Вкратце вот так.
Ага я бы даже сказал что уже зовется, и даже работает :) зачастую.

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 22:07
Ну да. Я просто не видел еще ни разу.

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 22:08
Дык это, мы, может, про ИИ поговорим?

--------------------------------------------------------------------------------
smollett 8 января, 22:09
>Дык это, мы, может, про ИИ поговорим?
Заряжай те!

--------------------------------------------------------------------------------
Андрей Finder Плахов 8 января, 22:11
Не, на сегодня я всё. Баиньки пойду скоро. Минут через 10.
А вы там что-то об определении элементарной мысли, кажется, говорили?..

:-\

--------------------------------------------------------------------------------
Белый Козел <уже в Москве> 8 января, 22:40
2Плахов:
Я тут сильно отстал от ваших поисков истины в трех соснах. Ну как книжка? Я имею в виду http://www.aha.ru/~pvad/f0.htm

--------------------------------------------------------------------------------
smollett 9 января, 01:09
2уже в Москве
Читаемс, чет подозрительный подход напоминает ситуевину кадыть набрали транзисторов и без малейшего понятия даже о законах Ома пытаются собрать радио приемник. Думаете стоит до конца прочесть?

--------------------------------------------------------------------------------
DrDrew 2 Kombinator 9 января, 01:54
= = Белый Козел <уже в Москве > 8 января, 22:40 2 Плахов: Я тут сильно отстал от ваших поисков истины в трех соснах. Ну как книжка? Я имею в виду www.aha.ru/~pvad/f0.htm = = =

Не знал что эта книжка уже на интнрнете... я работал с автором у ак.Анохина... когда весь отдел повернулся к ИИ в разливе М.Минского - он гордо до 1997 шел в одиночку... глубже его по пути Анохиных и Нейронных ансамблей - не дошел никто...

задержитесь с публикацией... ваше мнение об 35-летней работе этого человека - весьма важно...

Интересно, жив ли он - 1926 г/р... но вел очень здоровый образ жизни... жил на Пушкинской в квартире кровавого большевика-дедушки, чьи грехи полностью искупил подвижнической жизнью и этой коротенькой монографией, рез. 35-летней работы в ИИ\Бионике...

ПОДЛЕЖИТ СПАСЕНИЮ В ПЕРВУЮ ОЧЕРЕДЬ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

--------------------------------------------------------------------------------
Egorov 9 января, 01:58
книжка Емельянова-Ярославского неплохая... жаль только, что пока он над ней работал, тема конкурентных нейронных сетей ушла далеко вперед...

--------------------------------------------------------------------------------
Egorov 9 января, 02:03
тут (в Мембране) И.Крылов статьей очередной разродился... на этот раз по проблеме невозможности бессмертия... ИИ касается в полной мере... можете любопытнуть, но, на мой вкус, она лишена содержательной стороны... одни эмоции...

--------------------------------------------------------------------------------
smollett 9 января, 02:32
>ПОДЛЕЖИТ СПАСЕНИЮ В ПЕРВУЮ ОЧЕРЕДЬ

Значит будем дочитывать до победного!

--------------------------------------------------------------------------------
Egorov 9 января, 03:07
Кстати, господа, тема безсмертия вспомнила во мне еще один аргумент к модели эволюции знания... Когда природа реализовала смерть для биологических существ, то они обрели очень большое конкурентное преимущество перед мертвой природой. (Прежде всего высочайшую адаптивность.) Знание в рамках социальной системы практически бессмертно... оно подчиняется принципу Бора, то, что стареет, становится просто частным случаем чего-то более нового... я далек от мысли о прямой аналогии, но что-то в этом есть...

--------------------------------------------------------------------------------
smollett 9 января, 03:08
2Egorov
>Смысл, знание, мысль, информация, понятие... мы вертим, вертим эти имена... словно плохие жонглеры

Давайте предлагайте чем заняться, ежели не жонглировать?

>И.Крылов статьей очередной разродился
А они как, на Мембране все что попало печатают(я не на Крылова наезжаю, просто интересно)

--------------------------------------------------------------------------------
Egorov 2 smollett 9 января, 03:26
давайте вернемся к Вашим семантическим производным, а? жутко интересная тема, в самом деле... Как у Вас с процентом алкоголя в крови? :-) (шутка...)

Мой вопрос: если под скоростью понимать классическое изменение состояния во времени, то для пары "сидел - встал " примерно понятно что это такое... А вот как Вы собирались использовать эти скорости? Есть мысли?

(Хорошо, что на Мембране что попало печатают, есть возможность с собственной статейкой влезть... :-)

--------------------------------------------------------------------------------
Egorov 2 Фан 9 января, 03:31
спасибо за развернутый комментарий топика "мысль как вектор "! немного более поээтично, чем хотелось бы, но зато вызывает большое количество ассоциаций... Возможно какая-то часть того, что Вы написали поддается формализации, во всяком случае, я понял Ваши ощущения по этому поводу, они корреспондируют с моими, что приятно...

--------------------------------------------------------------------------------
smollett 9 января, 04:50
>классическое изменение состояния во времени...
как Вы собирались использовать эти скорости

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

Как использовать и подавно. Но я продолжаю думать.:) сорри

--------------------------------------------------------------------------------
Egorov 9 января, 09:25
все молчком молчат...

--------------------------------------------------------------------------------
BAXTEP 2 Egorov 9 января, 09:29
для тебя нужен сайт с трех-сменным составом и ночным директором

--------------------------------------------------------------------------------
Egorov 2 BAXTEP 9 января, 10:20
Доктор?
зачем еще один? есть же Мембрана... просто все в релаксе полном, вместо того, чтобы напрягаться...

--------------------------------------------------------------------------------
Иван FXS 9 января, 11:59
> Андрей Finder Плахов 8 января, 20:48
log < < "Создана переменная " < < a.name < < endl;
...
log < < "К переменной " < < a.name < < " применен оператор *= с параметром " < < b < < ". Значение стало равно " < < a.value < < endl;
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Эээээ ... а какие еще будут "операции " кроме создания, присвоения и уничтожения?
Я-то говорил о фиксации (в логе) того, в какой именно "точке программы " (как минимум - в какой процедуре) произошло каждое изменение отслеживаемой переменной ...
Кстати, это умеет любой дебагер ... Жаль только, что дебагер не умеет сборасывать дебаг-информацию в СУБД-лог, но только - тупо останавливается.
(Если оффтопиковость зашкаливает, - давайте эту тему придавим ;-) )
НП, Иван FXS

--------------------------------------------------------------------------------
Nemo 9 января, 12:19
2Иван FXS
Ну вообще-то следить за "контекстом выполнения " средствами С++ вполне можно. Кроме того, а в библиотеках (не в стандартных, правда) бывают функции, которые выдадут тебе содержимое стека в виде списка имен функций и описаний аргументов.
Если честно, я этим никогда не пользовался - просто незачем было. Аналогом CLogged - было один раз, воспользовался. Но и то это почти что overpower.

>Эээээ ... а какие еще будут "операции "
>кроме создания, присвоения и уничтожения?
Не понял, в чем состоит вопрос? Какие надо, такие и будут. Интересует, что в С++ можно переопределить? RTFM, а если коротко - то всё :)

--------------------------------------------------------------------------------
Иван FXS 9 января, 12:47
2 Nemo 9 января, 12:19
Конфа про ИИ, обсуждаем как он соотносится с внешним миром ...
Не знаю, ВЫЧИТЫВАЛОСЬ ли это в моих первых постингах, но я убежден: что ИМЕННО является ДЛЯ КОНКРЕТНОГО СУБЪЕКТА внешним миром - зависит от того, чем он сейчас занят.
Вот я занят отладкой программы ...
Да, своей собственной программы, но - уже ОБЪЕКТИВИРОВАННОЙ, существующей независимо от меня, имеющей свою собственную логику существования, порой давлеющую (ох как хорошо я это понимаю относительно моего Проекта Garant ... ну да ладно, не будем о грустном ;-) )
Так вот, В РАМКАХ этой ДЕЯТЕЛЬНОСТИ - программа и есть мой "внешний мир " ...
(((Если быть совсем аккуратным, можно сказать, что "первый план " внешнего мира, ближайшее окружение - это тот объект (= ситуация), с которой я сейчас работаю, а все остальной - уходит на дальние планы, вплоть до самого горизонта ... Вот где-то там на горизонте, еле различимо, зрения не хватает: "вселенная " и "человек впервые взявший в руки палку " ;-)
)))
К чему эта лирика?
Поскольку я сам ставлю задачу и ТЗ, сам пишу код, сам отлаживаю, и сам его использую (sic! ситуация уникальная, согласен!), то я хочу И в процессе отладки, И в процессе контроля (= управления) за функционированием программы ВИДЕТЬ те же самые ОБЪЕКТЫ, с которыми я маюсь при написании кода ...
"содержимое стека в виде списка имен функций и описаний аргументов " - это, конечно, хорошо, это уже что-то ... Но хотелось бы (мечты, мечты, где ваша сладость ...) гипертекстовые отсылки к ТЕКСТУ программы.
НП, Иван FXS

--------------------------------------------------------------------------------
Андрей Finder Плахов 9 января, 13:00
2Иван FXS
Понятно. Вам повезло. Сейчас языки программирования как раз идут к контекстной и компонентной ориентированности. Так, чтобы разработка, отладка и работа программы были одним процессом, построенным на одинаковых сущностях. Чтобы объекты и компоненты были максимально "выпуклы " и осмысленны сами по себе, и на каждый можно было посмотреть, "спросить ": А ты кто? А что умеешь? А откуда тут появился? Чтобы код программы можно было прямо во время выполнения менять, а она бы от этого не падала.
Visual всё (не только Бейсик, но и остальное) постепенно мигрирует в эту сторону.

С++ для этого не предназначен, хотя реализовать на нем все это можно, но нужно будет ограничивать себя (производить объекты от единого предка, делать class factory обязательно и т.п.), и это довольно муторно. Но можно. Но сложно.

--------------------------------------------------------------------------------
Nemo 9 января, 13:02
Иван FXS
---------------------
хочу И в процессе отладки, И в процессе контроля (= управления) за функционированием программы ВИДЕТЬ те же самые ОБЪЕКТЫ, с которыми я маюсь при написании кода ...
---------------------
сам догадался? уважаю.......

--------------------------------------------------------------------------------
Иван FXS 9 января, 13:11
Андрей Finder Плахов 9 января, 13:00
Понятно. Вам повезло. Сейчас языки программирования как раз идут ...
====================
... в мою сторону, ко мне навстречу, типа?
И в этом мне "повезло "? ;-)))
НП, Иван FXS

--------------------------------------------------------------------------------
Андрей Finder Плахов 9 января, 13:17
2Иван FXS

Ну да. Я это и имел в виду.

--------------------------------------------------------------------------------
Webmaster 9 января, 13:36
Открылся новый сайт и форум, посвященный исследованиям Маршалла Маклюэна
в сфере IT-технологий.
На сайте имеются эксклюзивные материалы, ранее почти нигде не публиковавшиеся.
Если вам интересен смысл коммуникаций и современных технологий в целом -
милости просим на сайт нашего проекта: httP://mcluhan.by.ru

--------------------------------------------------------------------------------
Андрей Finder Плахов 9 января, 13:39
2Webmaster

А можно подробнее, о чем идет речь? Я не слышал о Маклюэне. И не верится, что один человек может выразить "смысл коммуникаций и современных технологий в целом ".

Что такое "Ваш проект "?

--------------------------------------------------------------------------------
Иван FXS 9 января, 13:50
Андрей Finder Плахов 9 января, 13:00
Чтобы объекты и компоненты были максимально "выпуклы " и осмысленны сами по себе, и на каждый можно было посмотреть, "спросить ": А ты кто? А что умеешь? А откуда тут появился?
=============================
Честно признаться, я вижу в РЕАЛЬНОСТИ эти "аспекты " пока только у ИНТЕРФЕЙСНОЙ части программирования: контролы там всякие ...
А вот охватывает ли такой подход также ПРОЦЕДУРНУЮ часть программирования, - для меня большой вопрос ...
НП, Иван FXS

--------------------------------------------------------------------------------
Андрей Finder Плахов 9 января, 14:02
2Иван FXS
>А вот охватывает ли такой подход также
>ПРОЦЕДУРНУЮ часть программирования

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

Но как раз в ИИ такой подход не очень-то хорош ИМХО. Объектно-ориентированный подход не единственный. Мне, например, кажется, что функторно-ориентированный язык был бы для ИИ более правильным. Могу написать подробнее, что я имею в виду.

--------------------------------------------------------------------------------
Иван FXS 9 января, 14:17
Андрей Finder Плахов 9 января, 14:02
... функторно-ориентированный язык был бы для ИИ более правильным. Могу написать подробнее ...
" " " " " " " " " " " " " " " " " "
Да, конечно, - это очень интересно ...
------
Кстати, "посмотреть, спросить: А ты кто? А что умеешь? А откуда тут появился? "
- это ведь аналогия с взаимодействием СУБЪЕКТОВ в рамках (сложно-организованной) ДЕЯТЕЛЬНОСТИ!
НП, Иван FXS

--------------------------------------------------------------------------------
Андрей Finder Плахов 9 января, 14:37
Итак, какое идейное содержание заложено в объектно-ориентированные языки программирования(ООЯП)? Все решение выражается как взаимодействие неких объектов. Объект в "чистом " ООП никому не расскажет, что у него внутри, но зато мы можем быть уверены, что он действует так-то и так-то.

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

Гм, потом продолжу.

Комментариев нет:

Отправить комментарий