Главная Проекты Идеи Soft О авторе
 

Модульный проект GraniCubicle.
Блок 9 для 'Lan Bridge'.

Рис. 1 Внешний вид блока, со снятой крышкой.
Увеличить

План.

       1)   Вступление.
       2)   Поиск решения.
       3)   Создание схемы.
       4)   Выбор сетевой платы.
       5)   Настройка сетевой платы.
       6)   Выявление текущих настроек сетевой платы.
       7)   Настройка проекта под сетевую плату.
       8)   Алгоритм.
       9)   Возможности устройства.
       10)   Конфигуратор.
       11) Альтернатива программы PING.

Описание блоков.

       A) Общее описание. - тут.
       Б) Блок 1 для 'RS 232'. - тут.
       В) Блок 2 для 'IR'. - В разработке.
       Г) Блок 3 для 'LCD'. - В разработке.
       Д) Блок 4 для 'PS/2'. - тут.
       Е) Блок 5 для 'USB HID'. - тут.
       Ж) Блок 6 для 'DAC/ADC'. - В разработке.
       З) Блок 7 для 'DISEqC'. - тут.
       И) Блок 8 для 'Print Server'. - тут.
       К) Блок 9 для 'Lan Bridge'. - Эта страница.

Соединение блоков в набор.

       А) Набор "Panorama Sat Scaner". - тут.

       X) Обратная связь - тут.

Вступление.

       У моего знакомого во дворе за пару лет домовая сеть разрослась с трёх пользователей, работающих на одном HUB'е, до 7 HUB'ов, 3х серверов и 60 пользователей в 4х близлежащих домах... Но, так как всё делали на авось и стихийно, то сейчас это чудо сетестроительства, временами, при большой нагрузке, начинает частями виснуть (иногда даже несколько раз за день)...
       Многие уже начинают переспрашивать: "А почему не купили Switch - глюков тогда бы не было?"
       А на этих разношёрстных китайских поделках (разных фирм и купленных в разное время) написано как раз - "10/100 MBPS Fast Enternet Mini Switch with 8 ports" или аналогичные громкие надписи, но при соединении в гирлянду, они переключаются на режим HUB'а и начинают слать пакеты всем. А иногда переходят в этот режим даже при 4х машинах (меньше не пробовали) и это при 50% от номинальной нагрузки (8 портов).
       В героической борьбе с глюками нам пришла идея - заставить один из серверов пинговать по очереди каждый хаб и сделать устройство, которое при отсутствии входного пинга на протяжении энного времени автоматом перезагружало бы зависший хаб...
       Для тех кто не разбирается в функционировании сети и не знает с чем едят ping, постараюсь пояснить на пальцах и для улучшения усваяемости приведу бородатый анекдот программистов:

Вася: "А что такое PING?"
Коля: "Ну смотри на примере".
Высовывается в окно по пояс и что есть мочи орёт: "Петя - козёл!!!".
Через пол минуты до них долетает крик Пети: "Сам такой".
Коля: "Ну вот видишь я пропинговал Петю. А факт его ответа означает, что он дома, а время ответа (через пол минуты) означает, что он не сильно был занят."

       А если формулировкой, то: "Ping (Packet Internet Grouper) - это утилита, которая базируется на IP- и ICMP-протоколах пересылки дейтограмм и служит для трассировки маршрутов и проверки работоспособности каналов и узлов. Она определяет доступность и функционирование конкретного хоста".

Рис. 2 Внешний вид окна программы PING.

       Так же опыт работы в техническом отделе показал, что вопрос "Пингуется ли узел 192.168.10.1"? для рядового пользователя не совсем корректен, так как обычно при любой надписи на экране пользователь отвечает: "ДА" (даже при фразе "Заданный узел недоступен"). Поэтому более правильнее этот вопрос, адресованный неподготовленному пользователю, выглядит так: "Что написано на экране после отправки команды PING с параметрами ... "?

