Перейти к контенту
  • 0

Глюк в IPB 2.0 RC1


Вопрос

Есть у меня на форуме один мембер, ник у него 007. Раньше всё нормально было. Теперь, в IPB 2.0 RC1, в списке онлайн участников, в авторе темы его ник выглядит не как 007, а как 7. Можно ли это как-то исправить, чтоб IPB не глотал первые нули :D
Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

saman

может он проглотил после апгрэйда, и если добавить щяс нули, они отобразятся ? Или в БД он с нулями ?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Попробуй просто его переимновать.

Хотя именно этого и следовало ожидать.

Где-то в исходнике 2.0 я видел кусок, где параметры, которые после intval() остаются равны себе же, возвращаются как intval (редкой непонятности решение ;) )

 

Если переименование не поможет, надо будет исходники патчить.

Но в каком месте - мне копаться в лом :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В БД он отображается как 007. Переименовка результата не принесла.

Так что, Balancer, кланяюсь до земли и прошу найти этот кусок кода, ибо это безобразие надо исправлять.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>прошу найти этот кусок кода, ибо это безобразие надо исправлять.

 

Ок, уговорили :D

 

В ips_kernel/class_db_mysql.php

 

найти

           if (is_numeric( $v ) and intval($v) == $v )
           {
               $field_values .= intval($v).",";
           }
           else
           {
               $field_values .= "'$v',";
           }

и заменить на

           $field_values .= "'$v',";

найти

           if (is_numeric( $v ) and intval($v) == $v )
           {
               $return_string .= $k . "=".intval($v).",";
           }
           else
           {
               $return_string .= $k . "='".$v."',";
           }

заменить на

           $return_string .= $k . "='".$v."',";

 

И ты не прав - в базе запись уже с ошибкой, ошибка возникает именно при сохранении данных.

 

Кстати, можете Мэтту передать, чтобы так больше не делал, с точки зрения MySQL экономии нет в том, что ему в запрос INT вместо VARCHAR подсовывают, а с точки зрения PHP - проигрышь по скорости. Ну и, вот, такюй баг. Любой числовой параметр, начинающийся с нулей будет искажён.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ага, передадим, где наша Iris? ;)

И ты не прав - в базе запись уже с ошибкой, ошибка возникает именно при сохранении данных.

А хрен знает, я уже после 100 переименовки смотрел. Кстати, когда через панель IPB я чуваку обратно вписывал 007, то у меня Apache вылетал :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

После того как проделаю изменения в коде, не могу удалить логи ботов, пишет что-то, я не помню, извените не записал. А файл по новой залил. Может это только у меня, коряво сделал, гляньте кто-нибудь.

Добавлено в [mergetime]1088874544[/mergetime]

mySQL query error: INSERT INTO ibf_admin_logs () VALUES('$v','$v','$v','$v','$v','$v')

mySQL error: Column count doesn't match value count at row 1
mySQL error code: 
Date: Saturday 03rd of July 2004 09:00:46 PM

Ссылка на комментарий
Поделиться на других сайтах

  • 0

saman в 2.0 запрещены ники начинающиеся с 0. Почему именно я говорить не буду, но это не безопасно.

 

Добавлено в [mergetime]1088875583[/mergetime]

Balancer безопасность излишней не бывает. Хотя можешь конечно убирать =)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>Balancer безопасность излишней не бывает. Хотя можешь конечно убирать =)

 

В данном случае этот код ничего общего с безопасностью не имеет. Смотри сам - если на входе число, то раньше оно подставлялось без апострофов, сейчас - с ними. Никакой разницы. Если на входе _не_ число, то кусок кода, вставляющий его не меняется. И где тут безопасность? :D

 

На безопасность Мэтту нужно смотреть не в десятках преобразований апострофа в ' и обратно, а в addslashes()/mysq_real_escape_string() при MySQL-вызовах. В заэкранированном параметре, заключённом в апострофе никакого вредоносного для базы кода не передашь. И не нужно столько мучений с преобразованием.

Добавлено в [mergetime]1088879417[/mergetime]

>Почему именно я говорить не буду, но это не безопасно.

 

Можешь сказать мне приватом? А то зуб даю, что никакой опасности там нет. Символ есть символ, пока с ним как с символом работают, а не пытаются в числа конвертить, как Мэтт ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

