Вопрос касательно OpenBSD и вебпрограммирования.

classic Classic list List threaded Threaded
63 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос касательно OpenBSD и вебпрограммирования.

Andrei Khitrov
> Вообще-то этот рассказ как раз хорошо известен как шутка, и известны
> _настоящие_ отзывы K&R&T, которые это никак не подтверждают. Так что
> поздравляю - вы успешно повелись;(

Забавно, спасибо Валентин. При более подробном рассмотрении инета
должен признать, что действительно повёлся. Как оказывается легко
бывает поверить, когда хочется верить. На сайте FSF этот текст даже
продатирован первым апреля : )

Тогда илюстрация с Си не очень удалась. Напомню, что эта история шла у
меня, как ни странно, в подтверждение мысли о том, что базовые
синтаксические конструкции в Си, хотя они и очень распространёны среди
языков программирования и народ к ним попривык, могут иметь что ли
более эргономичные аналоги. Это в частности одна из вещей, из-за
которой я в свое время просто влюбился в Питон и которая как кажется
его выгодно отличает и от Перла и от Руби (с самим Си конечно лучше не
сравнивать, потому как языки разных уровней).

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

Подобным образом идеи лежащие в основе синтаксиса Питона изначально
ориентированы на бОльшую продуктивность работы и бОльшую лёгкость
поддержки кода. Поэтому даже иногда хочется удивляться, что С-подобный
синтаксис всё ещё жив и продолжает плодиться в разных языках
программирования. Впрочем, и клавиатуры у нас у всех до сих пор в 99
процентах прямые доски. Прошу прощенья за пространный оффтоп.
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос касательно OpenBSD и вебпрограммирования.

Gregory Edigarov-2

On Fri, 19 Nov 2010 11:51:23 +0300
Andrei Khitrov <[hidden email]> wrote:

> > Вообще-то этот рассказ как раз хорошо известен как шутка, и известны
> > _настоящие_ отзывы K&R&T, которые это никак не подтверждают. Так что
> > поздравляю - вы успешно повелись;(
>
> Подобным образом идеи лежащие в основе синтаксиса Питона изначально
> ориентированы на бОльшую продуктивность работы и бОльшую лёгкость
> поддержки кода. Поэтому даже иногда хочется удивляться, что С-подобный
> синтаксис всё ещё жив и продолжает плодиться в разных языках
> программирования. Впрочем, и клавиатуры у нас у всех до сих пор в 99
> процентах прямые доски. Прошу прощенья за пространный оффтоп.

О, да, да, конечно, язык в котором отступы играют семантически
значимую роль... Эргономичен... (ухожу, ухожу)

--
With best regards,
        Gregory Edigarov

Reply | Threaded
Open this post in threaded view
|

Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by mitrofanzzz

Hi, All!

У меня тоже есть вопрос, может быть несколько наивный, но все же...

Почему в таблицах PF (pf tables) можно задавать префиксы (a la
192.0.2.0/24) но нельзя диапазоны (10.0.1.23-10.7.3.16)?

Т.е. я примерно предполагаю ответ, но может есть какая-то более
глубинная мотивация?

--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
25 ноября 2010 г. 14:38 пользователь Andrew Jelly
<[hidden email]> написал:
> Почему в таблицах PF (pf tables) можно задавать префиксы (a la 192.0.2.0/24)
> но нельзя диапазоны (10.0.1.23-10.7.3.16)?
> Т.е. я примерно предполагаю ответ, но может есть какая-то более
> глубинная мотивация?

Если бы вы попробовали написать программку, которая бы определяла
входит ли некий IP в сеть/маска или в некий диапазон, то, думаю, это
несколько прояснило бы.
--
antonvm
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Alexander Yurchenko-3
25 ноября 2010 г. 13:09 пользователь Anton Maksimenkov
<[hidden email]> написал:

> 25 ноября 2010 г. 14:38 пользователь Andrew Jelly
> <[hidden email]> написал:
>> Почему в таблицах PF (pf tables) можно задавать префиксы (a la 192.0.2.0/24)
>> но нельзя диапазоны (10.0.1.23-10.7.3.16)?
>> Т.е. я примерно предполагаю ответ, но может есть какая-то более
>> глубинная мотивация?
>
> Если бы вы попробовали написать программку, которая бы определяла
> входит ли некий IP в сеть/маска или в некий диапазон, то, думаю, это
> несколько прояснило бы.

ip & mask == net
ip >= ip_start && ip <= ip_end

Как по мне, сложность одинаковая. Адреса же - просто беззнаковые целые.

> --
> antonvm
>



--
Alexander Yurchenko
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Dmitry Bogdan-2
In reply to this post by Andrew Jelly-2

>
> Hi, All!
>
> У меня тоже есть вопрос, может быть несколько наивный, но все же...
>
> Почему в таблицах PF (pf tables) можно задавать префиксы (a la
> 192.0.2.0/24) но нельзя диапазоны (10.0.1.23-10.7.3.16)?
диапазоны бывают только в голове человеков.
префиксы первичны для вычислительных машин, их удобней хранить и делать по
ним поиск и вставку/удаление новых. кстати служебная информация в
интернете распространяется в виде префиксов!


> Т.е. я примерно предполагаю ответ, но может есть какая-то более
> глубинная мотивация?
хотелось бы узнать глубинную мотивацию создания диапазона
10.0.1.23-10.7.3.16 :)

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Anton Maksimenkov-2

