BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 дек 2024, 08:17

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 21 ] 
Автор Сообщение
СообщениеДобавлено: 30 авг 2011, 14:34 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 14 июл 2011, 13:32
Сообщения: 187
Откуда: г.Челябинск
Карма: 6
Объясните, пожалуйста, как посчитать битовую маску групп № 25, 26, 30, 31, 32, 33.

_________________
Работаем с 5.2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 авг 2011, 16:56 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
М.б. это (см. Работа с группами)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 11:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 14 июл 2011, 13:32
Сообщения: 187
Откуда: г.Челябинск
Карма: 6
Задам вопрос по другому:
Как считается вот такое выражение (функция):
mask = (1<<0) | (1<<1) | ( 1 << 2) = 1 + 2 + 4 = 7
Почему равно именно этому???

http://bgbilling.ru/v5.2/doc/ch04s02.html

Код:
#битовая маска групп для которых выгружаются реестры. Определяется следующим образом: откройте справочник групп,
#выделите позиции групп, начинающиеся с 0. Затем посчитайте выражение mask = 1<<gr1 | 1<<gr2...| 1<<grN
group.mask=262144


Как это считать?

_________________
Работаем с 5.2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 13:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Тут все просто - логические выражения в бинарном коде.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 13:56 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Напиши группы - посчитаю, и в вики пример выложим

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 15:19 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 14 июл 2011, 13:32
Сообщения: 187
Откуда: г.Челябинск
Карма: 6
skyb писал(а):
Напиши группы - посчитаю, и в вики пример выложим

группы id = 25, 26, 30, 31, 32, 33
Могу даже в бинарном коде написать:
25=11001
26=11010
30=11110
31=11111
32=100000
33=100001

_________________
Работаем с 5.2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 15:41 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Universe писал(а):
skyb писал(а):
Напиши группы - посчитаю, и в вики пример выложим

группы id = 25, 26, 30, 31, 32, 33
Могу даже в бинарном коде написать:
25=11001
26=11010
30=11110
31=11111
32=100000
33=100001


считаем:

mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long

Формула m << n в двоичной арифметике означает, что число m нужно умножить на 2 в степени n.
А операция | эквивалентна сложению.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 15:54 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 14 июл 2011, 13:32
Сообщения: 187
Откуда: г.Челябинск
Карма: 6
Цитата:
считаем:
mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long


Это получается: 16 206 790 663 Ты уверен, что это так считается?

_________________
Работаем с 5.2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 16:23 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Universe писал(а):
Цитата:
считаем:
mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long


Это получается: 16 206 790 663 Ты уверен, что это так считается?


В документации написано
Цитата:
mask = 1<<gr1 | 1<<gr2...| 1<<grN

Если вы привели реальные id групп из вашего биллинга, то считается именно так

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 16:45 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
Universe писал(а):
skyb писал(а):
Напиши группы - посчитаю, и в вики пример выложим

группы id = 25, 26, 30, 31, 32, 33
Могу даже в бинарном коде написать:
25=11001
26=11010
30=11110
31=11111
32=100000
33=100001


считаем:

mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long

Формула m << n в двоичной арифметике означает, что число m нужно умножить на 2 в степени n.
А операция | эквивалентна сложению.

Вот в доке или на вики бы так..;)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 16:47 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 14 июл 2011, 13:32
Сообщения: 187
Откуда: г.Челябинск
Карма: 6
Цитата:
Если вы привели реальные id групп из вашего биллинга, то считается именно так


Спасибо за подтверждение!

Надеюсь эта тема будет полезна кому-нибудь в будущем. )

_________________
Работаем с 5.2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 16:51 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
Artur писал(а):
Universe писал(а):
skyb писал(а):
Напиши группы - посчитаю, и в вики пример выложим

группы id = 25, 26, 30, 31, 32, 33
Могу даже в бинарном коде написать:
25=11001
26=11010
30=11110
31=11111
32=100000
33=100001


считаем:

mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long

Формула m << n в двоичной арифметике означает, что число m нужно умножить на 2 в степени n.
А операция | эквивалентна сложению.

Вот в доке или на вики бы так..;)

Нет желания выложить? =)

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 авг 2011, 17:02 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
skyb писал(а):
Artur писал(а):
Universe писал(а):
skyb писал(а):
Напиши группы - посчитаю, и в вики пример выложим

группы id = 25, 26, 30, 31, 32, 33
Могу даже в бинарном коде написать:
25=11001
26=11010
30=11110
31=11111
32=100000
33=100001


считаем:

mask = ( 1 << 25 ) | ( 1 << 26 ) | ( 1 << 30 ) | ( 1 << 31 ) | ( 1 << 32 ) | ( 1 << 33 ) = 1 * 2^25 + 1 * 2^26 + 1 * 2^30 + 1 * 2^31 + 1 * 2^32 + 1 * 2^33 = большое число типа long

Формула m << n в двоичной арифметике означает, что число m нужно умножить на 2 в степени n.
А операция | эквивалентна сложению.

Вот в доке или на вики бы так..;)

Нет желания выложить? =)

Завтро, и ещё более наглядно распишу как работать с группами
gr&(1<<19)=0
Вот это объясню

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 сен 2011, 07:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
http://wiki.bgbilling.ru/index.php/%D0% ... 0%BA%D0%B8
Поправьте если ошибся.
А, и да, если все правильно - может в доку добавить ссылку?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 сен 2011, 11:16 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Я думаю стоит объяснить что группа - это битовая маска, а тот тут девушка стала бинарные представления групп приводить.
Группа 32, это не 10000 в двоичном коде, а 32й бит в маске, т.е. 000000000000000000000000000000000000100000000000000000000000000000000000.
Если абонент в нескольких группах, то биты устанавливаются соответственно в разрядах совпадающих с номерами групп:
000000000000000000000000000000000000100000000000000000000000000001000001 - группы 1, 6 и 32 к примеру. Вычислив маску и получив двоичное число - переводим ее в десятичную запись чем угодно (хоть виндовым калькулятором) - и все. По сути алгоритм приведенный выше и есть привод двоичного значения маски в десятичный вид.
Отсюда и ограничение на 64 группы в биллинге - именно столько бит в типе данных long.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 сен 2011, 11:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
2 Феанор добавил бы в вики ;)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 сен 2011, 16:31 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Феанор писал(а):
PS спрашивается зачем такие сложности, почему бы не хранить значения групп через запятую - но так больше места занимает, дольше проверки - побитовое же сравнение макси - наибыстрейшая операция.


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

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 сен 2011, 19:21 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
Напишу в тудушку, но это будет не сразу

Я тут тока разорался с битовыми масками ))))

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 сен 2011, 17:09 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
Artur писал(а):
Напишу в тудушку, но это будет не сразу

Я тут тока разорался с битовыми масками ))))

И это хорошо! Я ж не завтра все переделаю =)

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2011, 13:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
для людей не считающих в уме: открываем какой-нибудь калькулятор, тыкаем биты с нужным номером мышью и вуаля-получаем маску общую:

Вложение:
Снимок-Калькулятор.png
Снимок-Калькулятор.png [ 44.92 КБ | Просмотров: 21622 ]

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2011, 15:43 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Artur писал(а):
Феанор писал(а):
PS спрашивается зачем такие сложности, почему бы не хранить значения групп через запятую - но так больше места занимает, дольше проверки - побитовое же сравнение макси - наибыстрейшая операция.


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

а я не про модуль писал, а про группы в биллинге вообще =)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.070s | 63 Queries | GZIP : On ]