в запросе значения 1 и '1' , вроде, обрабатываются сервеным парсером не равнозначно, в плане времени.

Символ есть символ

а набор символов это уже комманда, а вот набор чисел на команду ну никак не тянет.

 

Мэтт не зеленый программист, это так к сведенью.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>в запросе значения 1 и '1' , вроде, обрабатываются сервеным парсером не равнозначно, в плане времени.

 

Одинаково :D По крайней мере - давно так уже.

А, вообще, даже если б не одинаково обрабатывались, на общем времени поиска по базе этот будут сотоые доли процента. Пренебрежимо ;)

 

>а набор символов это уже комманда

 

Её ещё интерпретировать нужно.

 

>а вот набор чисел на команду ну никак не тянет.

 

Вот как раз наборы чисел и есть всю жизнь - команды :)

 

Кстати, что ж тогда сам Мэтт пишет в духе:

       $this->obj['action_codes'] = array ( '00'  => array( '0'  , 'new_post'     ),
                                            '01'  => array( '1'  , 'new_post'     ),
                                            '02'  => array( '0'  , 'reply_post'   ),
                                            '03'  => array( '1'  , 'reply_post'   ),
                                            '08'  => array( '0'  , 'edit_post'    ),
                                            '09'  => array( '1'  , 'edit_post'    ),
                                            '10'  => array( '0'  , 'poll'         ),
                                            '11'  => array( '1'  , 'poll'         ),
                                            '14'  => array( '0'  , 'poll_after'   ),
                                            '15'  => array( '1'  , 'poll_after'   ),
                                          );

 

Как он смело принимает входные параметры с ведущими нулями! :)

 

>Мэтт не зеленый программист, это так к сведенью.

 

Посмотрев на код, который он пишет, так не скажешь. Такве перлы есть... Достаточно уже, как я сказал, его плясок вокруг & #39; и т.п.

 

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

   function make_password()
   {
       $pass = "";
       $chars = array(
           "1","2","3","4","5","6","7","8","9","0",
           "a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J",
           "k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T",
           "u","U","v","V","w","W","x","X","y","Y","z","Z");

       $count = count($chars) - 1;

       srand((double)microtime()*1000000);

       for($i = 0; $i < 8; $i++)
       {
           $pass .= $chars[rand(0, $count)];
       }

       return($pass);
   }

 

За 5 минут его можно переделать к виду

   function make_password()
   {
       $pass = '';
       $chars = '1234567890aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ';
       for($i = 0; $i < 8; $i++)
           $pass .= $chars[rand()%62];

       return($pass);
   }

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

 

А то, что форум до сих пор с NOTICE-предупреждением мусора море сыплет?

А куча заэкранированных функций в исходниках, когда он вместо того, чтобы предусмотреть реакцию на ошибки, просто на неё забивает.

А дурацкая система скинов в 1.x?

А что за мудрость была сейчас скины в БД запихнуть?

А как долго в boink_it() жил глюк с & #entryNNN в конце URI.

И т.д. и т.п.

 

Хотя ещё больше страдает у него не оптимизация, а идеология. Ядро форума 2.0 нужно было избавлять от множества недостатков 1.x

 

Он, конечно, не зелёный программист, но я видел немало совершенно зелёных, пишущих код не хуже, чем у него, ни по скорости, ни по эффективности, ни по надёжности :)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вот как раз наборы чисел и есть всю жизнь - команды :D

если вы имете ввиду последовательность 1-иц и 0-ей...

 

Как он смело принимает входные параметры с ведущими нулями! ;)

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

 

За 5 минут его можно переделать к виду

у вас пароли будут иметь большую предсказуемость

 

А то, что форум до сих пор с NOTICE-предупреждением мусора море сыплет?

это проблема любого скрипта.

 

А куча заэкранированных функций в исходниках, когда он вместо того, чтобы предусмотреть реакцию на ошибки, просто на неё забивает.

я уже про это писал.

 

А дурацкая система скинов в 1.x?

ну кому как. На вскидку я не видел ни одной нормальной шаблонной системы. Ну Smarty м.б. если бы какой нибудь лайт был.

 

А что за мудрость была сейчас скины в БД запихнуть?

в столь вами нахваливаемом vB такая система была изначально, она позволяет уйти от safe mode restriction effect.

 

А как долго в boink_it() жил глюк с & #entryNNN в конце URI.