Рис. 3 Ответ - "Заданный узел недоступен".

       Более подробную информацию о структуре TCP/IP, протаколах и утилитах контроля(включая PING) можно найти в интернете или воспользоваться материалами этой подборки.
       Но если пояснять на пальцах и не вдаваться в подробности, то компьютер, с которого пингуют, если он не "знает" адреса пингуемого - пытается сначала спросить этот адрес у окружающих. Для этого он отправляет в сеть пакет ARP "Who has 192.168.10.5? Tell 192.168.10.1". В нашем примере 192.168.10.1 - это IP адрес пингующего компьютера. И для упрощения представим, что обе машины находятся в одном сегменте сети. Если бы они были бы в разных сегментах (деление на сегменты регламентируется маской сети), он послал бы этот запрос IP адресу шлюза.
       В свою очередь та машина, которую пингуют (в нашем примере 192.168.10.5), отвечает пакетом ARP "192.168.10.5 is at 00: 10: 5A: 12: 4B: 8C" тому компьютеру, который просил. В нашем примере 00: 10: 5A: 12: 4B: 8C это физический (MAC) - адрес пингуемого компьютера.
       После выявления направления, пингующий компьютер посылает пакет ICMP (Echo "ping" request) по выявленному направлению на физический адрес пингуемого.
       После получения этого пакета, пингуемый компьютер отвечает пакетом ICMP (Echo "ping" reply) по адресу, указанному в исходном пакете.

Поиск решения.


       Суммируя всё вышесказанное и штудируя материалы для самостоятельной подготовке от учебного курса Microsoft "Hands-On, Self-Paced Training for Supporting TCP/IP", программы MCSE за номером 70-059 мы в общих чертах получили ТЗ на создание системы. Устройство должно подключаться в свободный порт HUB'а, иметь свои IP и MAC адреса, уметь работать по протаколам ICMP и ARP и, в случае длительного молчания (более 3х минут), по протаколу ICMP, сбрасывать по тайм-ауту вышестоящий HUB, к которому он подключен.
       На втором этапе разработки устройство должно выполнять функцию Esernet - RS232 моста для управления удалёнными устройствами, используя в качестве транспорта UDP пакеты.
       После разработки ТЗ мы начали переписку с другими разработчиками в поисках подходящего прототипа устройства, но в интернете прототип упорно не желал находиться, а народ давал монотонно-однотипные советы.
       Большая часть советов относилась к идее повторения одного из проектов разнотипных пингеров, пинговалок и микропроцессорных вэб серверов с внешней I2C или SPI сетевым модулем. При коммерческом производстве такой подход оправдан, но нам надо было решить проблему как можно дешевле и проще, а внешние сетевые модули были по цене Switch'ей, которые и планировалось пинговать.
       Параллельно народ ссылался на различные проекты AVR WEB серверов, центральной частью которых была ISA сетевая карта на чипсете Realtek RTL8019AS. Причём на домашних страницах этих проектов рекомендовалось использовать, доработанные перемычками, сетевые платы, после чего проверять их работоспособность на компьютере, то есть, использовать по прямому назначению уже не представлялось возможным.
       Преимуществом данного решения было то, что у нас Б.У. сетевые карты от компьютеров прошлого века обходятся в разы дешевле по сравнению с внешними I2C или SPI сетевыми модулями (даже, с учётом цены более мощьного процессора - например ATMega32). Но ложка дёгтя заключалась в том, что сетевых плат с чипсетом RTL8019AS у нас в продаже давно уже не было. С трудом удалось найти пару для тестов. Правда в наличии было множество разношёрстных NE2000 совместимых ISA сетевых плат. А в интернете вскользь упоминалось, что они в теории подходят, но никто не знает как их настраивать, так как они плохо документированы, а по мнению авторов тех писем настраивать сетевую плату обязательно надо. Проще говоря, настройка сетевой платы, отличной от плат на RTL8019AS, ложилась на плечи пользователей, желающих повторить проект. А для бывших в употреблении RTL8019AS авторами предлагалась методика по аппаратному их переключению в исходное состояние.
       Уточняя этот вопрос, я пришёл к выводу, что для ответа на команду PING дорогой процессор с большим количеством ПЗУ в этом проекте вовсе и не нужен, в связи с тем, что нам не AVR WEB сервер нужен, а всего лишь модификация пингера. Вывод - протокол HTTP вместе с текстовой страничкой мне совершенно ни к чему.
       Разбираясь в документации на RTL8019AS, я с удивлением для себя обнаружил, что сетевую плату не обязательно ломать (аппаратно переключать в исходное состояние) - отпаивая Eprom (обычно 93C46) и допаивая перемычками, вполне достаточно предусмотреть в проекте возможность настройки проекта под сетевую плату, а не наоборот (сетевую плату под проект). В этом случае подойдёт ЛЮБАЯ NE2000 совместимая ISA сетевая плата, а не только дефицитная Realtek RTL8019AS. А главное ничего ломать не придётся и в случае необходимости можно проверить работоспособность платы на компьютере...