On 25/11/10 11:09, Anton Maksimenkov wrote:

> 25 ноября 2010 г. 14:38 пользователь Andrew Jelly
>> Почему в таблицах PF (pf tables) можно задавать префиксы (a la 192.0.2.0/24)
>> но нельзя диапазоны (10.0.1.23-10.7.3.16)?
>> Т.е. я примерно предполагаю ответ, но может есть какая-то более
>> глубинная мотивация?
>
> Если бы вы попробовали написать программку, которая бы определяла
> входит ли некий IP в сеть/маска или в некий диапазон, то, думаю, это
> несколько прояснило бы.

Подкалываете, да? :)
Я тоже спрошу - попробуйте в уме разбить на префиксы диапазон
62.51.21.0 - 62.52.150.255
И не ошибиться с первого раза.


--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
In reply to this post by Alexander Yurchenko-3
25 ноября 2010 г. 15:15 пользователь Alexander Yurchenko
<[hidden email]> написал:
>> Если бы вы попробовали написать программку, которая бы определяла
>> входит ли некий IP в сеть/маска или в некий диапазон, то, думаю, это
>> несколько прояснило бы.
> ip & mask == net
> ip >= ip_start && ip <= ip_end
> Как по мне, сложность одинаковая. Адреса же - просто беззнаковые целые.

Может я гоню, но когда я что-то такое делал, было там какое-то неудобство.
--
antonvm
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

mitrofanzzz
In reply to this post by Dmitry Bogdan-2
On 25.11.2010 13:28, Dmitry Bogdan wrote:

      
Hi, All!

У меня тоже есть вопрос, может быть несколько наивный, но все же...

Почему в таблицах PF (pf tables) можно задавать префиксы (a la
192.0.2.0/24) но нельзя диапазоны (10.0.1.23-10.7.3.16)?
диапазоны бывают только в голове человеков.
префиксы первичны для вычислительных машин, их удобней хранить и делать по
ним поиск и вставку/удаление новых. кстати служебная информация в
интернете распространяется в виде префиксов!


Т.е. я примерно предполагаю ответ, но может есть какая-то более
глубинная мотивация?
хотелось бы узнать глубинную мотивацию создания диапазона
10.0.1.23-10.7.3.16 :)
Да простит меня сообщество и не осудит суровым но справедливым судом, префиксная нотация есть стандарт, и соответственно этого стандарта 
есть уже написанная библиотека процедурами из которой, как мне кажется, и пользовался создатель...
а на счет диапазонов согласен с предыдущим оратором.
Еще раз прошу простить.
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

mitrofanzzz
In reply to this post by Dmitry Bogdan-2
On 25.11.2010 13:28, Dmitry Bogdan wrote:
Hi, All!

У меня тоже есть вопрос, может быть несколько наивный, но все же...

Почему в таблицах PF (pf tables) можно задавать префиксы (a la
192.0.2.0/24) но нельзя диапазоны (10.0.1.23-10.7.3.16)?
диапазоны бывают только в голове человеков.
префиксы первичны для вычислительных машин, их удобней хранить и делать по
ним поиск и вставку/удаление новых. кстати служебная информация в
интернете распространяется в виде префиксов!