цепляетсь к мелочам.

 

Хотя ещё больше страдает у него не оптимизация, а идеология. Ядро форума 2.0 нужно было избавлять от множества недостатков 1.x

пилите, Шура, пилите. Меня иногда поражает насколько людям нравится критиковать что то чужое, причем критиковать до посинения. Может вы сами напишете форум и покажете нам как надо писать?!?

 

Вы код vB видели, если нет сходите посмотрите, а лучше попробйуте какой нибудь функционал переписать/дописать. Очень интересно будет почитать комментарии по этой теме.

Добавлено в [mergetime]1088884144[/mergetime]

Её ещё интерпретировать нужно.

интерпритатор сервера с удовольствием это сделает =)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Он, конечно, не зелёный программист, но я видел немало совершенно зелёных, пишущих код не хуже, чем у него, ни по скорости, ни по эффективности, ни по надёжности :D

про программеров вообще есть хороший анекдот по этому поводу. Он слишком длиный, в кратце, показывается "эволюция" программиста на примере написания программы Hello World.

 

Так вот чем больше ты знаешь, тем сложнее и запутанее получается код, потому как пытаешься извратится и охватить все мелочи, причем сделать это как можно универсальнее. Горе от ума, так это называется.

 

Тоже туда же: "Помни, Ноев ковчег был построен любителем. Профессионалы построили Титаник."

Ссылка на комментарий
Поделиться на других сайтах

  • 0
ладно, всё с тобой ясно ;) Дальше можно уже не продолжать :D

не ну у тебя даже таймер не запущен. У тебя rand будет выдавать одно и тоже при каждом запуске.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

0. "Запускать таймер"? Это как?? :) :)

1. RTFM

2. Даже для ОЧЕНЬ старых версий PHP, когда инициацию ГСЧ надо было вызывать, её вызов стоило прописывать лишь один раз в include-файл. Запихивая функцию рандомизации от таймера в кучу функций ты только _ухудшаешь_ качество ГСЧ. Более того, это явная алгоритмическая ошибка. Так две таких функции, вызванных с небольшим интервалом вернут тебе _одинаковый_ результат! Попробуешь догадаться почему? :D

 

На самом деле у тебя и все остальные комментарии в том же духе.

 

От балды:

 

>это проблема любого скрипта.

 

Это проблема любого _неаккуратного_ скрипта, в котором есть _потенциальные ошибки_. Вот у меня, почему-то, в моих скриптах, уровень сложности которых сопоставим с iBF, нет ни одного NOTICE, за исключением ну совсем уж старых ~четырёхлетней давности, когда я только-только пересаживался с Perl на PHP. Да и в iBF все Notice достаточно быстро устраняются. Просто Мэтту это делать _лень_. Об этом же говорит и куча экранированных функций, и беспорядок с flush()/header(), о котором я писал после первого PDR, и уже приводимые мною ошибки в fwrite()/fputs(), когда он явно указывает объём записанной информации в символах, а не байтах и т.д. и т.п.

 

В общем, интересно будет послушать о тех или иных багах и недоработках - пожалуйста. А вести спор такого уровня - мне просто не интересно ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Рассуждение ламера на этот счёт, вот пишет Balancer

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

Берет ипереписывает его за 5 минут, хорошо.

Потом пишет

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

Я конечно полный 0 в php и моё мнение это просто так, мысли ввслух.

Так вот, Balancer говорит в 3, раз человек говорит в трое, а не к примеру в двое, или там чуть по быстрее, то есть он хочет отметить что код очень, очень плохой. Но почему тогда IPB на уступает по скорости загрузки vBulletin или там тоже код как у бабушки?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Balancer

Чёт ошибку вызывает как у Gogy твой код ;)

Впринципе это один пользователь у меня с нулями, мож ник ему сменить? :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
0. "Запускать таймер"? Это как?? ;):)

это инициализировать генератор случайных (псевдо) чисел. Называю так потому что в Басике была такая муть RANDOMIZE TIMER.

1. RTFM

действительно

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

только вот беда, я пишу под PHP4 а не под PHP версий 4.2.0 и выше.

На самом деле у тебя и все остальные комментарии в том же духе.

твои комментарии тоже для mySQL версии 4 и PHP последних версии. Вернитесь на землю, пишется не под определенные версии, и не под определенную платформу.

