On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
moderator


Пост N: 1252
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.06.18 22:47. Заголовок: ADS Remote тормоза по TCP/IP


Поднят VPN и через него получили виртуальную сеть, на одном из компов которой установлен сервер ADS и базы
На другом компе этой сети установлена клиентская программа. Параметры подключения прописаны в ADS.INI
В итоге клиент конектится к серверу , но навигация по бровсам жуть как тормозит. Пробовал в ini указать принудительно подключаться через UDP/IP - в результате те же яйца , только в профиль , тормозит по прежнему. В бренмауре порты и протоколы разрешены , TCPView при любом протоколе указанном в ini упорно показывает что пакеты идут только через TCP/IP. Подробнее тут, указывая UDP пакеты идут по TCP, но если в брендмауре запретить UDP - то клиент перестает конектиться. Никак не пойму что за шляпа с этим ADS в протоколах По идее UDP пошустрее должен быть.

Дальше еще интереснее, если клиента цепануть к базам через local server то тормозов нет, реально рагница раз в 10 по быстроте реакции.
Может проблема в том что ADS сервер поднят на обычной Win7 , и у нее есть какие нибудь ограничалки на TCP ? Имеет ли смысл там поставить серверную винду ?

Как первопричину тормозов вижу еще и хреновый интернет канал на компе с ADS. SpeedTest кажет 15 мегабит, на компе с ADS и 10 мегабит на компе клиента, но тупое копирование на расшаренную папку между компом клиента и компом ADS показывает в фаре скорость 70 - 300кб/с что в принципе мало для 15 мегабит.

Коллеги , может есть у кого мысли в каком порядке бороться с тормозом ? Начинать в серверной ОС или не стоит, заняться каналом интернет и пр. пока склоняюсь к каналу, по гложат сомнения и по поводу Win7 т.к. клиентов будет штук 20

PS. VPN поднят через OpenVPN на VDS в 100 МВ/С, в другой компании аналогичная связка отлично работает , но там и win server и канал шире.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 36 , стр: 1 2 All [только новые]


администратор




Пост N: 6848
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.06.18 22:53. Заголовок: Надо пробовать вариа..


Надо пробовать варианты Игорь которые ты выше и изложил.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1253
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.06.18 22:57. Заголовок: Dima пишет: Надо пр..


Dima пишет:

 цитата:
Надо пробовать варианты Игорь которые ты выше и изложил.



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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1442
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.06.18 08:29. Заголовок: Может пригодится: ht..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1444
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.06.18 08:53. Заголовок: Еще можно посмотреть..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6849
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.06.18 09:14. Заголовок: Haz Попробуй такую ..


Haz
Попробуй такую установку AdsRightsCheck( .F. )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1445
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.06.18 09:28. Заголовок: Про UDP: я как-то не..


Про UDP: я как-то не совсем представляю, как можно с БД работать по этому протоколу. В нём не гарантируется доставка пакетов. Т.е., клиент что-то запросил, а оно может либо не дойти до сервера, либо ответ сервера исчезнет полностью или частично.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6850
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.06.18 12:39. Заголовок: PSP https://devzone..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1446
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.06.18 13:36. Заголовок: Там кроме этого USE_..


Там кроме этого

 цитата:
USE_UDP_IP
This setting controls the communication protocol between the client and Advantage Database Server. The setting specified here will be used only if the connect request from the client did not specify a communication type. The client-specified connection parameter overrides this setting if they are given. Setting this value to 1 will force the client to use the UDP/IP protocol when communicating with the server.


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1254
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 16:38. Заголовок: Все перепробовал. M..


Все перепробовал.
MTU , размер буфера приема передачи у OpenVpn , отключение шифрование и компресии и тд.
Добиться быстроты в бровсе не удалось, шевелится еле еле .
пинги от клиета до сервера VPN 15 - 20 милисек , от двух точек в сумме примерно 30 , то есть вроде как гарантированные 10 мегабит есть.
Не самый лучший канал, но и не полный треш. Пока не знаю как побороть , может это у ADS кривая реализация с пакетами , на 100 мегабитном канале этого не замечал )



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1447
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.06.18 17:01. Заголовок: Просто возьми, к при..