Создание схемы.

       Идея, реализованная в проектах AVR WEB серверов- присоединение сетевой карты к процессору проводами напрямик - мне не понравилась сразу. Проблема заключалась в том, что у дешёвых процессоров ног было в притык - только на ISA шину. Даже на реле и кварц ног не хватало. А дорогой процессор ставить в такой проект было экономически не выгодно.
       В теории конечно можно было обойтись внутренним тактовым генератором, а реле повесить на свободный pin Aref, на котором появлялось +5V при активации встроенного АЦП, но я предпочитаю отлаживать устройства, у которых pin'ы программатора не заняты периферией, что позволяет не испытывать проблем с коммутацией при отладке устройства (повесить на LPT порт и тестировать не снимая). Также в пользу дополнительных свободных ног говорило желание иметь какой - либо внешний интерфейс для отладки проекта и выяснения ответа на стандартные вопросы разработчиков: "Почему не работает? И что сделать, чтобы заработало?". (Анекдот в тему: "Самое страшное слово в ядерной физике - это УПС!!!!" :-).
       Поэтому решено было пойти на компромисс и установить формирователь шины - "защёлку" (latch) на шину адреса... В наличии были 74HC573 (Octal D-type transparent latch - 3-state), их и поставили. Это привело к незначительному удорожанию конструкции в целом, но давало возможность высвободить пины встроенных интерфейсов и уменьшить количество подключений...

Принципиальные схемы.
Все схемы одним файлом.

       Следующей проблемой, с которой мы столкнулись, было то, что отладочную информацию и протаколы её ввода - вывода надо было где-то хранить, а текущая задача и без того еле вписывалась в размер ПЗУ у ATMega8, поэтому было принято решение разработать два варианта схемы. Один вариант - для отладочных и тестовых целей на ATMega16 (или ATMega32), а второй - непосредственно установочный на ATMega8 (или ATMega88). К тому же, благодаря использованию "защёлки" (latch), количество проводов уменьшилось, что позволило применить 34 жильный кабель с экраном через жилку - для соединения и быстрой смены плат...

Выбор сетевой платы.

Рис. A     Внешний вид сетевой платы 3Com 3C509TX.

       Однако вернёмся к нашим сетевым платам. Как я уже говорил, для проекта подходит любая, правильно настроенная NE2000 совместимая ISA сетевая плата. Большинство производимых в последние годы прошлого века карт для шины ISA совместимы с картой Novell NE2000. Карта Novell NE2000 стала стандартом совместимости для сетевых карт. Совместимость карты означает, что Вам не обязательно искать именно NE2000 (или только Realtek RTL8019AS, как в проектах AVR WEB серверов) , так как подойдёт любая совместимая. Но совместимость касалась только интерфейса взаимодействия по шине ISA, на способы и возможности настройки, а также на аппаратные возможности самой платы она не распространялась.
       Например, у нас кроме самой Novell NE2000 широко распространены NE2000 совместимые ISA сетевые платы на чипсетах: UMC UM9003F, UMC UM9008F, Winbond W89C904F, Realtek RTL8019AS, GeniusLAN K1306023, 3Com 3C509TX, Accton MPX2 и многие другие...

Настройка сетевой платы.

       Теперь более подробно рассмотрим настройку NE2000 совместимой ISA сетевой платы. Более старые платы настраиваются с помощью Jumper'ов. На картах такого типа были перемычки для выбора IRQ, порта I\O, адреса ROM и типа интерфейса. Более новые платы имеют на борту Eprom (обычно 93C46), в котором и сохраняются эти настройки. Забегая вперёд скажу, что изменяет их как система Plug&Play, так и пользователь с помощью программы настройки и тестирования от производителя чипсета.
       В Eprom'е сетевой платы кроме MAC адреса, множества настроек Plug&Play (допустимые диапазоны) и типа интерфейса записан также текущий адрес порта (I\O) ввода - вывода (по умолчанию 300), а также активное прерывание IRQ (по умолчанию 9). Значения по умолчанию относятся к чипу Realtek RTL8019AS и с ними он инициализируется при первом включении после установки данных в Eprom по заводским установкам.
       Для карт с перемычками в плане настройки - всё было просто: выбираем перемычками настройки по умолчанию (I\O = 300, IRQ = 9, Ваш тип интерфейса) и настраиваем проект по этим данным.
       Но для плат с Eprom потребуются некоторые манипуляции для их установки в проект. Такое бывает, если карта отлична от Realtek RTL8019AS или уже использовалась в компьютере и система Plug&Play компьютера поменяла значения по умолчанию.