Т.е. я примерно предполагаю ответ, но может есть какая-то более
глубинная мотивация?
хотелось бы узнать глубинную мотивацию создания диапазона
10.0.1.23-10.7.3.16 :)
koi8r
	Да простит меня сообщество и не осудит суровым но справедливым судом, префиксная нотация есть стандарт, и 	соответственно этого стандарта 
есть уже написанная библиотека процедурами из которой, как мне кажется, и пользовался создатель...
а на счет диапазонов согласен с предыдущим оратором.
Еще раз прошу простить.
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Dmitry Bogdan-2

On 25/11/10 11:28, Dmitry Bogdan wrote:

>> Почему в таблицах PF (pf tables) можно задавать префиксы (a la
>> 192.0.2.0/24) но нельзя диапазоны (10.0.1.23-10.7.3.16)?
> диапазоны бывают только в голове человеков.
Да вообще много чего в голове, честно говоря. Математические теоремы они
тоже вон в бетоне не отлиты.

> префиксы первичны для вычислительных машин, их удобней хранить и делать по
> ним поиск и вставку/удаление новых. кстати служебная информация в
> интернете распространяется в виде префиксов!

Вот насчет удобнее я бы поспорил. Поиск, вставка и удаление стоят
примерно одинаково, распространение - вопрос привычки.

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

>> Т.е. я примерно предполагаю ответ, но может есть какая-то более
>> глубинная мотивация?
> хотелось бы узнать глубинную мотивацию создания диапазона
> 10.0.1.23-10.7.3.16 :)

Ну, это довольно просто. К примеру, мення есть входные данные по
принадлежности IP к странам в формате RIPE DB intervals, и я хотел бы
использовать их в pf tables "напрямую".


--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
In reply to this post by Andrew Jelly-2
25 ноября 2010 г. 15:44 пользователь Andrew Jelly
<[hidden email]> написал:
>> то, думаю, это несколько прояснило бы.
> Подкалываете, да? :)

Ничуть. Я только лишь о том, что каждый раз когда что-нибудь начинаешь
делать, в смысле воплощать, то вылезают дополнительные сложности,
которых до этого не замечал.
Я просто смустно помню, когда-то что-то такое крутил с "найти IP в", и
поэтому с такой позиции выразился.
--
antonvm
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Alexander Yurchenko-3

On 25/11/10 11:15, Alexander Yurchenko wrote:

>> Если бы вы попробовали написать программку, которая бы определяла
>> входит ли некий IP в сеть/маска или в некий диапазон, то, думаю, это
>> несколько прояснило бы.
>
> ip&  mask == net
> ip>= ip_start&&  ip<= ip_end
>
> Как по мне, сложность одинаковая. Адреса же - просто беззнаковые целые.

Да, сложность, IMHO, такая же.

Ok. Мне кажется, причина поддержки "только префиксов" в таблицах (хотя в
других местах допустимы ranges, т.е. диапазоны), в том, что при разборе
синтаксиса таблиц (pf_table.c), они "напрямую" вставляются в префиксное
дерево (radix tree). Разумеется, это только моя догадка.

По идее, проблему можно решить на двух уровнях.

1. Синтаксическом - добавить процедуру автоматической разбивки диапазона
на префиксы еще при парсинге.

2. Прагматическом - уйти от префиксного дерева для поиска адресов вообще
(понятно, что это гораздо сложнее).

Но удивительно, что вообще для поиска правил в PF используется
красно-черное дерево, а для адресов - префиксное. По идее, красно-черное
дерево с диапазонами будет работать не хуже префиксного. Во всяком
случае в моих замерах это было так.

--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Dmitry Bogdan-2
In reply to this post by Andrew Jelly-2

>> префиксы первичны для вычислительных машин, их удобней хранить и делать
>> по
>> ним поиск и вставку/удаление новых. кстати служебная информация в
>> интернете распространяется в виде префиксов!
>
> Вот насчет удобнее я бы поспорил. Поиск, вставка и удаление стоят
> примерно одинаково, распространение - вопрос привычки.
ага, протоколы динамической маршрутизации, которые распространяют
информацию о сетях в виде префиксов - это всего лишь вопрос привычки :-)

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