Просто возьми, к примеру, и временно подними серверную часть на другом компе (другой провайдер, к примеру), но с теми же настройками, а клиента оставь того же. Потом наоборот: клиент на другом компе, а сервер прежний. Думаю, что-то прояснится.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6851
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.06.18 17:36. Заголовок: Haz Advantage Data ..


Haz
Advantage Data Architect так же ведет себя тормознуто ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1255
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 17:40. Заголовок: Dima пишет: Advanta..


Dima пишет:

 цитата:
Advantage Data Architect так же ведет себя тормознуто ?


да , есть немного , но не так как программа



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1256
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 18:02. Заголовок: PSP пишет: Просто в..


PSP пишет:

 цитата:
Просто возьми, к примеру, и временно подними серверную часть на другом компе


делал почти так .
Повторюсь о том как реализовано.
На VDS под линукс установлен OpenVPN сервер . там канал 100 МВ
На двух клиентских машинах ( в разных частях города ) поставлен OpenVPN клиент, на одном из клиентов установлен ADS сервер на другом ADS клиент.
Таким образом оба клиента VPN сети прекрасно видят друг друга и ADS клиент успешно цепляется к ADS серверу
Пинг от любого клиента к OpenVpn серверу примерно 15- 20 мс , соответственно между OpenVpn клиентами получаем примерно 30-35 . что приемлемо .
Потери пакетов есть но редко. А вот тормоза в TSBrowse - жуть

Что пробовал:
1) ставил VPN клиентов и дома и на работе и еще где - тормозит
2) буфер приема передвчи OpenVpn увеличил до с 8к до 512к ( согласно рекомендациям из форумов ) - тормозит
3) MTU увеличил чуть больше размера пакета - без разницы
4) ставил оба VPN клиента в одной сети ( при этом они общались через OpenVpn сервер ) - тормозит
5) в ADS.INI перепробовал все - тормоза как были так и есть
6) компресиию и шифрование VPN отключал - не влияет

Что работает:
1) Отлично работает по RDP между VPN клиентами . Но это W7 без лицензии терминалов и соответственно только одно подключение.
Не знаю сколько клиентов может потянуть обычный комп ( не серверное железо)
2) Отлично работает ADS LOCAL сервер ( тк всеже в одной сети оба клиента ) пока остался на нем , до 5 рабочих мест терпит, потом надо думать

вот эти два варианта пока и рассматриваю. может что еще найду




Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3747
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.06.18 18:18. Заголовок: Haz пишет: А вот то..


Haz пишет:

 цитата:
А вот тормоза в TSBrowse - жуть



Попробуйте забить значения для :bKeyNo, :bKeyCount, :bLogicLen пустышками, вроде:
oB:bKeyNo := {|| 1}

что-то изменится ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1257
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 21:55. Заголовок: Pasha пишет: Попроб..


Pasha пишет:

 цитата:
Попробуйте забить значения для :bKeyNo, :bKeyCount, :bLogicLen пустышками, вроде:
oB:bKeyNo := {|| 1}


Попробую завтра на работе. Активные индексы использую редко. Не уверен что сработает. По любому спасибо за идею, поэксперементирую. Tsbrowse при прорисовке каждую запись по несколько раз дёргает, замечал ранее. Все на потом откладывал поиск ответа на вопрос почему. Может как раз эти блоки дурят.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1894
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.18 22:13. Заголовок: Haz пишет Tsbrowse ..


Haz пишет
 цитата:
Tsbrowse при прорисовке каждую запись по несколько раз дёргает


Это так, думаю исторически получилось (не в сети быстро по дбф крутит).
У себя сделал массив (= :nRowCount()) для RecNo отображаемых записей, что бы в дальнейшем при повторных пробегах не рисовать, ..., но не доделал

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1258
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 23:03. Заголовок: SergKis пишет: У се..


SergKis пишет:

 цитата:
У себя сделал массив (= :nRowCount()) для RecNo


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1895
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.18 23:33. Заголовок: Haz пишет не сообраз..


Haz пишет
 цитата:
не сообразил как ловить изменения которые кто то по сети в этих записях сделал.


Делаю кнопку <Refresh> или по timer (раз в nn сек.) refresh - достаточно по мну.

 цитата:
Получается надо не массив о саму прорисовку ковырять на предмет лишних дерганий


Мне показалось, заполнять массив :nRowCount() x :nColCount() и отображать по нему, перспективнее.
Отображение по массиву пусть бегает, обращений к серверу нет, до след. refresh(.T.) или скролинга.
Но ... "цигель-цигель ай люю" (c)

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1259
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.06.18 23:41. Заголовок: SergKis пишет: .. &..


SergKis пишет:

 цитата:
.. "цигель-цигель ай люю" (c)


Есть над чем подумать. К примеру в ads есть тип поля время модификации записи. Можно держать в том же массиве и проверять по нему


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1896
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.18 23:56. Заголовок: Haz пишет К примеру ..


Haz пишет
 цитата:
К примеру в ads есть тип поля время модификации записи


В letodb имею в о всех таблицах оное. Практикую отбор таблиц в localhost temp (можно mem:) в начале работы, потом (практически перед каждым окном) делаю по списку нужных <table>_Select() по времени модификации от предыдущей. все быстро. TsBrowse работает на lokalhost, сам понимаешь как. Все это, конечно, борьба с TsBrowse скоростью. Это, в целом, несколько усложняет код, но не так напрягает, как ситуевина у тебя выше.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1897
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.18 00:02. Заголовок: PS На сервере имею T..


PS
На сервере имею TAG на время модификации, по нему выборки оч. быстрые

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1260
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.06.18 09:08. Заголовок: Оптимизация прорисов..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1898
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.18 10:24. Заголовок: Haz пишет Будет пос..


Haz пишет
 цитата:
Будет посвободнее займусь


Улыбнуло, сам все время так мыслю ...

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


По мне, надо перевести все отображение на внутр. массив и внутренние данные типа ordKeyCount(), LastRec(), ...
Их запрашивать с сервера при refresh(.t.), скролах. тогда же подчитывать и в массив.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1261
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.06.18 15:30. Заголовок: Pasha пишет: Попроб..


Pasha пишет:

 цитата:
Попробуйте забить значения для :bKeyNo, :bKeyCount, :bLogicLen пустышками, вроде:
oB:bKeyNo := {|| 1}



Да , по скорости прогресс хороший , Правда вся навигация съехала

Причем достаточно :bKeyNo, :bKeyCount уже можно работать

В итоге :

1)на OpenVPN отключено шифрование
2)MTU = 48000
3)Буфер приема передачи = 512к
4) :bKeyNo, :bKeyCount := {|| 1}
5) Справочники читаются через хеш а не из бызы

и система ожила, работает не как по локалке , но шустро

PPS
это все же убрал , оказалось влияет на скорость не так существенно
4) :bKeyNo, :bKeyCount := {|| 1}



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1262
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 16:29. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо перевести все отображение на внутр. массив


Вобщем-то ты прав. По сути получится то же окно через которое смотрим на базу. Размер окна равен размеру бровса.
В базу нужно добавить поле штампа времени модификации записи. В бровс массив времени можификации записи по последней выборке из строки. По таймеру запускать процедуру проверки этих значений и при необходимости обновлять нужную строку ( проверяя возможный get в ней).
Такой алгоритм снизит трафик в минимум и на узком канале все будет работать хорошо. Но платой за это будет тормоз при скроле и листании страниц. Хотя можно читать не окно строк бровса а опционально по несколько вверх и вниз от окна которое видим. К примеру 1000 строк вверх низ от видимого окна. Тогда Тормозить бадет на этих границах.
Дополнительно тоже самое со справочниками. И все это наверное не в массиве а в мем базе, удобнее будет делать сик по времени и синхронизировать.
Как идея вроде должна работать. Я пока справочники на это перевожу. До самой базы дойду не скоро. И не уверен что это нужно прятать внутрь класса.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1900
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.18 17:43. Заголовок: Haz пишет Но платой ..


Haz пишет
 цитата:
Но платой за это будет тормоз при скроле и листании страниц


