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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
Akella
Дата 30.4.2013, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(k0rvin @  30.4.2013,  09:49 Найти цитируемый пост)
Но альтернативы для работы со старыми фокспрошными дбфками они не предоставили.

Они может и нет, но опять, можно использовать другие решения.
Хотя можно было через ADO/ODBC. Но это очень тормознутые технологии.
PM MAIL   Вверх
k0rvin
Дата 30.4.2013, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  30.4.2013,  10:00 Найти цитируемый пост)
Хотя можно было через ADO/ODBC. Но это очень тормознутые технологии. 

Кроме тормозов там есть еще какие-то проблемы с фокспрошными дбфками, сейчас навскидку не вспомню какие именно.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Beltar
Дата 30.4.2013, 12:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 7



Для работы с dbf без BDE мне компонент попадался, причем даже для 2009+ версия. Возможн есть и получше решения, вопрос только в том, нафига вообще использовать dbf.

Цитата

У тебя не решена задача удаления вершины из памяти после того, как удалена последняя связь с её участием. (Аргументы "это не нужно", "ты тоже не решил, у тебя магический тормозной GC" и прочие жалкие оправдания не принимаются.)


Ну поскольку у тебя GC, то тобой она и не решается. Х) Впрочем я уже вообще перестал понимать, что ты хочешь. Ну вызову я руками FreeAndnil, хотя в ряде случаев это даже не обязательно, т. к. многие контейнеры вроде TList'а могут получать право владения компонентом и при удалении объекта из списка, он будет удален автоматом. Заметь, подавляющее большинство удаляемых и создаваемых объектов размещаются как раз в контейнерах.

Кстати, жду лекцию по слабым ссылкам, и иным извратам для решения не решаемых GC проблем.

Цитата

Я двумя строчками проверил, что программа на 20 строчек запускается. Ты написал 50 (неработающих), а как добавить две строчки для проверки -- так сразу "о ужас, глубокий дебаг, ручное тестирование, ты зажрался" и прочие вопли. Под дельфи так сложно вывести две строчки в консоль, что работа несопоставима с написанием полусотни строк?


Если твой код оформить нормально до юзебельного класса, и сделать двунаправленные связи с весами, то он тоже распухнет до 50 строк из которых половина будет пустыми. Причем заметь у меня не было ни одного метода длиннее 3 строк кода. Вообще Delphi, как известно, не позволяет писать код сразу после объявления метода, поэтому код может выглядеть более громоздким. Ну так на то она и серьезный инструмент, чтобы не давать идиотам реализовать 100500 методов там, где все нормальные люди пишут удобную для ознакомления их спецификацию. А что касается тестирования, то я тебя ничего писать не просил. Скажи спасибо, что я вообще что-то там набросал, сейчас правда считаю, что перемудрил с классом как и ты с итератором. Кстати, ты сам в начале забыл, что у тебя ссылка в самой v5 остается. Ладно переписал, кстати, ЕМНИП на экране у меня твой текст не помещался, так что про 20 строк не надо.

Цитата

4. Пул pool решает упаковаться. Объекты в пуле изменяют адреса, параллельно изменяются адреса Wrapped в указателях list.
5. Функция Bar продолжает работать с адресом, по которому объекта уже не существует (либо на его месте "свободная ячейка", либо память вообще была освобождена, если пул решил расшириться).


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

Цитата

Твоё приложение -- это левое приложение для ручного тестирования целого куска функционала. Что, совсем разницы не ощущается?


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

Цитата

Вранье: как разместить экземпляры классы на стеке?


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

Цитата

2) Весьма бесполезное качество.


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

Цитата

there was never anything I coulnd't do with Delphi


Вряд ли кодера интересует тьюринговская трясина.

Цитата

Субъективный фактор.


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

Цитата

1) Вранье.
2) Многие компоненты платные, в отличие от Java.
3) Можно сказать не только про Делфи.


1) Ты лично убедился в этом?
2) А в жабе никто не зарабатывает компонентостроением? Бесплатного для Delphi тонны.
3) И о чем это свидетельствует?

Цитата

Скажи, если вершина имеет ссылку на другой объект (не другую вершину), должен ли Node.Free вызвать деструктор того объекта? А если этот объект не имеет других ссылок на себя? А если часть объектов графа имеют на сторонние ссылки на себя, а часть — нет?


Можно сделать, чтобы вызвал, а можно, чтобы не вызвал. Так сложно механизм владения что ли добавить?
Хотя можно усложнить задачу, пусть на вершины насаживаются объекты из какого-нибудь списка, объект может быть, как связан с вершиной, так и свободен. Мы удаляем вершину, и ее объект, если таковой есть, должен вернуться в список доступных для связывания. Охотно посмотрю, как GC поможет все здесь сделать силой мысли. Кстати, попутно демонстрируется слабая сторона ООП, деструктор вершины само собой ни о каком объекте, и куда его возвращать, не знает. Надо или писать внешний код, или делать хелпер для вершины, или создавать одноименного наследника (в Delphi можно, в др. языках не знаю).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
k0rvin
Дата 30.4.2013, 12:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
вопрос только в том, нафига вообще использовать dbf