Выявление текущих настроек сетевой платы.

       Если у вас под рукой есть машина с ISA слотом и программа настройки от вашей сетевой карты, то можно воспользоваться следующим способом. Уточню сразу: Все эти действия обычно хорошо описаны в инструкции по установке для вашей сетевой платы. Но я вкратце опишу процесс: для настройки надо установить сетевую плату в компьютер (для тех кто с железом не работал - перед такой установкой компьютер надо выключить из всех видов сети и следовать инструкции по установке, идущей вместе с вашей сетевой платой), с помощью комплектной программы настройки (входит в комплект драйвера) из под ДОС'а сбросить настройки в исходное состояние (пункт в программе, после которого выставляется обычно IRQ:9, I\O:0300-031F). Потом перезагрузить машину, запустить программу настройки, записать текущий MAC, IRQ и I\O на бумажный носитель, после чего провести самотестирование сетевой платы (средствами всё той же программы настройки).
       Вышеописанный метод предпочтительнее, т.к. самая частая причина неработоспособности старых сетевых плат - порча данных во встроенном Eprom (обычно 93C46) или, что в принципе одно и тоже, жёстко заданные настройки под древнюю машину и тип давно вымершей сети (например, толстый коаксиал).

Программы настройки
Для 3COM 3C5X9,      Для Realtek RTL8019.
Если у вас есть другие, пришлите, выложу на сайте.

       Если у вас есть машина с ISA слотом, но программа для настройки, совместимая с вашей сетевой платой, затерялась лет десять назад и теперь вы её не можете нигде найти, то можно поступить так. Если на машине с ISA слотом установлен MS Windows, то, установив драйвер к вашей сетевой плате, можно попробовать выяснить настройки из под MS Windows. Для этого надо настроить сеть и после проверки её работоспособности - скачать пару файлов. После чего надо зайти в панель управления, далее в устройства, далее открыть свойства тестируемой сетевой платы. Там будут указаны текущие значения IRQ и I\O. А в свойствах подключения посмотреть и списать MAC адрес сетевой платы.
       Этот метод позволяет проверить работоспособность платы... Но при неправильных настройках платы (при отсутствии линка), разобраться в причинах и восстановить работоспособность можно с помощью комплектной программы настройки по методике, описанной мной в первой части.
       Если у вас нет под рукой машины с ISA слотом, то можно попробовать подобрать нужные значения. Для NE2000 совместимой сетевой платы требуется пространство адреса в 1Fh = 11111 (то есть, для задания адреса нужно 5 младших линий шины адреса с A4 по A0). И если верить датащиту (от NE2000 совместимой Realtek RTL8019AS, так как датащит на саму NE2000 в сети нам найти так и не удалось), то доступны следующие варианты начала диапазонов:

300H = 1100000000
320H = 1100100000
340H = 1101000000
360H = 1101100000
380H = 1110000000
3A0H = 1110100000
3C0H = 1111000000
3E0H = 1111100000
200H = 1000000000
220H = 1000100000
240H = 1001000000
260H = 1001100000
280H = 1010000000
2A0H = 1010100000
2C0H = 1011000000
2E0H = 1011100000