беспорядок с flush()/header()

а если при модификации кода некто до вывода возмет и поставит пробел где нибудь перед <?php. Не разработчик, а пользователь. Ты это тоже будешь отслеживать, дабы варнинг не вылез?!? :)

В общем, интересно будет послушать о тех или иных багах и недоработках - пожалуйста. А вести спор такого уровня - мне просто не интересно :D

ну конечно, куда уж нам до гигантов отечественного программо- скриптостроения.

 

Так вот, Balancer говорит в 3, раз человек говорит в трое, а не к примеру в двое, или там чуть по быстрее, то есть он хочет отметить что код очень, очень плохой.

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>Так вот, Balancer говорит в 3, раз человек говорит в трое, а не к примеру в двое, или там чуть по быстрее, то есть он хочет отметить что код очень, очень плохой.

 

Я хочу только отметить, что не поленился в FAR'е набить timer: php <имя_файла> для обеих вариантов.

 

>Но почему тогда IPB на уступает по скорости загрузки vBulletin или там тоже код как у бабушки?

 

Значит, vB написана ещё хуже. Просто в её коде я не копался.

 

>Чёт ошибку вызывает как у Gogy твой код

 

Ну, значит, вписал криво :D У меня же работает на PDR5.

Может, криво раскраска сработала, она глючит.

Ладно, совсем тупая подмена:

В вышеуказанных фрагментах вместо if(...) пиши if(0 && ...) - т.е. проверка будет всегда ложной. Почистить потом всегда можно.

 

>только вот беда, я пишу под PHP4 а не под PHP версий 4.2.0 и выше.

 

Я там ниже и по этому поводу комментариц делал. Ты его принципиально проигнорировал?

 

>а если при модификации кода некто до вывода возмет и поставит пробел где нибудь перед <?php. Не разработчик, а пользователь.

 

А если он не пробел поставит, а, скажем, звёздочку. И не до <?php, а после. Вообще работать ничего не будет!

 

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

 

Естественно, тебе даже лень проверить. Исходный фрагмент делает 100k циклов за 3.8 секунды (минимальный результат из серии в 10 пусков), преобразованный - за 1.2

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я там ниже и по этому поводу комментариц делал. Ты его принципиально проигнорировал?

тогда нужно вообще все комментарии из RTFM удалить и написать то что ты там написал =)

 

А если он не пробел поставит, а, скажем, звёздочку. И не до <?php, а после. Вообще работать ничего не будет!

вылезит ошибка. А спробелом перед <?php все что не касается хедеров сработает нормально.

 

Исходный фрагмент делает 100k циклов за 3.8 секунды (минимальный результат из серии в 10 пусков), преобразованный - за 1.2

да с чего там такой прирост?

 

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

где я позорюсь то? На Бэйсике писал... Ну да я много языков знаю и Лисп там, и Пролог, я теперь вообще извращенец, наверное. Условие в Если заведомо ложное (если откинуть, то что баловался до универа, то в универе уже как 4-ый год приходится).

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>тогда нужно вообще все комментарии из RTFM удалить и написать то что ты там написал =)

 

Я писал про то, что рандомизацию нужно делать только один раз. вставлять рандомизацию от таймера внутрь функуции - это:

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

2. Сбивать последовательность хорошего ГСЧ отфонарной, повязанной на линейный параметр - время. Вообще, генераторы (псевдо)случайных чисел - это отдельная и немалая глава алгоритмической практики :D Так вот, то, как пишет Мэтт - за это мне бы в _химическом_ универе влепили пару на алгоритмике ;)

 

>вылезит ошибка. А спробелом перед <?php все что не касается хедеров сработает нормально.

 

И в том и в другом случае это будет ошибкой. Хедер-то не отработает, даже если он был заэкранирован. Просто об ошибке не сообщит. А вот это - хуже всего, когда кто-то об ошибке не сообщает.

 

>да с чего там такой прирост?

 

Дык, код посмотри! :) Во-первых, rand()%mod работает быстрее, чем rand(0,mod-1). Во-вторых, извлечение символов из строки происходит быстрее, чем строк из массива. В-третьих, не вычисляется константа - длина строки. Это всё элементарные вещи, которым ещё в 1990-м в школьных курсах информатики учили :)

 

>где я позорюсь то?

 

