нты могут присутствовать по отдельности или в сочетаниях: метилендиоксипировалерон (мдпв метилон или мефедрон; пировалерон и пипрадол. Это нездоровое состояние гасит все разумные мысли, что он губит будущее другого человека. Занятия с ней действительно мне помогали. Также узнать, что человек принимал наркотики можно по имеющимся в крови антителам, которые вырабатываются для защиты организма от опасного препарата. Наравне с известными более века кокаином, героином, амфетамином создается активный оборот «молодежных» синтетических психостимуляторов. Эти аптечные наркотики очень непросто купить в аптеке, так как не каждый врач имеет право выписать такой рецепт. Химическая формула Активное обращение «солей» началось менее 10 лет назад. Отходняк от амфетамина Даже после первого приема не удастся избежать неприятных последствий. У меня в рюкзаке было еще несколько граммов с прежней дозы. По поводу действенности и методов некоммерческих социальных ребцентров тут, на мой взгляд, можно ориентироваться на реестр Минздрава. По причине недостатка кальция, зубы крошатся и разрушаются, болит язык. По воздействию похожи на опиум. Сегодня аптечная наркомания является серьезной проблемой общества. Основных блоки препаратов, называемых как аптечные наркотики:. . Сначала мы договорились, что это будет анонимный рассказ. Лабораторное сырье для производства фенилэтиламин. И. Из чего складывается общий рейтинг? Именно болезненная ломка становится причиной, по которой человек начинает употреблять следующую дозу. Мы собирались в популярных тогда клубах: музыканты, скейтеры. На одном из занятий, например, мы разбирали три часа детскую сказку «Курочка Ряба». Покупала на то, что заработала сама. Все эти свойства возможны по причине высвобождения адреналина, дофамина и норадреналина, вследствие приема амфетамина. Н. На практике это вторая третья (после передозировок и травм на фоне измененного сознания) причина летальных исходов среди употребляющих амфетамины. Это затрудняет определение зависимости. Антитела сохраняются в кровеносной системе около четырех месяцев. Потом озвучили цену, 28 дней реабилитации стоили 98 тысяч рублей. Безобидного употребления наркотиков не существует, говорит главный нарколог УрФО Антон Поддубный. Ломка же, при отсутствии поступления фена в организм, провоцирует появление полностью противоположных ощущений. Разница ощутима только в стоимости. Женщины нередко начинают принимать вещество, чтобы похудеть, и попадают в зависимость.

конечно все "плохо" и 200 тисячники это по Вашим словам мелкие ISP.Начало попахивать... прошло 2 года списка недочётов так и не получилиНе до такой степени мне скучно. Вступаю в жуткий оффтоп, прошу прощения.Рассмотрим код из модуля авторизации функцию выдачи IP адресов, с позволения автора abills.#*******************************************************************1759 # returns:1760 #1761 # -2 - No Free Address in TP pool1762 # -1 - No free address in nas pool1763 # 0 - No address pool using nas servers ip address1764 # 192.168.101.1 - assign ip address1765 #1766 # get_ip($self, $nas_num, $nas_ip)1767 #*******************************************************************1768 sub get_ip {1769 my $self = shift;1770 my ($nas_num, $nas_ip, $attr) = @_;1771 1772 if (! $self->{LOGINS}) {1773 $self->{USER_NAME} = '' if (! $self->{USER_NAME});1774 $self->query2("SELECT INET_NTOA(framed_ip_address) AS ip FROM dv_calls 1775 WHERE user_name='$self->{USER_NAME}' 1776 AND status=11 1777 AND nas_id='$nas_num'1778 AND framed_ip_address > 0;");1779 if ($self->{TOTAL} > 0) {1780 return $self->{list}->[0]->[0];1781 }1782 }1783 1784 if ($attr->{TP_IPPOOL}) {1785 $self->query2("SELECT ippools.ip, ippools.counts, ippools.id, ippools.next_pool_id1786 FROM ippools1787 WHERE ippools.id='$attr->{TP_IPPOOL}'1788 ORDER BY
официальный ippools.priority;"1789 );1790 delete($attr->{TP_IPPOOL});1791 }1792 else {1793 $self->query2("SELECT ippools.ip, ippools.counts, ippools.id, ippools.next_pool_id 1794 FROM ippools, nas_ippools1795 WHERE ippools.id=nas_ippools.pool_id AND nas_ippools.nas_id='$nas_num'1796 ORDER BY ippools.priority;"1797 );1798 }1799 1800 if ($self->{TOTAL} < 1) {1801 return 0;1802 }1803 1804 my @pools_arr = ();1805 my $list = $self->{list};1806 my @used_pools_arr = ();1807 my $next_pool_id = 0;1808 1809 foreach my $line (@$list) {1810 my $sip = $line->[0];1811 my $count = $line->[1];1812 my $id = $line->[2];1813 $next_pool_id = $line->[3];1814 push @used_pools_arr, $id;1815 my %pools = ();1816 1817 for (my $i = $sip ; $i <= $sip + $count ; $i++) {1818 $pools{$i} = 1;1819 }1820 push @pools_arr, \%pools;1821 1822 if($next_pool_id) {1823 last;1824 }1825 }1826 1827 my $used_pools = join(', ', @used_pools_arr);1828 1829 #Lock table for read1830 $self->{db}->do('lock tables dv_calls as c read, nas_ippools as np read, dv_calls write');1831 #get active address and delete from pool1832 # Select from active users and reserv ips1833 $self->query2("SELECT c.framed_ip_address1834 FROM dv_calls c1835 INNER JOIN nas_ippools np ON (c.nas_id=np.nas_id)1836 WHERE np.pool_id in ( $used_pools )1837 GROUP BY c.framed_ip_address;"1838 );1839 1840 $list = $self->{list};1841 $self->{USED_IPS} = 0;1842 1843 my %pool = %{ $pools_arr[0] };1844 1845 for (my $i = 0 ; $i <= $#pools_arr ; $i++) {1846 %pool = %{ $pools_arr[$i] };1847 foreach my $ip (@$list) {1848
hydra if (exists($pool{ $ip->[0] })) {1849 delete($pool{ $ip->[0] });1850 $self->{USED_IPS}++;1851 }1852 }1853 last if (scalar(keys %pool) > 0);1854 }1855 1856 my @ips_arr = keys %pool;1857 my $assign_ip = ($#ips_arr > -1)? $ips_arr[ rand($#ips_arr + 1) ] : undef;1858 1859 if ($assign_ip) {1860 # Make reserv ip1861 if (! $attr->{SKIP_RESERV}) {1862 $self->online_add({ %$attr, 1863 NAS_ID => $nas_num,1864 FRAMED_IP_ADDRESS => $assign_ip,1865 NAS_IP_ADDRESS => $nas_ip1866 });1867 }1868 1869 $self->{db}->do('unlock tables');1870 if( $self->{errno} ) {1871 return -1;1872 }1873 else {1874
hydrapchela $assign_ip = int2ip($assign_ip);1875 return $assign_ip;1876 }1877 }1878 else { # no addresses available in pools1879 $self->{db}->do('unlock tables');1880 if($next_pool_id) {1881 return $self->get_ip($nas_num, $nas_ip, { TP_IPPOOL => $next_pool_id });1882 }1883 elsif ($attr->{TP_IPPOOL}) {1884 return $self->get_ip($nas_num, $nas_ip, $attr);1885 }1886 else {1887 return -1;1888 }1889 1890 }1891 return 0;1892 } Запомним цифру 200000 ip адресов. Движемся по коду и останавливаемся на самых интересных местах.Предположим авторизацию проходит 130001 пользователь.Есть в базе пулы ip адресов, сомневаюсь что они там все внесены по /24, поэтому возьмем из реального примера /19. Есть пробелы в знаниях с perl поэтому предположение, что если выполняется данная конструкция if ($next_pool_id) last то в хэш еще добавятся много элементов.SELECT ippools.ip, ippools.counts, ippools.id, ippools.next_pool_id FROM ippools WHERE ippools.id='$attr->{TP_IPPOOL}' ORDER BY ippools.priorityОбрабатываем полученные данные и формируем из них хэш ~8189 эл. my %pools = ();1816 1817 for (my $i = $sip ; $i <= $sip + $count ; $i++) {1818 $pools{$i} = 1;1819 }1820 push @pools_arr, \%pools;1821 1822 if($next_pool_id) {1823 last;1824 }Тут даже с комментариями код. Лочим таблицы с активными пользователями на чтение а потом еще и на запись, для меня это странно но тут я могу что то упускать (не гуру я sql да и perl).Вытягиваем ip адреса активных пользователей, их у нас там в данный момент 130000.#Lock table for read1830 $self->{db}->do('lock tables dv_calls as c read, nas_ippools as np read, dv_calls write');1831 #get active address and delete from pool1832 # Select from active users and reserv ips1833 $self->query2("SELECT c.framed_ip_address1834 FROM dv_calls c1835 INNER JOIN nas_ippools np ON (c.nas_id=np.nas_id)1836 WHERE np.pool_id in ( $used_pools )1837 GROUP BY c.framed_ip_address;"1838 );Далее происходит магия поиска свободного ip адреса методом вычитанием из всех сформированных в хэш и активных активных на текущий момент. $list = $self->{list};1841 $self->{USED_IPS} = 0;1842 1843 my %pool = %{ $pools_arr[0] };1844 1845 for (my $i = 0 ; $i <= $#pools_arr ; $i++) {1846 %pool = %{ $pools_arr[$i] };1847 foreach my $ip (@$list) {1848 if (exists($pool{ $ip->[0] })) {1849 delete($pool{ $ip->[0] });1850 $self->{USED_IPS}++;1851 }1852 }1853 last if (scalar(keys %pool) > 0);1854 }1855 1856 my @ips_arr = keys %pool;1857 my $assign_ip = ($#ips_arr > -1)? $ips_arr[ rand($#ips_arr + 1) ] : undef;1858 1859 if ($assign_ip) {1860 # Make reserv ip1861 if (! $attr->{SKIP_RESERV}) {1862 $self->online_add({ %$attr, 1863 NAS_ID => $nas_num,1864 FRAMED_IP_ADDRESS => $assign_ip,1865 NAS_IP_ADDRESS => $nas_ip1866 });1867 }1868 1869 $self->{db}->do('unlock tables');Фух, выдохнул скрипт, отдал IP и разлочил таблицу, но не тут то было, прилетел 130002 и давай по новой. В предыдущих версиях данного модуля было более интереснее, но как видим телодвижения разработчиков были. прошло 2 года списка недочётов так и не получилиНу не стоит у меня на тягомотину, скучно очень...ps:/ Помните было от меня сообщение, как ваши клиенты оставляли свои логины и пароли от своих реальных биллинговых систем, которые получить не составляло реального труда. Я как порядочный человек проверил свою теорию на каком то Киевском ISP уже не помню название, потом на луганском ISP естественно ничего не трогая, получив accept я закрывал соединения, логи уже наверное потерлись у ребят, да и IP были восточных товарищей. Ваша оплошность в данной ситуации не велика, кто же заставлял товарищей администраторов в демке оставлять о себе инфу. Я отнесся по человечески и эту инфу нигде не разглашал, а сразу передал ее вам.Возможно когда то я всерьез поставлю цель заняться тестированием вашего продукта, но явно не ближайшие 2 года.ps:/ ps:/ Asmodeus, благодаря вам мне пришлось разобраться немного с perl, опыт был полезен, спасибо.