Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП, стандарт и прочие крики души, выделено из "Как не надо писать код" 
:(
    Опции темы
mes
Дата 29.7.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



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



--------------------
PM MAIL WWW   Вверх
HellStranger
Дата 29.7.2010, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



bsa:

Да что ты к линуксоидам прицепился? Тебе платят за это?
Не знаю что там у МС с IPTV, но все известные мне IPTV сервера работают именно на Linux.


Ознакомься 
http://en.wikipedia.org/wiki/Microsoft_Mediaroom
А потом лепи горбатого к стене со своими линуховыми IPTV-серверами.

Добавлено через 3 минуты и 32 секунды
Цитата(mes @ 29.7.2010,  14:30)
HellStranger,чего Вы пытаетесь доказать ?
если есть вопросы, или просто желание высказаться, заведите свою тему в подобающем разделе, а не захламляйте чужие не аргументированными выпадами.

Я всего лишь высказываю своё мнение по данной теме. Аргументов приводил достаточно, просто есть люди "я самый умный, и на остальных чихать хотел", они аргументов не видят или не считают их таковыми. Но это уже не моя вина...
PM MAIL   Вверх
mes
Дата 29.7.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(HellStranger @  29.7.2010,  13:36 Найти цитируемый пост)
Я всего лишь высказываю своё мнение по данной теме. Аргументов приводил достаточно, просто есть люди "я самый умный, и на остальных чихать хотел", они аргументов не видят или не считают их таковыми

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



--------------------
PM MAIL WWW   Вверх
HellStranger
Дата 29.7.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(mes @ 29.7.2010,  14:43)
Цитата(HellStranger @  29.7.2010,  13:36 Найти цитируемый пост)
Я всего лишь высказываю своё мнение по данной теме. Аргументов приводил достаточно, просто есть люди "я самый умный, и на остальных чихать хотел", они аргументов не видят или не считают их таковыми

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

Прочтите пост, например, в котором я объяснял почему в SDL даже не пахнет ООП в полном его смысле. По-моему, аргументов приведено достаточно... 
Как ни странно, но у себя в отделе, C-разработчики прекарсно понимают аргументы друг-друга, но вот с приверженцами stl и boost мы разговариваем на совершенно разных языках. Думаю, вы не видели в моих постах аргументов по той же самой причине. )))))))))
PM MAIL   Вверх
mes
Дата 29.7.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(HellStranger @  29.7.2010,  12:49 Найти цитируемый пост)
Да по ходу дела, ты не знаешь... Основополагающая концепция ООП инкапсуляция здесь не выполнена к твоему сведению. Данные существуют отдельно, методы их обработки отдельно! Отличие от ptr = new SDL_Surface(...)) принципиальное, выделилась память под структуру, инициализировались поля по умолчанию, всё! С таками подходом char *cString = (char *)calloc(10, 1) можно назвать ООП в действии. Есть указатель на объект cString, вызвали его конструктор calloc, а потом будем методы вызывать strcpy, strcmp и так далее... Процедурное программирование, выходит, в прямом смысле является ООП. Есть данные, есть функции для их обработки... Достаточно! На хрен инкапсуляци, нахрен наследование, туда же полиморфизм... 

этот ?

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



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 29.7.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: нет
Всего: 110



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

Цитата(HellStranger @  29.7.2010,  14:36 Найти цитируемый пост)
http://en.wikipedia.org/wiki/Microsoft_Mediaroom

а микрософт, это что?
PM WWW   Вверх
HellStranger
Дата 29.7.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(bsa @ 29.7.2010,  13:13)
HellStranger, если ты не осилил С++, то так и скажи. Нечего тут кричать и изливать желчь.
Си используется в системном программировании, поэтому нет ничего удивительного в том, что ntdll.dll написан на нем.

Ты посмотри стандартную библиотеку Си. Ты в ней не найдешь функций с 10-ю параметрами. 4 - еще может быть. Как ты думаешь, люди придумавшие стандартную библиотеку сильно глупей "ребят" (индусов?) из Microsoft?

В *nix есть две функции: fork() и семейство exec(). первая создает копию текущего процесса, вторая производит запуск указанной программы путем замещения текущего процесса. Таким образом, если тебе нужно запустить программу без закрытия текущей, то нужно сделать fork() и из копии тут же exec. Если нужно замещение - то достаточно только exec. Зачем городить огород с 10-ю параметрам? Какое отношение имеет CreateProcess к потокам?

