За последние 24 часа нас посетили 36538 программистов и 2629 роботов. Сейчас ищет 971 программист ...

Наш индийский код....

Тема в разделе "Прочее", создана пользователем admyx, 1 дек 2008.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык мне понятен результат.

    я не понимаю смысла конструции
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Если глобалсы включены, то unset-нуть всё что через них могло плохого передаться...
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не понял
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    эта конструкция удаляет все переменные с заданными в массиве именами
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а!
    т.е.
    $a = 'a';
    ${'a'}='b';
    echo '$a='.$a; //Result: $a=b

    так?

    UPD: так! =)
     
  6. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    капец я наговнокодил.
    Этож надо было.

    PHP:
    1. <?php
    2. function _genKey()
    3. {
    4.     $key = parent::_gen();
    5.  
    6.     if(strlen($key) < 10)
    7.         return self::_genKey();
    8.     else
    9.         return $key;
    10. }
    вместо

    PHP:
    1. <?php
    2. function _genKey()
    3. {
    4.     $str = null;
    5.     for($i = 0; $i < 10; $i++)
    6.         $str .= rand(0, 9);
    7.  
    8.     return $str;
    9. }
    КМП
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Padaboo

    PHP:
    1.     <?php
    2. function newPass($num){
    3.         $s="qwertyuiopasdfghjklzxcvbnm";
    4.         $s .=strtoupper($s);
    5.         $s .="0123456789";
    6.         $s .=$s.$s.$s;
    7.         $s=str_shuffle($s);
    8.         return substr($s,0,$num);
    9.     }
    10.  
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    PHP:
    1.        
    2. <?php
    3.         if(mb_strlen($cpu, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    4.         if(mb_strlen($memory, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    5.         if(mb_strlen($hdd, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    6.         if(mb_strlen($video, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    7.         if(mb_strlen($monitor, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    8.         if(mb_strlen($sound, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    9.         if(mb_strlen($keyboard, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    10.         if(mb_strlen($mouse, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    11.         if(mb_strlen($phone, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    12.         if(mb_strlen($os, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    13.         if(mb_strlen($internet, 'UTF-8') > 100) $erno = 'Неверно заполнены поля';
    :D Йа крутой)
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Апельсин :shock: :)
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    PHP:
    1.     <?php
    2.         /**
    3.          * Функция возвращает true, если данные в позиции $otkuda из строки $gde не взяты в одинарные кавычки
    4.          *
    5.          * @param string $gde Строка в которой происходит проверка
    6.          * @param int $otkuda Позиция для которой происходит проверка
    7.          * @return boolean Резултат проверки
    8.          */
    9.         protected function notInQutes($gde,$otkuda){
    10.             $posQ2=-1;
    11.             $posQ1=-1;
    12.             while ($posQ1!==false){
    13.                 $posQ1=strpos($gde,"'",$posQ2+1); //Находим открывающий апостроф
    14.                 $flag=true;
    15.                 $posQ=$posQ1;
    16.                 while ($flag and $posQ2!==false) {
    17.                     $posQ2=strpos($gde,"'",$posQ+1); //Находим закрывающий апостроф
    18.                     $posQ=strpos($gde,"'",$posQ2+1); //Находим символ экранирования
    19.                     //Если нашли не экранированный апостроф, то выходим из цикла
    20.                     if ($posQ!==$posQ2+1){
    21.                         $flag=false;
    22.                     }
    23.                 }
    24.                 //Если нашли два апострофа
    25.                 if ($posQ1!==false && $posQ2!==false){
    26.                     //Если позиция между апострофами
    27.                     if ($posQ1<=$otkuda && $otkuda<=$posQ2){
    28.                         return false;
    29.                     }
    30.                     //Если первый апостроф правее позиции, значит все возможожные пары до этого уже проверены.
    31.                     if ($otkuda<$posQ1){
    32.                         return true;
    33.                     }
    34.                 }
    35.             }
    36.             return true;
    37.         }      
    38.  
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    [sql]CREATE PROCEDURE get_rands(IN cnt INT,_cat_id INT(11),_city_id INT(11),_table varchar(64))
    BEGIN
    SET @Q = CONCAT('CREATE TEMPORARY TABLE ',_table,' ( rand_id INT )');
    PREPARE stmt1 FROM @Q;
    EXECUTE stmt1;

    loop_me: LOOP
    IF cnt = 0 THEN
    LEAVE loop_me;
    END IF;
    set @q2 = CONCAT('INSERT INTO ', _table ,
    ' SELECT `vip`.`product_id`
    FROM `vip`
    JOIN (
    SELECT `vip_equi_dist`.`vip_id`
    FROM `vip_equi_dist`
    JOIN (
    SELECT (RAND() * (SELECT MAX(`id`) FROM `vip_equi_dist`)
    ) AS row_id
    ) AS r2
    WHERE `vip_equi_dist`.`id` >= r2.`row_id`
    ORDER BY `vip_equi_dist`.`id` ASC
    LIMIT 1) AS ROWS ON (id = vip_id)
    WHERE `vip`.`cat_id` =', _cat_id, ' AND `vip`.`city_id` = ', _city_id, ' AND `vip`.`time` > UNIX_TIMESTAMP()');
    prepare stmt2 from @Q2;
    execute @Q2;
    SET cnt = cnt - 1;
    END LOOP loop_me;
    END//[/sql]
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Padaboo
    Мне бы таких индусов которые такое пишут... Миллионером бы стал.... (попадаются чаще те кто даже такого не напишут...)
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  15. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Мда, наткнулся сегодня на хранение double в типе text.
    SELECT SUM() плачет кровавыми слезами.
    И вместо user id хранятся сразу логины. И тоже в text.
    Зато bool пишется как int(11).
    Индусы, мать их.
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Нормальный подход ИМХО.
    В таблице комментов храним в поле логин непосредственно и поле с user_id (чтобы не потерять настоящего).
    Разгрузка весьма существенная, проверено на сайте новостной газеты Истонеи
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Удобно, если система разрешает в равной степени идентифицировать пользователя по id, логину и e-mail. Когда они внутри системы на самом деле эквивалентны.
     
  18. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Это ты к чему?
     
  19. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Лоховской подход :) То что быстрее - это да. Но то что система обростает ненужными зависимостями - это херово. А вдруг завтра понадобится сделать смену логина для юзера. Делать костыль изначальной проверки ИД, потом имя и потом колбаса выйдет, а не код. Считаю идентификацию юзера по его номеру - самый гуд.
    Хотя надо видеть конкретный случай.
     
  20. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Быстрее, согласен.
    Но тогда хотя бы и uid хранить, а не только логин.

    Ну и при смене данных юзверя тоже придется менять во всех таких местах.
     
  21. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Лоховский подход это если ты пишешь гостевую себе на сайт.
    Если посещаемость проекта до 300 000 в сутки, а на странице десятки интернациональных модулей, каждый из которых выёбывается своим "нелоховским подходом и знанием", то комфорта для пользователей ноль.

    Посетителю плевать, что база денормализирована - он оценивает общую схему и скорость работы сайта.
    И операция, которая выполняется в СОТНИ! и даже ТЫСЯЧИ раз реже, может и должна быть рассмотрена как частный случай. Выборка комментариев производится постоянно, обновление логина в профиле - это ЧАСТНЫЙ и очень РЕДКИЙ случай.
     
  22. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А я что написал ёпт?
    Читаем внимательнее.
     
  23. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Apple
    Я прекрасно видел, что ты написал.
    И с этим, в общем, согласен.
    Я на программера сетую, который это писал.
     
  24. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Так же хочу добавить, что полтора месяца назад я тоже дрожал за джойны и красивый код.
    Но вышло так, что на работе мы разрабатываем не сферические проекты в вакууме, а абсолютно реальные и посещаемые веб-приложения, где нужно понимать не только как использовать джойны, но и как их НЕ использовать.
    Нужно понимать не только то, что мало запросов - это хорошо, но и то, когда много запросов может рассматриваться нормой.
     
  25. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Apple
    Ну я понял-понял, себе так делал, чтобы юзеры могли писать коменты как от гостей (name=aaa, ид тогда = 0), и как залогинившиеся (name=aaa, ид = 23232), чтобы отличить где Гость Апельсин, а где пап... настоящий зарегистрированный Апельсин.
    Но мне дублирование одной и той же инфы не пришлось по душе. Предпочел лишний запрос и "гибкость" кода, чем скорость.

    UPD. Не на свой счет прочитал ответ, но оставлю для копилки.