Когда с ошибочными выводами и предположениями выступаешь с таким апломбом и самоуверенностью :) Просто не знать чего-то - не страшно. Страшно, когда свои ошибки начинаешь на счит поднимать ;)

 

>На Бэйсике писал... Ну да я много языков знаю и Лисп там, и Пролог, я теперь вообще извращенец, наверное.

 

Так знаешь или пишешь? :lol: Это, как-то, две больие разницы. Скажем я знаю языков десятка два, но вот пишу - только на полудюжине. Вот по тем, которые "просто знаю" в спор не полезу. Зато те, "на которых пишу" - тут уж сорри, меня только конкретными примерами опровергнуть можно.

 

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

 

>Условие в Если заведомо ложное (если откинуть, то что баловался до универа, то в универе уже как 4-ый год приходится).

 

Ну, с моим опытом в 16 лет программирования спорить будем? :lol: Я на Бэйсике, Фокале и программируемых калькуляторах в 1988-м начал :D

 

Но, в любом случае, у меня есть примеры, когда человек и за 9 лет программировать толком не выучивался. Что не мешало ему выполнять заказы, зарабатывать деньги... Правда, например, вышеупомянутый деятель до сих пор использует одну мою библиотеку на C++ от 1996-го года :) Но он всегда и признавался честно - "моё дело - бери больше, кидай дальше". И в разработке схем у нас такая же фигня была. Я обычно проектировал, он с паяльником сидел :)

Добавлено в [mergetime]1088931664[/mergetime]

>инициализация значениями массива

 

В общем, если вернуться на землю, то понятно, что эти микросекунды роли не сыграют. Всё равно всё будет заторможено MySQL'ем, и по ресурсам процессора, и по памяти. Но, как я уже говорил, это просто пример кода.

 

Кстати, на Perl генерацию пароля можно ещё красивее сделать:

my @chars = ("A" .. "Z", "a" .. "z", 0 .. 9);
my $password = join("", @chars[map{rand @chars}(1..8)]);

 

100000 выполняется за 0.5 сек :lol: И даже функцию создавать не обязательно.

М.б. и дальше оптимизировать можно, но тут уже исследовать нужно.

А самое главное в программировании - найти золотую середину между временем потраченным на оптимизацию и выигрышем от этой оптимизации. См. мой ник :lol:

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я писал про то, что рандомизацию нужно делать только один раз. вставлять рандомизацию от таймера внутрь функуции - это:

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

2. Сбивать последовательность хорошего ГСЧ отфонарной, повязанной на линейный параметр - время. Вообще, генераторы (псевдо)случайных чисел - это отдельная и немалая глава алгоритмической практики :D Так вот, то, как пишет Мэтт - за это мне бы в _химическом_ универе влепили пару на алгоритмике ;)

ну в общем если бы та функция была частоиспользуемой(!) аки базовой тогда согласен с первым аргументом.

По второму пункту там не алг. практика, там отдельная область математики этим занимается, я там не был врать не стану =) Вплотную с ГСЧ столкнулся только в теории моделирования. Да и в прикладнухе нам вполне достаточно и хреновенького ГСЧ, так что сойдет и на времени,в PHP я вообще не видел других.

 

Так знаешь или пишешь? :)

писал и забыл как страшный сон =)

 

Ну, с моим опытом в 16 лет программирования спорить будем? :)

не не будем... надо было действительно посмотреть в начале... Однако. Там вся потеря в основном идет на заполнении массива данными.

 

дальше спорить глЮпо, признаю свои ошибки.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну и в завершение. Заинтересовало меня, что можно из PHP выжать на тему этой функции, раз уж на то пошло. Глядел ещё прошлый раз на array_shuffle(), но - массивы это медленно. Забросил было, а сегодня, мучаясь с глюками UTF-8, наткнулся на функцию str_shuffle() :D Сразу вспомнил и про это топик. Вот оно:

function make_password() { return substr(str_shuffle('1234567890aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ'),0,8);}

 

100000 вызовов за 0.45 сек. Быстрее, чем Perl-вариант ;)

 

В общем, в PHP много интересного :)

Добавлено в [mergetime]1088944158[/mergetime]

Вот только опять этот & #39; вместо апострофа лезет! :) При чём почему-то только первый поменялся :) Ох и глючное это решение, с такой подменой апострофов! ;)

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.