>>> Т.е. я примерно предполагаю ответ, но может есть какая-то более
>>> глубинная мотивация?
>> хотелось бы узнать глубинную мотивацию создания диапазона
>> 10.0.1.23-10.7.3.16 :)
>
> Ну, это довольно просто. К примеру, мення есть входные данные по
> принадлежности IP к странам в формате RIPE DB intervals, и я хотел бы
> использовать их в pf tables "напрямую".
ваще-то заполнять эту райпдб - геморрой тот ещё, изначально оно хранится
всё в виде префиксов на оборудовании, только при заполнении через
интерфейс превращается в диапазоны.
поищите ту же инфу в виде префиксов.

>
> --
> Local Observer
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Anton Maksimenkov-2

On 25/11/10 11:58, Anton Maksimenkov wrote:

> 25 ноября 2010 г. 15:44 пользователь Andrew Jelly
> <[hidden email]>  написал:
>>> то, думаю, это несколько прояснило бы.
>> Подкалываете, да? :)
>
> Ничуть. Я только лишь о том, что каждый раз когда что-нибудь начинаешь
> делать, в смысле воплощать, то вылезают дополнительные сложности,
> которых до этого не замечал.

Ето конечно да. Но, как говорится - c'est la vie.

> Я просто смустно помню, когда-то что-то такое крутил с "найти IP в", и
> поэтому с такой позиции выразился.

У меня как раз сложности вылезли при работе с префиксами. Т.е. попытки
оптимизировать префиксное дерево привели к реальным сложностям
программистского толка.

Очевидно, что битовое префиксное дерево весьма неэффективно по
быстродействию, ибо в худшем случае нам придется спускаться до низу,
делая аж 32 шага. Пытаясь реализовать "байтовое" дерево (max 4 шага
вглупь) я нарвался на сложности, сильно увеличивающие затраты памяти.

При работе с диапазонами конкретно этой проблемы нет.


--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Dmitry Bogdan-2

On 25/11/10 12:15, Dmitry Bogdan wrote:

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

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

> их можно суммировать, дробить как
> нравится итд итп.

Хм. Интересно, как же их суммировать?
Во к примеру (192.168.0.0/16 + 192.169.0.0/24 + 192.169.1.0/25) =
Это какой выйдет префикс в сумме?

Или как поделить 10.0.0.0/8 на 3 части примерно одинакового размера...

>> Ну, это довольно просто. К примеру, мення есть входные данные по
>> принадлежности IP к странам в формате RIPE DB intervals, и я хотел бы
>> использовать их в pf tables "напрямую".

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

--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
In reply to this post by Andrew Jelly-2
25 ноября 2010 г. 16:17 пользователь Andrew Jelly
<[hidden email]> написал:
> On 25/11/10 11:58, Anton Maksimenkov wrote:
>> Я просто смустно помню, когда-то что-то такое крутил с "найти IP в", и
>> поэтому с такой позиции выразился.
> У меня как раз сложности вылезли при работе с префиксами. Т.е. попытки
> оптимизировать префиксное дерево привели к реальным сложностям
> программистского толка.

Может быть вы как-то не так их "готовите"?
Насколько я помню одной из причин "маски-префиксы" было именно то, что
эта логика тупо быстрее работает (конкретно бинарник, конкретно на
процессоре). А быстродействие тогдашних машин, да и при той нагрузке
на роутинг толстых каналов... короче выгадывали. Да что там - сами
Си'шные структуры для работы с нетом были скомпонованы с некоторыми
извратами. С тех пор эти уши так и торчат.

> Очевидно, что битовое префиксное дерево весьма неэффективно по
> быстродействию, ибо в худшем случае нам придется спускаться до низу, делая
> аж 32 шага. Пытаясь реализовать "байтовое" дерево (max 4 шага вглупь) я
> нарвался на сложности, сильно увеличивающие затраты памяти.
> При работе с диапазонами конкретно этой проблемы нет.

А можно поподробнее, про "спускаться до низу, делая аж 32 шага"?
Вроде бы как Александр показал выше, что логика с маской записывается
проще некуда...
--
antonvm
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Dmitry Bogdan-2
In reply to this post by Andrew Jelly-2