Legacy софт.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Кстати, жду лекцию по слабым ссылкам, и иным извратам для решения не решаемых GC проблем.

О чем речь? Слабые ссылки есть везде.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Алле, гараж, для этого структуры есть. В 158-ой раз повторяю.

Т.е. если я захочу создавать объект по ситуации на стеке или в куче, то мне придется описать его дважды -- как запись и как класс? И про то, что у записей нет деструкторов тебе намекали и не раз. Попробуй повторить RAII-пример.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Впрочем классов в моем понимании я в плюсах и не вижу, аналог древних паскалевских обджектов, не более. 

Свое личное понимание можешь оставить при себе, оно никому не интересно.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Да ну, а вот сишники всех мастей уверены, что без фигурной скобки и выражений наполовину состоящих из знаков препинания жизни нет.

Вот поэтому это и субъективный фактор. Ты же понимаешь значение слова "субъективный"?

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Вряд ли кодера интересует тьюринговская трясина.

Т.е. ты не понял, почему этот пункт бессмысленен, чуть более, чем полностью?

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
1) Ты лично убедился в этом?

Да.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
2) А в жабе никто не зарабатывает компонентостроением? Бесплатного для Delphi тонны.

Кто-то пытается, кто-то наверное и зарабатывает. Но бесплатного море.

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
3) И о чем это свидетельствует?

О том, что это не делфи-специфичное утверждение. К.О.


Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Можно сделать, чтобы вызвал, а можно, чтобы не вызвал. Так сложно механизм владения что ли добавить?

Т.е. мне еще и в каждой коллекции механизм владения реализовывать?

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Мы удаляем вершину, и ее объект, если таковой есть, должен вернуться в список доступных для связывания. Охотно посмотрю, как GC поможет все здесь сделать силой мысли.

А при чем тут управление памятью вообще и GC в частности?

Цитата(Beltar @  30.4.2013,  12:01 Найти цитируемый пост)
Кстати, попутно демонстрируется слабая сторона ООП, деструктор вершины само собой ни о каком объекте, и куда его возвращать, не знает. Надо или писать внешний код, или делать хелпер для вершины, или создавать одноименного наследника (в Delphi можно, в др. языках не знаю)

ОМГ. Попутно демонстрируется ###дизайн. Скажи, как деструктор вершины может не знать про объект, если ссылка на него есть в вершине?

Это сообщение отредактировал(а) k0rvin - 30.4.2013, 13:35


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Guinness
Дата 30.4.2013, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А я вот подумал. GC удаляет объекты, если счетчик ссылок на область памяти, в которой расположен данный объект, равен нулю, так?
Теперь представим сложную структуру, в которой объекты могут ссылаться друг на друга. В данной ситуации, мы не получаем выиграша от использования GC, т.к. все равно необходимо обнулять все ссылки на данную область памяти. Та ли это?
PM MAIL   Вверх
k0rvin
Дата 30.4.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Guinness @  30.4.2013,  13:17 Найти цитируемый пост)
А я вот подумал. GC удаляет объекты, если счетчик ссылок на область памяти, в которой расположен данный объект, равен нулю, так?
Теперь представим сложную структуру, в которой объекты могут ссылаться друг на друга. В данной ситуации, мы не получаем выиграша от использования GC, т.к. все равно необходимо обнулять все ссылки на данную область памяти. Та ли это?

Не так. Далеко не все GC используют счетчики ссылок. Те, которые используют (например в Python), имеют доп.механизм для разруливания циклических ссылок. У остальных проблемы циклических ссылок не возникает.

Или ты не об этом?

Это сообщение отредактировал(а) k0rvin - 30.4.2013, 13:36


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Guinness
Дата 30.4.2013, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(k0rvin @  30.4.2013,  13:33 Найти цитируемый пост)
Не так. Далеко не все GC используют счетчики ссылок. Те, которые используют (например в Python), имеют доп.механизм для разруливания циклических ссылок. У остальных проблемы циклических ссылок не возникает.Или ты не об этом?

Ну не только про циклические ссылки. Допустим на один объект ссылается несколько других. Для того чтобы удалить данный объект, мне необходимо обнулить ссылки во всех остальных? 
А то я что-то запутался в вашем споре: (ручное освобождение памяти) vs GC =)
PM MAIL   Вверх
serger
Дата 30.4.2013, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



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


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Athari
Дата 30.4.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



@Beltar

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

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

Цитата
Кстати, жду лекцию по слабым ссылкам, и иным извратам для решения не решаемых GC проблем.

Слабые ссылки -- это способ ещё проще решить задачу удаления ненужных данных из памяти, даже null присваивать не надо. Это не решение проблемы, это дальнейшее упрощение работы с памятью относительно уже упрощённой и удобной.

Цитата
Если твой код оформить нормально до юзебельного класса, и сделать двунаправленные связи с весами

Начерта мне веса и двунаправленность? У меня связный ориентированный граф без весов, для демонстрации возможностей GC этого более, чем достаточно. Если наворотить фич, то кода будет много, и будет менее наглядно. Но суть-то не изменится.

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