Удачные проекты, далеко не всегда могут являться примером по написанию кода. Типичный пример - WinAPI. Никто не будет спорить, что Windows очень успешная ОС. Но в то же время, многие признают, что WinAPI спроектирован очень плохо. Другой пример Qt (это уже C++), он тоже популярен, но спроектирован так, что пользоваться им просто и удобно. Чтобы в этом убедиться, достаточно посмотреть количество и сложность вопросов в соответствующих разделах форума. Вопросы по Qt значительно сложней, так как до простого и самому догадаться несложно.

Короче, большое количество параметров у функций от небольшого количества ума (опыта). Заруби себе на носу.

>>Ты посмотри стандартную библиотеку Си. Ты в ней не найдешь функций с 10-ю параметрами. 4 - еще может быть.

Во-первых, посмотри накануне функции генерации системных и програмных прерываний стандартной библиотеки... Обрати внимание на объединения и структуры REGS, SREGS. Посмотри сколько полей в этих структурах... Опеределённо по числу регистров... Но все эти регистры - параметры функций!!! Но здесь понятон, всё логично... В Microsoft для таких же умных как ты! решили не объединять многие логически не связанные параметры в структуры, а передавать их в функции отдельно. Никто не мешал им разбить 10 параметров CreateProcess по нескольким структурам, только вот это противоречило бы здравому смыслу и логике... 

То, что ты совершенно не знаком со стандартной библиотекой С, я и так прекрасно понял, не нужно это лишний раз демонстрировать... Вот тебе на вскидку пример с 5-ю паарметрами movedata. А уж функций с 4 параметрами предостаточно! Чем сложнее действия, тем больше параметров передаётся. Просто "сложные" задачи на C прошли мимо тебя, а строишь из себя аса...

Добавлено через 5 минут и 40 секунд
Цитата(mes @ 29.7.2010,  15:08)
Цитата(HellStranger @  29.7.2010,  12:49 Найти цитируемый пост)
Да по ходу дела, ты не знаешь... Основополагающая концепция ООП инкапсуляция здесь не выполнена к твоему сведению. Данные существуют отдельно, методы их обработки отдельно! Отличие от ptr = new SDL_Surface(...)) принципиальное, выделилась память под структуру, инициализировались поля по умолчанию, всё! С таками подходом char *cString = (char *)calloc(10, 1) можно назвать ООП в действии. Есть указатель на объект cString, вызвали его конструктор calloc, а потом будем методы вызывать strcpy, strcmp и так далее... Процедурное программирование, выходит, в прямом смысле является ООП. Есть данные, есть функции для их обработки... Достаточно! На хрен инкапсуляци, нахрен наследование, туда же полиморфизм... 

этот ?

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

Вы совершенно не о том. Я лишь сказал, что в SDL не применяется ООП! Применяется здравый смысл и логика. На С можо реализовать приложение, полностью соответсвующее принципам ООП. И есть такие примеры. Речь о том, что реально мастшабные проекты с успехом реализуются и без применения концепции ООП как таковой! А отдельно инкапсуляция была известна и широко применялась и до появления первой литературы касательно ООП. Надеюсь, так понятно?..
PM MAIL   Вверх
HellStranger
Дата 29.7.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(boostcoder @ 29.7.2010,  15:16)
откуда столько эмоций? читать противно. воздерженца на свободу выпустили..

Цитата(HellStranger @  29.7.2010,  14:36 Найти цитируемый пост)
http://en.wikipedia.org/wiki/Microsoft_Mediaroom

а микрософт, это что?

Нет, нет, ничего... Эт так, просто буквы незнакомые... smile 
Ты в домике, я понимаю... Microsoft нет, Apple нет, Adobe нет... Есть только boost и linux. Удачи. smile
PM MAIL   Вверх
mes
Дата 29.7.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(HellStranger @  29.7.2010,  14:17 Найти цитируемый пост)
Вы совершенно не о том.


Цитата(HellStranger @  29.7.2010,  14:17 Найти цитируемый пост)
 А отдельно инкапсуляция была известна и широко применялась и до появления первой литературы касательно ООП. Надеюсь, так понятно?

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


Цитата(HellStranger @  29.7.2010,  14:17 Найти цитируемый пост)
.. Вот тебе на вскидку пример с 5-ю паарметрами movedata. А уж функций с 4 параметрами предостаточно!

ну и о чем это говорит ? о том, что надо пихать в функцию побольше, или о том, что если иначе (по каким то соображением ) нельзя , то можно и 5 парамметров в функцию передать ?



--------------------
PM MAIL WWW   Вверх
HellStranger
Дата 29.7.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(mes @  29.7.2010,  15:37 Найти цитируемый пост)
ну так оно и есть. фактически ООП это всего лишь выработанной временем набор хороших решений  процедурного программирования. (с точки зрения императивных языков).Но не понятно протест насчет чего высказан ? В том что SDL плохая ? или что она хорошая ?