>
> On 25/11/10 12:15, Dmitry Bogdan wrote:
>
>>> Но у диапазонов есть один весьма ощутимый плюс - префикс всегда
>>> представим диапазоном, а вот для представления диапазона может
>>> понадобиться туева хуча префиксов. Сиречь - диапазон компактнее.
>>> Это более "общее" понятие.
>
>> дадад. человеку удобней представлять информацию в виде диапазона.
>> а машине удобней в виде префиксов,
> Да откуда эта машина у вас вылезает? Программы ж с неба не падают,
> их люди пишут. Машине, если уж антропоморфировать, вообще по барабану.
>
>> их можно суммировать, дробить как
>> нравится итд итп.
>
> Хм. Интересно, как же их суммировать?
> Во к примеру (192.168.0.0/16 + 192.169.0.0/24 + 192.169.1.0/25) =
> Это какой выйдет префикс в сумме?
192.168.0.0/15 :-)

> Или как поделить 10.0.0.0/8 на 3 части примерно одинакового размера...
зачем?

>>> Ну, это довольно просто. К примеру, мення есть входные данные по
>>> принадлежности IP к странам в формате RIPE DB intervals, и я хотел бы
>>> использовать их в pf tables "напрямую".
>
>> ваще-то заполнять эту райпдб - геморрой тот ещё, изначально оно хранится
>> всё в виде префиксов на оборудовании, только при заполнении через
>> интерфейс превращается в диапазоны.
>> поищите ту же инфу в виде префиксов.
> Совет может и неплохой, но несколько уводящий от первоначальной темы.
нет, конечно, продолжайте боротся с ветряными мельницами :)


> --
> Local Observer
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2
In reply to this post by Anton Maksimenkov-2

On 25/11/10 12:49, Anton Maksimenkov wrote:

> 25 ноября 2010 г. 16:17 пользователь Andrew Jelly
> <[hidden email]>  написал:

> Может быть вы как-то не так их "готовите"?
Возможно.

> Насколько я помню одной из причин "маски-префиксы" было именно то, что
> эта логика тупо быстрее работает (конкретно бинарник, конкретно на
> процессоре). А быстродействие тогдашних машин, да и при той нагрузке
> на роутинг толстых каналов... короче выгадывали. Да что там - сами
> Си'шные структуры для работы с нетом были скомпонованы с некоторыми
> извратами. С тех пор эти уши так и торчат.

Тогда это может быть было актуально. Были времена когда и "640 kb
хватало для любых приложений". Но времена меняются - PF чай не в 1980
году написан.

> А можно поподробнее, про "спускаться до низу, делая аж 32 шага"?
> Вроде бы как Александр показал выше, что логика с маской записывается
> проще некуда...

Ну представьте себе таблицу для фильтрации IP адресов, или таблицу
роутинга. Каждому префиксу сопоставлено действие или маршрут.
Как вы будете в этой таблице искать?

Можно последовательно сравнив все префиксы с вашим адресом.
Тогда если в таблице 100000 префиксов, потребуется столько же сравнений.

Можно выстроить все префиксы в дерево. Тогда на каждом шаге мы будем
спускаться "вглубь" на один бит, пока не дойдем до маски /32.

Разумеется, обход может оборваться и раньше, поскольку на практике
маски больше /24 редки, но все же даже в этом случае вам сделать 24 шага
вниз (в худшем случае). Как-то так, если на пальцах.


--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
25 ноября 2010 г. 18:34 пользователь Andrew Jelly
<[hidden email]> написал:
> On 25/11/10 12:49, Anton Maksimenkov wrote:
>> Насколько я помню одной из причин "маски-префиксы" было именно то, что
>> эта логика тупо быстрее работает (конкретно бинарник, конкретно на
> для любых приложений". Но времена меняются - PF чай не в 1980
> году написан.
Ну так и нагрузки с тех пор возросли ;)

>> А можно поподробнее, про "спускаться до низу, делая аж 32 шага"?
> Можно выстроить все префиксы в дерево. Тогда на каждом шаге мы будем
> спускаться "вглубь" на один бит, пока не дойдем до маски /32.

Я так понимаю что раз например в том же роутинге нужно выбрать
например наиболее "совпадающую" сеть, с наименьшей то есть маской - то
получается что наша задача в том, чтобы подобрать наиболее длинную
саму сеть, "до маски" (от 10.0.0.0/16 получается 10.0, а от
10.0.1.0/24 получается 10.0.1, что длиннее).
Вот для этой конкретной хрени radix-tree кажется и запридумали.
А для диапазонов оно не подойдёт. Так кажется.

И ещё. Для проверки "попадания в маску" надо ОДИН &.
А для попадания в диапазон нужно ДВА сравнения.
:)
--
antonvm
1234