Цитата
Кстати, ты сам в начале забыл, что у тебя ссылка в самой v5 остается.

Нормальные люди вообще-то не беспокоятся о наиболее скором удалении из памяти 16 байт посреди метода, который выполняется за 0.001 мс. Это ты настоял.

Цитата
Не находишь, что при упаковке с помощью GC имеет места та же проблема?

Я ж тебе сказал: на GC не ссылайся, в твоём мире его не существует, это тёмная магия, к тому же тормозная и всё такое. Как я буду решать проблему изменения указателя в шарпе -- я знаю. А вот ты -- нет.

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

Мы решаем реальные задачи. Если тебе сказали, что "нужно выделить список в памяти одним куском", это не значит, что такой список должен быть один на всё приложение. Разумеется, речь идёт про реальные приложения с сотнями и тысячами классов. И пул, разумеется, нужен не для одного класса, а больше. И вот в этой ситуации именно ты предложил слить всё в одну кучу, надругавшись над ООП.

Цитата
Автоматом выводящее сразу всю отрисовку.

"Автоматом" -- это когда результат проверяется компьютером.

Цитата
Впрочем классов в моем понимании я в плюсах и не вижу, аналог древних паскалевских обджектов, не более.

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

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

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

@Guinness

Цитата
А я вот подумал. GC удаляет объекты, если счетчик ссылок на область памяти, в которой расположен данный объект, равен нулю, так?
Теперь представим сложную структуру, в которой объекты могут ссылаться друг на друга. В данной ситуации, мы не получаем выиграша от использования GC, т.к. все равно необходимо обнулять все ссылки на данную область памяти. Та ли это?

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

Можно здесь почитать: http://en.wikipedia.org/wiki/Garbage_colle...mputer_science) (в русской статье тоже что-то есть, но английская более подробная).

Цитата
Допустим на один объект ссылается несколько других. Для того чтобы удалить данный объект, мне необходимо обнулить ссылки во всех остальных? 

Если на объект что-то ссылается, то его не нужно удалять, не так ли?
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Guinness
Дата 30.4.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Athari @  30.4.2013,  13:53 Найти цитируемый пост)
Если на объект что-то ссылается, то его не нужно удалять, не так ли?

Почему? Абсолютно не факт. 
Допустим есть у Вас объект User. Объект уникален, и вроде как является сущностью. Т.е. копировать его весьма нежелательно, ибо отслеживать изменения в каждой части программы данного объекта, тем самым поддерживая его целостность, не самая приятная задача.
Таким образом мы передаем указатель(ссылку на него) различным нуждающимся в нем объектам. В одном из них есть возможность вызвать метод удаления User. Вот мы его вызвали, как GC мне поможет обнулять ссылки?
PM MAIL   Вверх
k0rvin
Дата 30.4.2013, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Guinness @  30.4.2013,  14:05 Найти цитируемый пост)
Допустим есть у Вас объект User. Объект уникален, и вроде как является сущностью. Т.е. копировать его весьма нежелательно, ибо отслеживать изменения в каждой части программы данного объекта, тем самым поддерживая его целостность, не самая приятная задача.
Таким образом мы передаем указатель(ссылку на него) различным нуждающимся в нем объектам. В одном из них есть возможность вызвать метод удаления User. Вот мы его вызвали, как GC мне поможет обнулять ссылки?

И как должны отреагировать остальные части программы на отсутствие пользователя?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Guinness
Дата 30.4.2013, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(k0rvin @  30.4.2013,  14:15 Найти цитируемый пост)
И как должны отреагировать остальные части программы на отсутствие пользователя?

А обязательно, чтобы была реакция?
Допустим какие-то удалятся, т.к. не имеют смысла существования без данного объекта. Какие-то уберут некоторую строчку в гуи(или что-нибудь перерисуют) . Другие хранят список пользователей, соответственно, нужно удалить его оттуда. Кто-то должен по сети уведомить об удалении. Ну мало ли как должна реагировать программа.
С пользователем, наверно, не очень удачный пример, просто это была первая сущность, которая пришла в голову.
PM MAIL   Вверх
serger
Дата 30.4.2013, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Athari @  30.4.2013,  14:53 Найти цитируемый пост)
Если на объект что-то ссылается, то его не нужно удалять, не так ли? 

циклические ссылки


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Guinness
Дата 30.4.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(serger @  30.4.2013,  14:39 Найти цитируемый пост)
циклические ссылки

Тут более интересен другой вопрос. А что можно считать циклической ссылкой? Допустим у меня есть 10 объектов ссылающихся друг на друга.
В 1-ом случае, это какая-то часть структуры, которую я бы хотел удалить.
Во 2-ом - десять объектов работающих в системе независимо от остальных.

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

Это сообщение отредактировал(а) Guinness - 30.4.2013, 14:46
PM MAIL   Вверх
k0rvin
Дата 30.4.2013, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(serger @  30.4.2013,  14:39 Найти цитируемый пост)
циклические ссылки 

Про это уже писали выше. У полноценных GC этой проблемы нет. У GC с подсчетом ссылок есть спец костыли для этого.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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