Вы внимательнее читайте тему, тогда поймёте... Протест был высказан по поводу отсутствия ООП в SDL, в то время как мне пыталсиь доказать обратное. SDL - пример замечательной библиотеки, работающей на самых распространнённых осях, и совершенно не использующей ничего, кроме C... Никаких stl, boost и прочих наворотов, превращающих cpp в C#. Осталось ещё исполнительную среду для cpp написать- C## готов.  smile 

Цитата(mes @  29.7.2010,  15:37 Найти цитируемый пост)
ну и о чем это говорит ? о том, что надо пихать в функцию побольше, или о том, что если иначе (по каким то соображением ) нельзя , то можно и 5 парамметров в функцию передать ?


И опять к нашим баранам... Читайте тему внимательнее, а потом высказывайтесь...  
PM MAIL   Вверх
bsa
Дата 29.7.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



Цитата(HellStranger @  29.7.2010,  16:17 Найти цитируемый пост)
Во-первых, посмотри накануне функции генерации системных и програмных прерываний стандартной библиотеки... Обрати внимание на объединения и структуры REGS, SREGS.

Посмотрел. Таких функций в стандартной библиотеке нет. Или ты ничем, кроме BC++ 3.1 не пользовался?
movedata - а это вообще интересная функция. Первый параметр у нее сегмент, второй смещение. Я уже ржу. Мы общаемся с человеком, который, видимо, только под DOS пишет. Гугл нашел упоминание этой функции только в контексте djgpp.
ГДЕ ТЫ ВИДЕЛ В СТАНДАРТНОЙ библиотеке Си (это такая библиотека, которая описана в стандарте "Язык программирования С", а не в документации к конкретному компилятору) какие либо упоминания прерываний и сегментов? Неужели, в защищенном режиме x86 есть сегменты? Неужели у ARM есть сегменты? Ах. да... DOS работает только x86 да и в реальном режиме... Тогда разговор у нас ни о чем.

Это сообщение отредактировал(а) bsa - 29.7.2010, 15:54
PM   Вверх
boostcoder
Дата 29.7.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: нет
Всего: 110



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

Добавлено через 55 секунд
Цитата(bsa @  29.7.2010,  15:53 Найти цитируемый пост)
Посмотрел. Таких функций нет в стандартной библиотеке нет. Или ты ничем, кроме BC++ 3.1 не пользовался?
movedata - а это вообще интересная функция. Первый параметр у нее сегмент, второй смещение. Я уже ржу. Мы общаемся с человеком, который, видимо, только под DOS пишет. Гугл нашел упоминание этой функции только в контексте djgpp.
ГДЕ ТЫ ВИДЕЛ В СТАНДАРТНОЙ библиотеке Си (это такая библиотека, которая описана в стандарте "Язык программирования С", а не в документации к конкретному компилятору) какие либо упоминания прерываний и сегментов? Неужели, в защищенном режиме x86 есть сегменты? Неужели у ARM есть сегменты? Ах. да... DOS работает только x86 да и в реальном режиме... Тогда разговор у нас ни о чем. 

 smile 
PM WWW   Вверх
HellStranger
Дата 29.7.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(bsa @  29.7.2010,  15:53 Найти цитируемый пост)
Посмотрел. Таких функций нет в стандартной библиотеке нет. Или ты ничем, кроме BC++ 3.1 не пользовался?movedata - а это вообще интересная функция. Первый параметр у нее сегмент, второй смещение. Я уже ржу. Мы общаемся с человеком, который, видимо, только под DOS пишет. Гугл нашел упоминание этой функции только в контексте djgpp.ГДЕ ТЫ ВИДЕЛ В СТАНДАРТНОЙ библиотеке Си (это такая библиотека, которая описана в стандарте "Язык программирования С", а не в документации к конкретному компилятору) какие либо упоминания прерываний и сегментов? Неужели, в защищенном режиме x86 есть сегменты? Неужели у ARM есть сегменты? Ах. да... DOS работает только x86 да и в реальном режиме... Тогда разговор у нас ни о чем.


Очень плохо смотрел, во-первых, во-вторых,  
Цитата(bsa @  29.7.2010,  15:53 Найти цитируемый пост)
Неужели, в защищенном режиме x86 есть сегменты?

это ещё раз доказывает, что сложные задачи обошли тебя стороной. О переходе в реальный режим не слышал?.. О переходе на 0-е кольцо защиты тоже?.. В самой архитектуре IA32/IA64 есть сегменты, есть страницы и ещё много всяких страшных слов! Есть дескрипторный таблицы, в которые средствами asm+C+WinAPI можно лазить своими грязными руками и творить с системой всё, что угодно. 
Каждый компилятор реализует стандартную библиотеку по своему. И одними функциями ввода/вывода и обработки символов системные задачи не решаются! Если не имеешь представления о низком уровне, то и не лезь, куда тебя не просят.

Это сообщение отредактировал(а) HellStranger - 29.7.2010, 16:03
PM MAIL   Вверх
bsa
Дата 29.7.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



Цитата(HellStranger @  29.7.2010,  17:01 Найти цитируемый пост)
Очень плохо смотрел, во-первых,

Назови номер страницы стандарта, в котором описаны эти функции. Пока что твое заявление голословно. Стандарт можно скачать тут: ISO/IEC 9899:1999 Programming languages - C

Цитата(HellStranger @  29.7.2010,  17:01 Найти цитируемый пост)
Каждый компилятор реализует стандартную библиотеку по своему.

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

Цитата(HellStranger @  29.7.2010,  17:01 Найти цитируемый пост)
О переходе в реальный режим не слышал?

ты про виртуальный x86? почему не слышал. Просто эту задачу выполняет современная ОС (Windows, в частности) при необходимости.
Цитата(HellStranger @  29.7.2010,  17:01 Найти цитируемый пост)
В самой архитектуре IA32/IA64 есть сегменты
ты случаем не про номер дескриптора, который загружается в сегментные регистры в защищенном режиме? А что по поводу ARM, Cell, MIPS скажешь? Там тоже это есть?

Цитата(HellStranger @  29.7.2010,  17:01 Найти цитируемый пост)
Есть дескрипторный таблицы, в которые средствами asm+C+WinAPI можно лазить своими грязными руками и творить с системой всё, что угодно.
Неужели Windows это позволяет делать вне нулевого кольца?  smile 

PM   Вверх
HellStranger
Дата 29.7.2010, 17:46 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -1
Всего: -1



Цитата(bsa @  29.7.2010,  16:55 Найти цитируемый пост)
В каждой ОС своя собственная реализация стандартной библиотеки. В некоторых (DOS, например), ее нет, поэтому она поставляется вместе с компилятором. Вот только между "своя реализация" и "свой стандарт" есть разница. 


Бред сивой кобылы! Стандартная библиотека, реализованная в MSVC и стандартная бибилиотека от Borland(Code Gear и т.д. и т.п.) имею совершенно разные дополнения, и реализованы зачастую совершенно по-разному! И производительность у них разная и т.д. и т.п. А ось одна! Под линём таже фишка, производитель компилятора поставляет вместе стандарную библиотеку, реализованную им же! Не позорься такими высказываниями! 

Цитата(bsa @  29.7.2010,  16:55 Найти цитируемый пост)
ты про виртуальный x86? почему не слышал. Просто эту задачу выполняет современная ОС (Windows, в частности) при необходимости.


А можно и програмно создать эту самую необходимость. 
Цитата(bsa @  29.7.2010,  16:55 Найти цитируемый пост)
ты случаем не про номер дескриптора, который загружается в сегментные регистры в защищенном режиме? А что по поводу ARM, Cell, MIPS скажешь? Там тоже это есть?


Кроме сегментных регистров есть регистры различных дескрипторных таблиц! IDTR, GDTR, LDTR. IDTR- Interrupt Descriptor Table Register. Думаю, понятно, за что он отвечает. Остальные по аналогии. На микроконтроллерах этого нет. Но речь была не об этом.

Цитата(bsa @  29.7.2010,  16:55 Найти цитируемый пост)
Неужели Windows это позволяет делать вне нулевого кольца?   


Могу дать книжку, где описывается такой финт ушами под 95-й виндой. Под XP и 7-ой немного по-другому, но смысл тот же... Менять записи в таблице прерываний, генерить нужное тебе и вызовется твой обработчик... уже на другом кольце защиты, нежели твоё приложение... А теперь сделай это на cpp как говорится со своим stl... smile))))))))))))

Цитата(bsa @  29.7.2010,  16:55 Найти цитируемый пост)
Назови номер страницы стандарта, в котором описаны эти функции. Пока что твое заявление голословно. Стандарт можно скачать тут: ISO/IEC 9899:1999 Programming languages - C


В дополнениях к стандартной библиотеке практически для любого компилятора есть функции генерации прерываний! Что такое стандартная библиотека сама по себе?.. Тот же stl, только проще и щустрее работает. Больших дел с ней не сделаешь...

PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.