Документация (датащиты)
На 3COM 3C5X9,      На Realtek RTL8019.
Если у вас есть другие, пришлите, выложу на сайте.

       Пять последних нулей (пять младших бит отмечены зелёным) в адресе начала диапазона и есть пространство адреса, а все адреса начинаются с единицы. Из чего следует, что меняется только 4 средних бита адреса (с A8 по A5), проще говоря, только 16 вариантов предустановки (16 вариантов вполне покрываются 4мя перемычками... Реализация автоподбора в данном случае не принципиальна). Если обратиться к схеме, можно заметить, что адреса с А10 по A19 заземлены (=0), во всех вариантах (2xxH и 3xxH), а адрес А9 всегда притянут к единице. То есть, разница в предустановке адреса заключается только в битах с A8 по A5.
       На схеме показан выбор адреса 300H = 11 000 00000 (адреса с А10 по A19 =0 (нули до первой единицы обычно не отмечают в Hex виде), адреса с А9 по A8 =1 (отмечены красным), а адреса с А7 по A5 =0 (отмечены синим)).
       Проще говоря, если вы не знаете текущую настройку I\O пространства вашей сетевой платы, то можно попробовать её подобрать... Настройки IRQ не критичны, так как в проекте они запараллелены и МК обработает прерывание от любого IRQ. Найти нужный пин IRQ и проверить его очень просто - после сброса карты (по переходу пина Reset из 0 в 1) на нужном появляется сигнал низкого уровня, а на неактивных - высокого. Прерывание считается активным по нарастающему фронту (т.е. при переходе от 0 к 1).
       Единственный подводный камень заключается в том, что если тип сетевого интерфейса задан неправильно (отличный от используемого в вашей сети), то проект может не запуститься.
       Записаный MAC адрес понадобится для идентификации вашей сетевой платы в сети. Если вы не смогли выяснить МАС адрес сетевой платы, то можно занять любой свободный адрес (естественно кроме широковещательных адресов) в вашем сегменте сети.
       Для хорошо документированных чипов (например, Realtek RTL8019AS) есть возможность поставить перемычки на ноги микросхемы Eprom (обычно 93C46), а также перемычки на замыкание соответствующих пинов чипа.

       Для Realtek RTL8019AS эта последовательность выглядит следующим образом:

1. Проследить прохождение концов DI и DO и обрезать дорожки на плате у самого Realtek RTL8019AS.
(приходят в левый верхний угол чипа).
2. На концы DI и DO чипа Eprom (обычно 93C46), установить пины под Jumper'а и проводами соединить с обрезанными дорожками (в результате при установке Jumper'ов подключение восстанавливается).
3. На GND установить пины под Jumper и проводами соединить с (AUI) Pin64 чипа Realtek RTL8019AS.
4. На VCC установить пины под Jumper и проводами соединить с (PNP) Pin65 чипа Realtek RTL8019AS.
5. Но если не планируется восстановление работоспособности платы в компьютере (например, для проверок), то пункт 2 можно пропустить, а соединения 3 и 4 выполнить не разъёмными.

       Если манипуляции были произведены правильно, то после отключения Eprom и установки потенциала на пинах (AUI и PNP), карта инициализируется со следующими настройками:

IRQ:9
I\O:0300-031F
Тип интерфейса - 10Base2

       Ещё раз предупрежу - при соединении без Jumper'ов (не разъемно - проводами) вы теряете возможность использовать карту по прямому назначению. То есть, в случае острой необходимости, проверить работоспособность платы на компьютере в штатном режиме, не проводя обратной процедуры, будет затруднительно... (Драйвера карты Realtek RTL8019AS требуют Plug&Play и Eprom). А при наличии Jumper'ов перекоммутацию можно выполнить за минуту - перекинуть Jumper'а с пинов AUI и PNP на концы DI и DO чипа Eprom - восстановив исходную схему.

Настройка проекта под сетевую плату.

       Методики получения данных о вашей сетевой плате я описал в разделах выше. Вам требуется выставить с помощью перемычек текущее I\O пространство вашей сетевой платы. С помощью программы настройки сгенерировать файл Eprom для процессора, в котором будет храниться МАС и IP адрес вашей системы.
       Если все настройки произведены правильно, то после набора в командной строке команды:

       Ping 192.168.10.5 -t

       Где 192.168.10.5 - это выбранный вами IP адрес вашей системы

       А " -t" означает пинговать бесконечно.

       Вы увидите ответ
       Обмен пакетами с 192.168.10.5 по 32 байт:
       Ответ от 192.168.10.5: число байт=32 время=04мс TTL=128
       Ответ от 192.168.10.5: число байт=32 время=03мс TTL=128
       ----- и так далее ----

Алгоритм.