Думается этого можно избежать. Сейчас работает примерно в такой схеме
1. :DrawLine пробегает по всем строкам окна с чтением из базы и прорисовкой каждой строки
2. :DrawLine читает, прорисовывает текущую строку
3. :DrawSelect читает, прорисовывает текущую строку
далее возможны варианты от чистоты\неточности кода.
Если перевести на вн. массив, то в :DrawLine можно добавить параметр, к примеру lRefresh,
при .T. можно подчитывать запись nRow в массив, потом прорисовывать всеми методами из вн. массива хоть nn раз.
Схема будет мало отличаться от действующей, ведь изменения, по мне, должны проходить на тек. раб версии не ломая ее.
Т.е. для начала все режимы (массив, dbf, txt, rcordset) надо перевести на массив.
С timer по переотображению не все просто, попадал на клиентов, которые пугались, когда время перепоказа совпадало
с действием на что то в тсб (хотя таймер на без дейсвие юсера). Реально сечас оставляю кнопку для ручного refresh.
Но это субъективно, главное вне тсб и потому не очень важно. Потом нет необходимости в каждой записи тсб хранить
время модификации, достаточно на всю прочитанную таблицу. Запрос на получение изменений позже этого значения.
Получив изменеия и положив их во врем. раб. табл., сохраняем новое последнее время модификации для дальн. исп. .

 цитата:
И все это наверное не в массиве а в мем базе, удобнее будет делать сик по времени и синхронизировать.


Можно не тольео в mem:, но и в TEMP каталоге, как просто dbf или как временный файл, открываем монопольно со
всеми вытекающими. Можно пользовать не только dbSeek, но и set relation.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1448
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.06.18 20:24. Заголовок: На мой взгляд вариан..


На мой взгляд вариант загрузки на клиента для локального просмотра - самый правильный.
Предположим, нужно загрузить 1000 записей по 1000 байт каждая. Получается 1000000 байт, т.е. 1Мб. Даже при ширине канала 10Мбит/с загрузка 1Мб займет около 1с. Активация бровса с локальным dbf - это быстро. Т.е., всё займет меньше двух секунд, я думаю.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1263
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 21:05. Заголовок: PSP пишет: Можно по..


PSP пишет:

 цитата:
Можно пользовать не только dbSeek, но и set relation.

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

 цитата:
На мой взгляд вариант загрузки на клиента для локального просмотра - самый правильный


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1264
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 21:12. Заголовок: PSP пишет: Даже при..


PSP пишет:

 цитата:
Даже при ширине канала 10Мбит/с загрузка 1Мб займет около 1с.


Это в идеале, в жизни наложится качество канала со своим пингом, время на шифрование и расшифровку трафика, плюс потери и повторную передачу пакетов. Так что можно смело умножать на 3 (если повезло) в более менее реальном случае. Идаже если так то, это отлично.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1449
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.06.18 21:31. Заголовок: Haz пишет: на клиен..


Haz пишет:

 цитата:
на клиенте поднять реплику и вопрос синхронизации отдать серверу


Иногда автоматическая синхронизация не нужна. Достаточно ручного обновления.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1450
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.06.18 21:33. Заголовок: Ну а в идеале: серве..


Ну а в идеале: сервер - на то и сервер, чтобы по запросу клиента выдать готовые к отображению данные.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1265
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 21:57. Заголовок: PSP пишет: Ну а в ..


PSP пишет:

 цитата:

Ну а в идеале: сервер - на то и сервер,


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1451
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.06.18 21:58. Заголовок: Да...


Да.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1266
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 22:04. Заголовок: Придётся привыкать д..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1901
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.18 22:16. Заголовок: Haz пишет Сосед цифи..


Haz пишет
 цитата:
Сосед цифирь поменял, тебе пофиг, но приятно что ты это сразу заметил


Не обязательно жать refresh, листнул - на экране свежие данные, а refresh когда user знает, что клиент\материал\... уже должен быть доступен но не виден или на всякий случай ткнул, чтоб перекурить

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1267
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.06.18 22:39. Заголовок: SergKis пишет: на ..


SergKis пишет:

 цитата:
на всякий случай ткнул, чтоб перекурить


Это нафиг. Плавали, знаем. В 90х один сотрудник так косил от работы. Кнопку нажал и 15 минут перекура заработал. На вопрос чего стоишь резонно отвечал что видишь обмен идет

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 36 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 215
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет