|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
AutoLisp и база данных SQL-сервера
Регистрация: 10.12.2008
Сообщений: 122
|
||
Просмотров: 22777
|
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Вопрос очень расплывчат, неуказан тип сервера, неизвестно в каком виде хранятся данные в таблицах,
хотя проблема вполне решаема, к примеру представим, что сервер MySQL, находится на локальной машине, на ней установлен ODBC 3.51 Driver имя пользователя root без пароля, посмотри в каком виде вернется результат и дальше строй и ресуй все, что тебе нравится обязательно поблагодари создателей библиотеки ADOLISP_Library, для начала вроде все. Твой код примерно будет выглядеть так: Код:
|
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Holon, отвечаю тебе на вопрос.
Тип сервера - sql server 2000 (MSDE). В таблице 1-й столбец BUR (data type - nvarchar(6)) - номер, 2-й столбец - YY (data type - float) - координата по Y, 3-й столбец - XX (data type - float) - координата по X, 4-й нам не нужен, и 5-й столбец - GL (data type - float) - глубина (т.е. расстояние от точки (X,Y) до второй точки в линии) Примерно выглядит вот так - BUR YY XX ZZ GL 00001 8014 16761 145 ....... ...... ....... ...... Сервер находится на локальной машине (MAXIM - название сервера) |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
В общем случае:
1. Надо иметь OLEDB Provider для соответствующего SQL-сервера. Для MS SQL это штатная msado15.dll (или более свежая версия). 2. Иметь набор библиотечных функций для работы из VisualLISP с SQL-сервером, путем отправки SQL-запросов. За основу можно взять ADOLisp вот здеся http://acad.fleming-group.com/index.html 3. Написать собственные функции для преобразования данных, полученных из БД в стребуемый вид, например в списки координат для рисования отрезков, полилиний и чего угодно. 4. Здесь не надо делать никакого стороннего приложения - именно из LISP и внутри AutoCAD. А вот редактирование самой БД, с визуальными средствами, может быть сделано и сторонним приложением. Еще лучше - COM-сервером, с которым тот же LISP будет работать. Заодно и координаты в таблицу БД будет легче отправлять. |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
ShaggyDoc, OLEDB Provider есть, в AutoCad 2007 встроен DbConnect Manager, а вот с третьим проблематично, написать собственные функции для преобразования я не смогу, вот и прошу вас о помощи. В общем то я понимаю как это должно выглядеть, а вот если в частном - не знаю как написать, подскажи хотя бы одну функцию для преобразования, буду благодарен.
|
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Какая проблема создать "Юзверя" с паролем?
Код:
; 21 forms loaded from #<file "U:/LISP/TEST_PRG/ADOLISP_Library.lsp"> ; 3 forms loaded from #<editor "U:/LISP/TEST_PRG/wwp_forum.LSP"> _$ Последний раз редактировалось Holon, 10.12.2008 в 15:22. |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Connecting to the database using
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=MAXIM\basa;Initial Catalog=bur31" Connection failed! Visual LISP message Automation Error. Недопустимый атрибут строки подключения Description Недопустимый атрибут строки подключения HelpContext 0 HelpFile NativeError 0 Number -2147467259 SQLState 01S00 Source Microsoft OLE DB Provider for SQL Server Description [DBNETLIB][ConnectionOpen (Connect()).]SQL-сервер не существует, или отсутствует доступ. HelpContext 0 HelpFile NativeError 17 Number -2147467259 SQLState 08001 Source Microsoft OLE DB Provider for SQL Server Description Не удается инициализировать поставщика данных. HelpContext 0 HelpFile NativeError 31 Number -2147467259 SQLState 08001 Source MSDataShape |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
я переделал строку "Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=MAXIM\\basa;Initial Catalog=bur31" в "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa". подключение вроде как идет, только не пускает на сервер.
Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Connection failed! Visual LISP message Automation Error. Недопустимая спецификация авторизации Description Недопустимая спецификация авторизации HelpContext 0 HelpFile NativeError 0 Number -2147467259 SQLState 28000 Source Microsoft OLE DB Provider for SQL Server |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
создаю нового пользователя, прописываю, программа пишет
Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=baza_pgu" Connection failed! Visual LISP message Automation Error. Login failed for user 'GILS'. Reason: Not associated with a trusted SQL Server connection. Description Login failed for user 'GILS'. Reason: Not associated with a trusted SQL Server connection. HelpContext 0 HelpFile NativeError 18452 Number -2147467259 SQLState 42000 Source Microsoft OLE DB Provider for SQL Server |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
все разобрался, выдает
Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 00001));" Result: Succeeded! Disconnecting from the database (("YY") (8014.5)) что дальше делать? |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
тебе надо поиграться, с учетными записями, и для проверки я надеюсь,что ты
незабываешь вносить в эту строку пользователя и пароль: Код:
не имеет права доступа к этой таблице, видишь вот здесь он ругается: Visual LISP message Automation Error. Login failed for user 'GILS'. Reason: Not associated with a trusted SQL Server connection. |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
вывела обе точки:
Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 00001));SELECT XX FROM bur31 WHERE ((([BUR]) = 00001));" Result: Succeeded! Disconnecting from the database (("YY") (8014.5)) (("XX") (16761.0)) |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
По аналогии
Код:
Потом данные нужно привести к нормальномы виду! вот на своей машине я попробовал работу функции, присвоил результату твои значения и привел их к нужному виду Код:
Код:
|
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Я могу написать , что это тебе даст, лисп который берет координату одной точки из строки в таблице базы
"00001" и "00005" и построит между ними линию, я думаю задача не заключается в этом, она намного шире, здесь только пример работы с базой, опиши конкретную задачу с окончательным результатом |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Дано - БД с таблицей, в которой 5 столбцов: 1 - BUR (номер), 2 - YY (координата по оси Y), 3 - XX (координата по оси X), 4 - дата (этот столбец нам не нужен), 5 - GL (глубина, т.е. расстояние от (XX,YY) до любой произвольной точки T1).
Результат - нужно связаться с БД, взять информацию о 1,2,3,5 , исходя из этой информации построить линию (перпендикуляр) от точки (XX,YY) до точки T1. Но перед построением лисп должен спросить номер (BUR), по которому нужно сделать линию (или несколько номеров). Или - есть карта, на которой отмечены эти все номера. Выбираем на карте эти номера, нажимаем какую-нибудь кнопку, и в другом окне строится эта линия. Вроде бы все. |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Сложность заключается в том, что на моей машине не установлен сервер MS SQL,
и мне придется все делать вслепую, конечно можно попробовать, тогда тебе придется присылать мне разультаты тестов, для начала изменим вызов функции, добавим в нее аргумент теперь вызов функции в командной строке будет выглядеть так: Код:
Код:
можно было продолжить. |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
И еще, ты меня наверно не допонял чуть-чуть. В базе кроме номера, координаты по X и координаты по Y, есть очень важный аргумент GL - 5-й столбец. В нем хранится длина линии, которую нужно нарисовать. От точки с координатами (XX,YY) до точки, которую можно определить, как я понимаю, через функцию POLAR - определение точки путем перемещения от точки (XX,YY) на расстояние GL (это обязательный аргумент). А в скрипте я не вижу его.
|
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Заработало, только ты прочитай мое предыдущее сообщение по поводу GL.
Команда: (if(setq bur (getint "Enter a number bur: "))(qqq bur)) Enter a number bur: 1 Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 1));SELECT XX FROM bur31 WHERE ((([BUR]) = 1));" Result: Succeeded! Disconnecting from the database (("YY") (8014.5)) (("XX") (16761.0)) |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Запрос по GL возвращает:
Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 5));SELECT XX FROM bur31 WHERE ((([BUR]) = 5));SELECT GL FROM bur31 WHERE ((([BUR]) = 5));" Result: Succeeded! Disconnecting from the database LINE Укажите первую точку: Укажите следующую точку или [Undo]: Укажите следующую точку или [Undo]: Команда: (("GL") (15.0)) главное чтобы координаты совпадали, и размер на чертеже. а можно будет вывести систему координат x и y вместе с этой линией? |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Ну так линию рисует правильно или нет, и куда нужно дорисовать (("GL") (15.0)),
или уже все нормально, только надо вывести на экран текст с координатами точек, тогда сообщи имя стиля, или можно стиль тоже создать програмно, тогда скажи имя используемого "фонта" его высоту, или может быть блок с атрибутами и заполнить его програмно, кстати все можно вынести в отдельные слои и т.д.? |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
линию вообще не рисует, в том то и дело. точки XX и YY это одно целое, линия должна идти не от XX до YY, а от точки (XX,YY) до произвольной точки на плоскости на расстоянии GL. Выкладываю рисунок, в котором показано что должно быть на выходе. Стиль можно взять любой, на твое желание, пока это не важно, главное чтобы рисунок выходил, как я понимаю, потом можно будет поменять, на такой какой нужен. (по умолчанию у меня acadiso.dwt)
|
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
пишет
Enter a number bur: 427 Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 427));SELECT XX FROM bur31 WHERE ((([BUR]) = 427));SELECT GL FROM bur31 WHERE ((([BUR]) = 427));" Result: Succeeded! Disconnecting from the database ; error: no function definition: RESULT->POINT |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
я поменял значения YY на 1014.5 и XX на 1761.0 теперь нарисовал, как то нужно к координатам AutoCad привязать, а то программа не видит линию на выходе при больших значениях X и Y. При открытии Autocad у меня max значение по X - 2900, а по Y - 1100
|
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
все работает, пишет
Команда: (if(setq bur (getint "Enter a number bur: "))(qqq bur)) Enter a number bur: 763 Connecting to the database using "Provider=SQLOLEDB.1;Data Source=MAXIM;Initial Catalog=basa" Result: succeeded! Inserting a row: "SELECT YY FROM bur31 WHERE ((([BUR]) = 763));SELECT XX FROM bur31 WHERE ((([BUR]) = 763));SELECT GL FROM bur31 WHERE ((([BUR]) = 763));" Result: Succeeded! Disconnecting from the database Select point by BUR <Quit> : _LINE Укажите первую точку: Укажите следующую точку или [Undo]: Укажите следующую точку или [Undo]: после этого я нашел на чертеже эту линию, сейчас главное чтобы она была видна сразу на чертеже, и скажи, пожалуйста, можно сделать так, чтобы программа сразу рисовала линию, не ставив точку на чертеже, т.е. опускала перпендикуляр от точки (XX,YY) на расстояние GL |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
zoom работает, линию нарисовал прямо на чертеже, пишет
Команда: test Select point by BUR <Quit> : _LINE Укажите первую точку: Укажите следующую точку или [Undo]: Укажите следующую точку или [Undo]: Команда: ZOOM Specify corner of window, enter a scale factor (nX or nXP), or [All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: _w Укажите первый угол: Укажите противоположный угол: Regenerating model. Команда: nil теперь как обойтись без перехода на чертеж, чтобы линия была нарисована как перпендикуляр от точки (XX,YY) на расстоянии GL |
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
перпендикуляр нарисовался. теперь задача усложняется. в БД есть координата по Z (4-й столбец - "ZZ"). нужно нарисовать в координатной плоскости (X,Y) окружность с центром в точке (XX,YY) - рисунок ris1.jpg, а при переходе в координатную плоскость (X,Z) цилиндр с двумя окружностями, соединенными линиями, на расстоянии GL - рисунок ris2.jpg.
|
|||
![]() |
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Добрый день. Есть приложение на AutoLisp, которое рисует линию с координатами, взятыми из БД sql-сервера. Но оно рисует только одну линию по запросу номера линии. Нужно чтобы оно рисовало множество линий, сколько запросишь, и номер, который запросишь. Помогите, пожалуйста, вот листинг этого приложения.
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Макс_Кунгур, во-первых, теги не забывай проставлять
Во-вторых, нефиг плодить темы. Я их объединил.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 19
|
Тут http://allforproject.ru/primer-raboty-koda-lisp-s-subd/ можно посмотреть
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
|
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Осталось научиться подключаться и работать с БД. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Подскажите. Насколько реально узнать сервер логин и пароль к БД при использовании ADOlisp через vlx?
Касаемо защиты самой БД и доступа к ней. Скажем в БД будет список пользователей и "уровень" использования программы и информации из БД. Перехватить доступ к БД насколько легко? |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
tujn08, не хватает данных. База локальная или в сети, если в сети, то как Вы собираетесь подключаться к БД, какой протокол, какой туннель, какое шифрование?
Ответ на Ваш вопрос зависит от мелочей... а их Вы не обозначили. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Я понимаю, что изложенное ниже простой пользователь вряд ли будет делать и сомневаюсь, что Ваша программа настолько ценна, что это все будет оправдано, но:
1. Тут посмотрите про хранение настроек к ODBC подключению, вроде в реестре и в открытом виде... 2. Любой фаерволл покажет к какому адресу Ваше программа хочет подключиться, соответственно никто не помешает перенаправить ее на "свой" MySQL сервер, который даст доступ при любом логине и пароле подключения и который запишет все запросы, т.е. будет понятно что ваша программа хочет получить от сервера и вероятно всего и логин с хешом пароля будет известен (логины и хеши паролей то же внутри базы лежат, в отдельной таблице и соответственно вполне вероятно попадают в лог при запросах, тут посмотрите ) Все что выше - ИМХО и специалисты меня поправят и дополнят |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
|
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
trir, да... В этом направлении и думал.
Boxa, ценность конечно под сомнением, но все же. Ну скажем коммерческое использование программы. А в БД хранится список тех кто может ей пользоваться и в какими функциями и/или информацией из БД. Как-то так. Конечно куча проблем появляется: отсутствие инета и работа приложения в этом случае самые главные. Спасибо! Как и думал - особо не защититься. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Спроси BearDyugin'а
|
|||
![]() |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
хороший пример того "как не нужно делать"
я загрузил и попробовал утилиту для отрисовки откосов на простейшем же контуре получил краш, нарисовал по другому - получил какую то фигню вместо откосов а все потому, что автор слишком много времени уделил защите, вместо тестирования пс защита тоже вроде не совсем ОК два часа убил, но все-таки разобрался как получить валидный код |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Про защиту спросил, там нет БД. Активация должна быть быстрой и программах того автора. |
|||
![]() |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
сколько уходит времени собственно на саму активацию я не знаю
у меня ушло два часа на то что бы получить ключ даром/нелегально путем анализа работы процедуры проверки а по поводу защиты своих безценных твоений неоднократно и весьма убедительно высказывался ShaggyDoc так что, да, не нужно заморачиваться особо с защитой |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Как показывает мировой опыт, единственная хорошая защита, это когда вы свой код никому не даёте. Если посмотреть, то все больше компаний идут именно в этом направлении (облака там всякие...) Толку взламывать клиент, если вся обработка и все вычисления, ведутся у Вас не сервере и все данные хранятся там же и код тоже на сервере.
|
|||
![]() |
|
||||
Цитата:
Цитата:
Вы уж определитесь - то пишете, что не надо много времени защите уделять, то тут же - что защита слабая. Что за шатания туда-сюда? Чисто потроллить? Цитата:
Да и вообще, что за пренебрежительно-снисходительное отношение? "Эксперд детектед"? Человек занимается профессионально геодезией. А в свободное от работы время пишет приложения полезные, которые очень многие его коллеги довольно высоко оценивают. Так что, не надо, не зная фактов, нести чушь! Сделайте доброе дело - напишите автору приложений, приложите файл, опишите обстоятельства возникновения ошибки. Он будет очень благодарен.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Цитата:
Невозможно предусмотреть методы работы/оформления всех проектировщиков. |
|||
![]() |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
Offtop: в программе Откос имеются функции со знакомыми названиями_LISPRU-PROGRESS-START, _LISPRU-PROGESS-CONTINUE, _LISPRU-PROGRESS-CMD
надеюсь автор из прибылей немного отстегивает kpblc-у? Цитата:
хорошо, что пишет хорошо, что высоко оценивают Do$, у нас тут разговор как бы о другом заводи отдельную тему, если интересно |
|||
![]() |
|
||||
Ну надо же! Вспомнили про оффтоп! Похвально!
Так-то, если внимательно посмотреть на название темы, то оффтоп тут - последние сообщений 10, в том числе и Ваши "удалые" посты о взломе чужого ПО. Поздновато спохватились. По поводу использования сторонних функций в ПО "Откос" - обратитесь к разработчику и/или автору функций. Я не в курсе кто кому "отстёгивает" и "отстёгивает" ли. Также, у меня нет информации о том, как разрешает использовать свои функции их автор. В любом случае, это никак не оправдывает взлом чужих приложений и распространение информации о качестве их защиты и о времени, которое требуется на её обход.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
Offtop: это хорошо
просто ты так разволновался, я подумал уж не родственник ли он твой о каком-то взломе все время упоминаешь, ты о чем вообще? кстати, может кто знает, какая политика у автодеска по поводу использования ворованного кода в своих программах? если, например, жалобу настрочить (чисто гипотетически) в Autodesk App Store, то они выпилят такое приложение из магазина? |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Цитата:
Кстати, обвинения в воровстве, неплохо бы подтверждать доказательствами, что код именно украден и его использование нарушает какую бы то ни было лицензию, а не взят из публичного источника с BSD или подобной лицензией. |
|||
![]() |
|
|||||
Вопрос от Vov.Ka:
Отвечает Vov.Ka: Цитата:
Цитата:
Меня, как разработчика, очень возмущает тот факт, что кто-то считает совершенно нормальным явлением поковыряться в системе защиты чужих приложений, найти способ обойти её и вынести на общее обозрение свои умозаключения. Цитата:
Цитата:
P.S. Приостановят, если сочтут предоставленные данные достаточно убедительными. Так что, вы уж постарайтесь (чисто гипотетически)!
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) Последний раз редактировалось Do$, 25.06.2019 в 12:24. |
|||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
База данных Лира | Koker | Лира / Лира-САПР | 4 | 28.08.2006 15:47 |
База данных площадей помещений с привязкой к замкн. контуру. | elena_din | AutoCAD | 19 | 19.08.2005 13:40 |
база данных программы Autodesk Building Systems 2005 | Angel80 | Прочее. Программное обеспечение | 3 | 06.10.2004 06:28 |