1) При приходе ICMP пакета, устройство сбрасывает счётчик времени.
2) Если пакет был в течении последних 15 секунд - горит зелёный светодиод.
3) Если пакета не было в течении последних 3х минут - горит красный.
4) Если по истечении 3х минут пакетов так и не последовало,
то активируем сброс на 5 секунд и сбрасываем счётчик на ноль.
5) После чего процесс проверок повторяется с первого пункта.

Тестовая прошивка.
для процессора ATMega32.        для процессора ATMega16.
для процессора ATMega88.    для процессора ATMega48(*).

* - Прошивка под ATMega48 дорабатываться в будущем не будет (т.е. проверками правильности источника и отправкой данных). Проще говоря функциональность прошивки под ATMega48 ограничивается описанным в этой статье пингером (это связанно с малым размером флэш памяти у процессора ATMega48). Протокол UDP в прошивку ATMega48, пока не добавлен (ведутся работы).

Как работать с программатором под управлением PonyProg. - тут.
А как с USB программатором 'AvrUsb500 by Petka' - тут.

Возможности устройства.

       Тестовая прошивка предназначена для проверки правильности сборки и проверки функционирования сетевой карты в системе. В неё заложен следующий набор функций:

A) Отвечать на запросы команды PING.
B) Отвечать о получении пакета по протоколу UDP. *
      (квиток о получении, в виде UDP пакета, отправляется назад)
С) Транслировать содержимое пакета UDP в UART (RS232). *
D) Сообщать о сетевой активности в UART (RS232).

* - Пункты отмеченные '*' реализованы в прошивках для процессоров:       ATMega32, ATMega16, ATMega88.

Рис. D     Сообщение о удачной инициализации
(отправлено в UART RS232).

Рис. E     Сообщение - карта не найдена (красным выделено)
(возможно при ошибки с выставлением диапазона I/O).

Конфигуратор.

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

Рис. 4 Внешний вид программы настройки...
Скачать архив с программой..

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

Рис. 5 Страница терминала моста UDP LAN - Rs232.

       На данной вкладке программы можно отправить UDP пакет, содержимое которого передастся через Rs232 (Uart) удалённого устройства... А принятые по Rs232 данные устройство упакует в UDP пакет и передаст (через LAN) на управляющий компьютер. После чего они отобразятся в приёмном окне программы. Получился RS232 мост для управления удалёнными устройствами по сети.

Альтернатива программы PING.

       В сети можно найти множество разнотипных утилит и альтернативного софта, которые позволяют пинговать удалённые хосты...
       В качестве примера рассмотрим программу Pinglite (Мини-Пингвин). Автором этой программы является Шепеля Олега AKA VideoLord, а домашняя страница программы была тут, но к сожалению она недоступна с 2006 года. О этой программе на просторах сети можно прочесть следующее: "Программа Pinglite это облегченная версия программы пингвин. Опрашиваются четыре выбранных машины. Результаты показываются на панели задач".

Рис. 6 Внешний вид программы Pinglite (Мини-Пингвин).
Скачать архив с программой..

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

Рис. 7 Внешний вид программы WinPingerXP v1.21.
Скачать архив с программой.

       Один из участников нашей команды разработчиков DemMax посмотрев на немного недоделанную прогу "Мини-Пингвин" решил написать свой функциональный аналог, с исправлением мелких глюков. В результате появилась на свет программа WinPingerXP v1.21, которая имеет то же предназначение, схожий интерфейс и расширенный функционал.
       Более ранняя версия программы WinPingerXP v1.0.

Продолжение следует...

Ограничения.

       Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.

       Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

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

       Кошелёк для оплаты накладных расходов на сайт Z158779319858 в системе WebMoney.

       Принимаю только безвозмездную помощь :)


       Все статьи, опубликованные на этом сайте защищены Частью 4 Гражданского Кодекса Российской Федерации. Запрещено полное или частичное копирование материалов без согласия их авторов. Незаконное использование материалов сайта влечет за собой административную ответственность в виде компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст. 1301, 1250, 1252, 1253 ГК РФ]. При согласованном использовании материалов сайта обязательна активная ссылка на www.mindrunway.ru и указание авторства.



Copyright© 2007-2012 QuickWitted Почта     grani СОБАКА mindrunway РУ
Ссылки
Гостевая
Форум