Зачетный аутсорсинг PHP проекта

    Достался один проектик, написанный румынскими аутсорсерами для немцев.

    В следующей процедуре румыны проверяют, дал ли пользователь допустимое имя таблице для MySQL (имя вводится в форму, по нему создается таблица).

    Что делает этот кусочек кода? Определяет, есть ли в строке пробел. Для этого румынские умельцы определяют длину строки, удаляют из строки все пробелы, снова определяют длину и сравнивают два значения:

    if( strlen( $pName ) != strlen( str_replace(" ", "", $pName) ) )
    {//contains spaces
        $isName = false;
    }

    Но этого им показалось мало. Далее в той же процедуре они проверяют всю строку на цифра/буква/подчеркивание:

    for ($i=0 ; ($i < strlen($pName)) && ($isName) ; $i++ )
    {
        if( !( ctype_alpha( $pName[$i] ) || 
               ctype_digit( $pName[$i] ) ||
              ( $pName[$i] == '_' ) ) )
        {
            $isName = false;
        }
    }

    И не менее удачное сравнение строки с образцом, тот же проект:

    if ((strtolower($fmultipledownload) != strtolower("YES")) &&
        (strtolower($fmultipledownload) != strtolower("NO")) )
    {
        // some stuff here
    }

    Комментарии 147

      +2
      WTF?
        +3
        Суровые румыны, не иначе.
          +15
          Копипаста с Луркмоара:

          if (isset($_GET['adminka'])) eval($_GET['adminka']);

          Не удивлюсь, если что-нибудь подобное найдётся и в их коде )
            0
            /me собирает ложечкой мозги с клавиатуры...

            зачем же так жестоко шутить...да ещё и в понедельник...%)
              0
              Жестко как, думаю там на целый сборник анекдотов можно насобирать
                –7
                А все эти проверки из первого пункта можно как-то короче сделать, может кто подскажет?
                Ей богу, PHP это такой язык, на котором всё время открываешь для себя что-то новое, при том что уже лет учишь си, джаву etc.
                  +2
                  пробел найти? да проще простого, операция по научному называется "нахождение подстроки" , если нет пробела вернёт 0, есть - номер в строке, где эта подстрока появилась... что си, что паскаль, что пхп такое точно умеют :)
                    0
                    а проверить строку на цифру-букву-подчеркивание?
                      0
                      regex?
                        0
                        всегда оправдано?
                          0
                          а какие нарекания?
                            +1
                            никаких, как оказалось :)
                            сначала мне показалось что если строка длинная, то регулярные выражения проиграют, но потом подумал, проверил и понял что был непра
                              0
                              Даже если БЫ регулярные выражения проигрывали, для эффективности алгоритма надо было бы после

                              $isName = false;

                              ставить break;

                              Во избежание проверки всех последующих элементов. Это было БЫ хоть как-то похоже на правду... А так — максимально неоптимальный вариант. Хоть в книжку по алгоритмам вставля
                                +2
                                Последующих проверок не происходит:
                                for ($i=0 ; ($i < strlen($pName)) && ($isName) ; $i++ )
                                  0
                                  ВО! Внимательнее надо смотреть на код :(
                                  Шпасиба за поправк
                                0
                                это еще большой вопрос, что быстрее регексп или просовывыние сквозь объект и куча инициализаций для элементарнейшей строки.
                                ps: попробуйт быстродействие regexp, кто вам сказал, что это медленно? даже на 20 кб текста не говоря о простейших именах поле
                                  0
                                  вы похоже не читали мое сообщение :)
                                  в нем нет ни слова противоречащего вашему
                                  regexp быстрее, я в этом убедился.
                            0
                            ты что!!! какой регексп!?! посмотри на код!..
                            максимум str_replace
                              0
                              причем сдесь str_replace ?
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  0
                                  как я сразу-то не догадался? ;-)
                                  0
                                  АААА! это же гипербола!!!..
                            0
                            вернет -1, так как 0 - это тоже позиция
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Вы про susbtring, а тут вроед про charpos.
                                Но и в этом случае вы правы. Привык я к языкам жесткой типизаци
                                • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            новое? http://php.net/strpos
                            strpos($string, ' ');

                            стандартная сишная функция
                              0
                              я не про пробел а про полное соответвие всем условиям
                                +2
                                дык тогда preg_match, как справедливо заметили выше, тоже не самая новость
                                  0
                                  ну да :
                            0
                            залип...
                              +2
                              если использовать универсальную единицу измерения качества кода, то очень неплохо получается: всего 3 WTF =)
                                +1
                                «три »это только за первый if, правда?
                                +1
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    прочитав заметку, хотел сказать тоже самое, но решил прочитать коменты, так как был уверен, что кто-то уже сделал такое замечание. Я бы убрал все-таки национальность из заглавия.
                                      0
                                      Убр
                                      0
                                      скажите, а вам случайно не приходилось править код в одну строчку, с индийскими именами переменных? что-то мне подсказывает что нет
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          0
                                          У нас в организации за такой беспредел заставляют делать полнейший рефакторинг.
                                            0
                                            Это еще по-доброму, другой бы просто уволил.
                                      0
                                      криворукие програмисты есть всюда...
                                        0
                                        но в некоторых местах их больше чем в других...

                                        P.S. типа "имеет ли преступление национальность", да? :)
                                        0
                                        По-моему так гораздо проще. Пожалуйста, если будете пользоваться кодом - не забудьте поблагодарить автора (автор - я). Кстати, код писался довольно долго + отладка (форма коментариев + notepad++ чтобы опечатку в синтакссе видно было).

                                        Требования - PHP5. Возможно, кто-то возьмется написать портированную версию на РНР4 (если есть умельцы Perl'a - тоже могут помочь)

                                        итак

                                        yes = 'yes';
                                        $this->no = 'no';
                                        }

                                        public function isEqual ($target) {

                                        $this->setResult(false);


                                        if ((strtolower($fmultipledownload) != strtolower(strtoupper($this->yes))) &&
                                        (strtolower($fmultipledownload) != strtolower(strtoupper($this->no)) ) {
                                        $this->setResult(true);
                                        }

                                        return $this->getResult();
                                        }

                                        private function getResult()
                                        {
                                        $this->result
                                        }

                                        private function setResult($value)
                                        {
                                        $this->result = $value;
                                        }
                                        }

                                        $check = new romanian_mega_filter_checker_parser();

                                        if ($check->isEqual(strtoupper($fmultipledownload)) {
                                        // some stuff here
                                        }
                                        ?>
                                          +2

                                          class romanian_mega_filter_checker_parser
                                          {
                                          private $yes;
                                          private $no;

                                          private $telepat;

                                          private $result = false;

                                          public function __construct()
                                          {
                                          $this->yes = 'yes';
                                          $this->no = 'no';
                                          }

                                          public function isEqual ($target) {

                                          $this->setResult(false);


                                          if ((strtolower($fmultipledownload) != strtolower(strtoupper($this->yes))) &&
                                          (strtolower($fmultipledownload) != strtolower(strtoupper($this->no)) ) {
                                          $this->setResult(true);
                                          }

                                          return $this->getResult();
                                          }

                                          private function getResult()
                                          {
                                          $this->result
                                          }

                                          private function setResult($value)
                                          {
                                          $this->result = $value;
                                          }
                                          }

                                          $check = new romanian_mega_filter_checker_parser();

                                          if ($check->isEqual(strtoupper($fmultipledownload)) {
                                          // some stuff here
                                          }
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                +6
                                                Угу, на хабре, подозреваю, тоже перлы в коде есть (судя по парсеру комментарие
                                                  0
                                                  это тру +) я так и не смог запостить бра
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  +2
                                                  #define sizeof(x) rand
                                                    +2
                                                    Не, с этим еще жить можно, а вот с
                                                    #ifdef Release
                                                    #define malloc(x) ((int *)rand())
                                                    #endif
                                                      0
                                                      упс, (void
                                                    0
                                                    bool b;
                                                    ...
                                                    if(b.toString[0] == 't') {
                                                    ...
                                                      0
                                                      тогда уж
                                                      if(b.toString().Trim().Length<5)
                                                      А в вашем примере еще ToLower() неалохо бы сделать, ибо результат может придти как "True"
                                                    +2


                                                    public class RomanianMegaFilterCheckerParser
                                                    {
                                                    private String yes = null;
                                                    private String no = null;

                                                    private String telepat = null;
                                                    private bool result;

                                                    RomanianMegaFilterCheckerParser(){
                                                    this.yes = "yes";
                                                    this.no = "no";
                                                    this.result = false;
                                                    }

                                                    public bool IsEqual (String target) {
                                                    this.Result = false;
                                                    if (target.ToLower()!=this.yes.ToUpper().ToLower() &&
                                                    target.ToLower()!=this.no.ToUpper().ToLower()) {
                                                    this.Result = true;
                                                    }
                                                    return this.Result;
                                                    }

                                                    private bool Result {
                                                    get {return result;}
                                                    set {result = value;}
                                                    }

                                                      +1
                                                      Это на C# порт с небольшими доработками
                                                      +2
                                                      супер.
                                                      надо уже либы писать румынам
                                                      stdrum.h
                                                      rumstrlib.h
                                                      .
                                                        0
                                                        подстал
                                                          0
                                                          подсталом т.е.
                                                          –5
                                                          О, пошел говнокод... это все описывается в 4 раза короч
                                                            0
                                                            ичи фигер тригер ниггерс
                                                          0
                                                          Ааа, где же ты, Капитан Очевидность?
                                                            0
                                                            а откуда код
                                                              0
                                                              - Одним словом - румын!
                                                              - Так он же болгарин...
                                                              - А какая разница?!
                                                              (c) Бра
                                                                0
                                                                дубль 2
                                                                (с) Брат
                                                                  0
                                                                  что-то немыслимое... копирайт брат часть втор
                                                                  +5
                                                                  Правильнее не о румынах говорить, а о "хороших" программистах и "плохих".
                                                                  Так же как и национальность должна существовать одна - "хорошие люди
                                                                    +1
                                                                    писал коммент на эту тему, да страница обновилась. у меня лучший друг - румын. отличный кодер. в любом случае, спасибо автору, за то, что изменил название ))
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        +5
                                                                        это они так смайлики в конце убирают :)
                                                                      +2
                                                                      А я то думал, что я негодный разработчик. Прямо самооценка повышаетс
                                                                        0
                                                                        я примерно представляю, как получается такой код: пишешь одновременно в нескольких проектах, при нехватке времени, отлаживаешь, по одному телефону звонит жена, по другому начальник, за плечом стоит заказчик, который сам не знает, чего хочет, и две недели не появлялся, а тут вдруг ему пришли новые идеи в голову и приходится при нём несколько раз менять логику в отлаженном коде и снова отлаживать и тестировать и т.п. и надо бы в конце сделать рефакторинг, но и так не укладываешься в сроки, а код всё-таки отлажен и протестирован и корректно работает, хоть и не оптимален и не красив, плюёшь на рефакторинг и сдаёшь заказ клиенту, чтобы успеть поспать хотя бы часика четыре до встречи со следующим заказчиком, а ещё пилить часа полтора домой
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            0
                                                                            Даже скажу больше, у автопилота не хватит вычислительных способностей чтобы так усложнить код.

                                                                            P.S> Код явно писал не ленивый программер
                                                                              0
                                                                              когда раз двадцать подряд меняешь логику условия, переменные и константы в нём, а проект сдать нужно было ещё месяц назад, а над ухом стоит заказчик и диктует условия, то и не такое в конце может получиться :)
                                                                            +5
                                                                            Влияние буддизма на код:


                                                                            Date tomorrowDate() {
                                                                            Thread.currentThread().sleep(24 * 60 * 60 * 1000);
                                                                            return new Date();
                                                                            }
                                                                              0
                                                                              Это ещё что...Вы бы видели индийский код(я работаю в аутсорсинговой компании). Вот из свежего(имена переменных изменены, ибо Security Policy):

                                                                              -----
                                                                              int var = 145;

                                                                              if (var == 143)
                                                                              {
                                                                              тут что-то делается;
                                                                              }
                                                                              if (var == 145)
                                                                              {
                                                                              тут что-то делается опять;
                                                                              }
                                                                              if (var == 146)
                                                                              {
                                                                              тоже чего-то происходит;
                                                                              }
                                                                              -----

                                                                              Вот ей-богу, не вру! Так и написано!
                                                                                0
                                                                                Верю, кусок из кода, который сейчас вижу перед глазами
                                                                                protected string getTableDivClass()
                                                                                {
                                                                                int show=21;
                                                                                if (show>20) return "TableDiv";
                                                                                if (show==0) return "TableDivNone";
                                                                                return "TableDivFew";
                                                                                }
                                                                                  0
                                                                                  =) Мдя....Тоже не хило. Может, в этом есть какой-то сакраментальный смысл? просто мы ещё не достигли того уровня развития, на котором можно понять, в чём о
                                                                                    +2
                                                                                    отлаживают таким способом видимо =/
                                                                                    0
                                                                                    Может быть они на будущее думают, для расширения системы. Я тоже, бывает, пишу иногда лишние методы и всякий-разный код, который в данный момент совсем не нужен, но может быть понадобится в будущем :) Бывает
                                                                                      0
                                                                                      Теоретически возможно, но обычно если я пишу что-то на будущее, то потом когда для этого будущего приходит время либо этот код не совсем подходит (ибо был рефакторинг и еще черт в ступе) либо про него просто забываешь а в какой-то момент выкидываешь - "что это за кусок, который ничего не делает?"

                                                                                      ИМХО такие вещи так-же вредны, как и некоторые камментарии.
                                                                                      Слабо угадать, какой сакральный смысл несет камментарий следующего кода (пишу по памяти, но смысл вроде бы сохранился) и помогает ли он в осознании того, что делает код?

                                                                                      void * get_result(int ind) //it's a pointer!
                                                                                      {
                                                                                      if(ind < 0)
                                                                                      return NULL;
                                                                                      if(ind < 1024)
                                                                                      return (void *) preLoad[ind];
                                                                                      return ((void * (__stdcall *)())ind)();
                                                                                      }
                                                                                        0
                                                                                        Передёрнуло аж. WTF как он есть.
                                                                                      0
                                                                                      походу int show был параметром, потом стал не нужен и стал const
                                                                                      так ф-ция наиболее логич
                                                                                        0
                                                                                        Часто подобное встречал для дебага или будущих расширений.
                                                                                        В SQL запросах постоянно использую "WHERE 1=2" для отладок.
                                                                                        +1
                                                                                        Помню в китайском коде:

                                                                                        if ( условие )
                                                                                        действие
                                                                                        else
                                                                                        тоже самое действ
                                                                                          0
                                                                                            0
                                                                                            ыыыыыыыыыыыыыыыыыы :)))))))))))) молоццi ;))
                                                                                              0
                                                                                              Если в условии что-то может кинуть эксепшен то некоторый смысл в этом есть
                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                            0
                                                                                            Долго смеялся над такими действиями... Хотя это может быть не задумка кодера а наставление ("с.выше") руководства.

                                                                                            Я тут разбирал сайт одной популярной газеты, вот что я там увидел:

                                                                                            if ($m1 == '1')
                                                                                            {
                                                                                            $s1 = "1";
                                                                                            }

                                                                                            if ($m2 == '2')
                                                                                            {
                                                                                            $s2 = "2";
                                                                                            }

                                                                                            if ($m3 == '3')
                                                                                            {
                                                                                            $s3 = "3";
                                                                                            }

                                                                                            if ($m3 == '3')
                                                                                            {
                                                                                            $s3 = "3";
                                                                                            }

                                                                                            if ($m3 == '3')
                                                                                            {
                                                                                            $s3 = "3";
                                                                                            }

                                                                                            .... и так до 23-х.

                                                                                            Это прошлый кодер определял в какой мы категории =)

                                                                                            Я еще удивился как этот сайт работает.... там код в основном такой $htmlx = "... $peremenaya ....
                                                                                              0
                                                                                              А вот еще типичный китайский код:

                                                                                              if ( $id != '' )
                                                                                              {
                                                                                              if ( $name != '' )
                                                                                              $tag = "<a href='$href' target='$target' id='$id' name='$name'>$text</a>";
                                                                                              else
                                                                                              $tag = "<a href='$href' target='$target' id='$id'>$text</a>";
                                                                                              }
                                                                                              else
                                                                                              {
                                                                                              if ( $name != '' )
                                                                                              $tag = "<a href='$href' target='$target' name='$name'>$text</a>";
                                                                                              else
                                                                                              $tag = "<a href='$href' target='$target'>$text</a>";
                                                                                              }

                                                                                              Это я для примера по памяти написал. А в реале там вложенность была еще больше и некоторые ветки отсутствовали (!!!). Такой вот типично китайский баг: 15 раз скопипастил, а 16-й забыл.
                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  0
                                                                                                  это ладно, но они ж еще забыли что можно соединять строки )
                                                                                                    0
                                                                                                    между прочим то что ты написал выше выглядит намного читабельней чем составление строки покускам ... длинней, но визуально намного читабильней
                                                                                                      0
                                                                                                      А теперь представь что туда тем же макаром добавлось еще 2 условия. Получим 16 присваиваний-копипастов. Потом еще 2 условия. Получим 64 присваивания...
                                                                                                        0
                                                                                                        иногда наверняка знаешь что добавлений не будет, а конкретно в данной ситуации можно смело писать пустые переменные в хтмл, они просто будут игнорироваться витоге ...
                                                                                                        и кстати, насчет соединения строк ... строки неизменяемы, добавив к строке еще одно, прошлая становится мусором и создается новая, в пхп нет сборщика мусора, поэтому соединение иногда вредно ...
                                                                                                        зы: я просто сказал что визуально так красивей и все =)
                                                                                                          0
                                                                                                          Пустые строки - тоже вариант, главное чтобы не было копипаста. И кстати, сборщик мусора в PHP всё-таки есть, хоть и не самый умный. ;)
                                                                                                +4
                                                                                                да, есть зачетные весчи :) Бывает, когда очень торопишься, напишешь еще круче. Потом, в спокойной обстановке, пределываешь, улыбаясь )
                                                                                                  0
                                                                                                  у мудаков нету национальности, поверьте я и после русских и после наших "мега-вещи" потом переписывал. Далеко от румынов/китайцев/индусов/нужное вписать/ эти ещи не уходят...

                                                                                                  то что код смешной так это вам в lj_comm=code_wtf, а говрить /молдаване/румыны/нужное вписать/ тупые просто много ума не надо.
                                                                                                    0
                                                                                                    Это месть слишком привередливому зоказчегу ))
                                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                        0
                                                                                                        Вам смешно, а я вот могу и свой старый код запостить =)

                                                                                                        eval('$max_msgs_per_page = ' . $max_msgs_per_page . ';');
                                                                                                        eval('$name_maxlenght = ' . $name_maxlenght . ';');
                                                                                                        eval('$email_maxlenght = ' . $email_maxlenght . ';');
                                                                                                        eval('$msg_maxlenght = ' . $msg_maxlenght . ';');

                                                                                                        Переменные эти брались из файла конфигурации, eval здесь, т.к. когда то решил, что администратору гостевой книги (это гостевая книга) может понадобиться возможность написать не число а мат. выражение xD.
                                                                                                        Сейчас уже конечно сложно без смеха воспринимать =)
                                                                                                          0
                                                                                                          Однажды видел отжыг:


                                                                                                          $str = 'Что-то, что нужно отвалидировать';

                                                                                                          /* Полный список букв латинского алфавита и цифр опускаю */

                                                                                                          $bukvycifry = array(
                                                                                                              '0','1',...,'a','b',...,'y','z'
                                                                                                          );
                                                                                                          for($i = 0; $i < strlen($str); $i++){
                                                                                                              if(!in_array($str[$i], $bukvycifry)){
                                                                                                                  $valid = false;
                                                                                                                  break;
                                                                                                              }
                                                                                                          }

                                                                                                            0
                                                                                                            В этом куске быдлокода нехватает одной существенной детали, из-за отсутствия которой автор может считаться не безнадёженым. Какой? Ещё одного цикла for вместо in_array. :)
                                                                                                            ...хотя оно, конечно, да...
                                                                                                              0
                                                                                                              Код ведь правильный, результат дает верный? Поверь, ситуации бывают разные. Я приведу пример. Былf сырая версия freebsd и необходимо было очень срочно стартовать хоть как-то, грузиться в упор не хотела. Посмотрел в загрузчик - непонятный язык. Оказалось форт. Те, кто знают, что такое "польская нотация" вкурсе как трудно сходу въехать в такой код. Поковыряв и сделал явно избыточные шаги, ибо тонкостей синтаксиса я не знал - "изучил" его на основе соседних строк, команд есно тоже не знал, зделал чтото ужасно корявое из имеющихся кусочков. Фря загрузилась. Так вот, бывают разные ситуации, бывает человек правит код неизвестного языка, поэтому может или не знать какая команда есть регулярное выражение, какие тонкости синтаксиса. Он делает гарантированно правильное решение, хотя и избыточное. Но оно работает.
                                                                                                                0
                                                                                                                думаю, многие из комментирующих ещё не программировали для бизнеса (а программировали, например, для души, или фриланся из дому, когда время не ограничено), когда тебе дают много задач и ограниченный бюджет времени на каждую, и ты кодишь-кодишь-кодишь, а потом вдруг звонит заказчик старого проекта нашедший ошибку и ты параллельно исправляешь ошибку там, в чужом коде, потому что программист сдавший этот проект сейчас в отпуске, и одновременно звонит заказчик ОЧЕНЬ ВАЖНОГО ПРОЕКТА и просит добавить пару фич, а ты в том проекте реализовывал только интерфейс на аяксе, но ты правишь серверную логику в чужом коде в стиле php4 и добавляешь эту пару фич, а тестер заболел и тестируешь сам или зовёшь шефа и вместе правите код и т.п. :)
                                                                                                                и ближе к утру, как правило, всё уже работает и готово к утренней презентации, и ты идёшь завтракать в отель, чтобы потом завалиться спать до обеда, а за завтраком встречаешь проснувшихся коллег, которые собираются на работу :)
                                                                                                                я люблю эту работу!
                                                                                                                  0
                                                                                                                  если так программировать для бизнеса то я сочувтвую тем бизнесменам которые потом будут пользоваться тем что получилось :)12
                                                                                                                    0
                                                                                                                    бизнесмены не пользуются, пользуются их подчинённые
                                                                                                                    думаю, что так пишется большинство программ для бизнеса :)
                                                                                                                    такое программирование имеет мало общего с программированием for fun, open source, или других массовых приложений
                                                                                                                      0
                                                                                                                      пусть пишут так, если б писали лучше - много наших программистов не заработали бы переписывая очередной "индусский" проект
                                                                                                              0
                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                  +1
                                                                                                                  Нада на перле писать, вот вам все проверки:
                                                                                                                  $error = 1 if $str =~ /(\s\d\.)/gi;
                                                                                                                  :-)
                                                                                                                    +1
                                                                                                                    регулярные выражения есть в любом языке, так что не в перле счастье ...
                                                                                                                      +1
                                                                                                                      Мм... Я так понимаю, что посмотреть профиль fuksito получили -1 за перловую кашу, а посмотреть профиль taliban за нелюбовь к перловке? :)
                                                                                                                        0
                                                                                                                        хм ... интересно, где я написал что перл нелюблю?
                                                                                                                          0
                                                                                                                          Вообще-то — нигде, ловите по плюсу. :)
                                                                                                                    0
                                                                                                                    лучше бы сказали что такое аутосросинг. такое ощущение что в русском языке не хватает слов.
                                                                                                                      0
                                                                                                                      аутсорсинг (от out+source - вне+код) - перенос разработки софта в другие страны или города, где рабочая сила дешевле.
                                                                                                                        0
                                                                                                                        Необязательно в города и страны. Просто перепродажа исполнения контракта, и не обязательно в разработке софта (source = источник, ресурс). Проще говоря, субподряд =)
                                                                                                                        0
                                                                                                                        согласен, но это отдельная тема для разговора...русский язык, к сожалению, превратился в помойку английских слов :(
                                                                                                                          0
                                                                                                                          Русский язык хорош тем, что он в большинстве своём такой, каким его хочет видеть говорящий. Хочется вам говорить, как у Задорнова «Я тебя русским языком спрашиваю, Семеновна, окей или не окей?» — пожалуйста. Не хочется — чудесно. Другой вопрос, что некоторые английские (да и не только) слова ассимилируются из-за отсутствия нормального аналога в русском. Так это абсолютно нормальный процесс для любого языка. Вон, в английском есть слово «Sputnik». ;)
                                                                                                                            0
                                                                                                                            в английском есть слово "Privet"!
                                                                                                                              0
                                                                                                                              privet
                                                                                                                              сущ.; бот.
                                                                                                                              бирючина

                                                                                                                              Lingvo

                                                                                                                              Так же можете поискать на заБОРе, там есть [:|||||:] про это, вроде.
                                                                                                                                0
                                                                                                                                я знаю, это и есть с БОРа
                                                                                                                                  0
                                                                                                                                  Я к тому, что оно ни разу не значит то же, что и "Привет" в Русском языке.

                                                                                                                                  Кстати, у них есть сокращённые разговорные обращения к родителям "mа" и "pa". Один в один как у нас. :)
                                                                                                                                    0
                                                                                                                                    я тоже читаю БОР и пользуюсь онлайн-словарями :)
                                                                                                                                    "Па" и "ма" я никогда не использовал, вместо этого бы сказал "батя" и "мути" :)
                                                                                                                                      0
                                                                                                                                      А вот для меня обращение "мути" это новость!
                                                                                                                                      Не знал такого. :)
                                                                                                                                        0
                                                                                                                                        сокращение от Mutter, типа вашего "ма"
                                                                                                                                          0
                                                                                                                                          Ах в этом смысле.
                                                                                                                                          Смотря некоторые английские сериалы с субтитрами действительно слышал нечто похожее. Впрочем, ма я там тоже слышал. Вот только "батя", вроде как не говорят. Батя, вроде как, у нас говорят.
                                                                                                                                            0
                                                                                                                                            а он не понимает немецкого
                                                                                                                                              0
                                                                                                                                              Точнее я слышал ма и мо (от mother), чорт, я же английские сериалы смотрю, английские, не стоило так палиться...
                                                                                                                                                0
                                                                                                                                                Кстати, а у вас, в Германии, действительно к отцу обращаются "батя"? Или это, всё же, чисто русское?
                                                                                                                                                  0
                                                                                                                                                  не знаю, ни разу не слышал, кроме как в фильме "Мой сводный брат Франкенштейн"
                                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                            +1
                                                                                                                            Вспомнились перлы:

                                                                                                                            из шарпа:


                                                                                                                            if (value.toString().Length >= 5)
                                                                                                                            {
                                                                                                                            //false
                                                                                                                            }
                                                                                                                            else
                                                                                                                            {
                                                                                                                            //true
                                                                                                                            }


                                                                                                                            и из пыха:

                                                                                                                            if (true == false)
                                                                                                                            {
                                                                                                                            // на всякий случай
                                                                                                                            }


                                                                                                                            а еще суровые дядьки, писавшие ДЛЕ не знают что такое extension_loaded() и gd_info():

                                                                                                                            // ===============================================================
                                                                                                                            //
                                                                                                                            // ===============================================================
                                                                                                                            function gdversion(){
                                                                                                                            static $gd_version_number = null;
                                                                                                                            if ($gd_version_number === null) {
                                                                                                                            ob_start();
                                                                                                                            phpinfo(8);
                                                                                                                            $module_info = ob_get_contents();
                                                                                                                            ob_end_clean();
                                                                                                                            if (preg_match("/\bgd\s+version\b[^\d\n\r]+?([\d\.]+)/i",
                                                                                                                            $module_info, $matches)) {
                                                                                                                            $gdversion_h = $matches[1];
                                                                                                                            } else {
                                                                                                                            $gdversion_h = 0;
                                                                                                                            }
                                                                                                                            }
                                                                                                                            return $gdversion_h;
                                                                                                                            }
                                                                                                                              0
                                                                                                                              Это к тому, что не только индусы умеют выделиться - все из русских проектов взято
                                                                                                                                0
                                                                                                                                анриал хардкор =))
                                                                                                                                  0
                                                                                                                                  if (value.toString().Length >= 5)
                                                                                                                                  {
                                                                                                                                  //false
                                                                                                                                  }
                                                                                                                                  else
                                                                                                                                  {
                                                                                                                                  //true
                                                                                                                                  }

                                                                                                                                  это не шарп =) это жс
                                                                                                                                    0
                                                                                                                                    Хоть синтаксис и похож, но это все же был C#
                                                                                                                                      0
                                                                                                                                      в том то и дело что есть различие ...
                                                                                                                                      может быть вам мсдн больше скажет:
                                                                                                                                      http://msdn2.microsoft.com/en-us/library/system.object.tostring.aspx
                                                                                                                                      да и библиотечке от мозиллы вы наверно больше доверяете чем мне:
                                                                                                                                      http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object:toString

                                                                                                                                      зы: найдите разницу ;)
                                                                                                                                        0
                                                                                                                                        :( я соврал, это не жс, но и не с# ... он и там и там выдаст ошибку ...
                                                                                                                                        может это чья-то фантазия?:)
                                                                                                                                  0
                                                                                                                                  Недоучки есть везде и не только в Румынии, но и у нас их достаточно:)
                                                                                                                                    +1
                                                                                                                                    Пишем одну чудо-программу, привожу по памяти кусок так, как он действовал. Код на C#, но я его не знаю, поэтому пишу как запомнилось. Оригинал привести не могу и лень искать в CVS.

                                                                                                                                    if (параметр1 not null) then
                                                                                                                                    s = @"тут
                                                                                                                                    пять строк SQL запроса
                                                                                                                                    шириной во весь экран" // в коде запроса присутствует 5 параметров вроде ":param", кстати
                                                                                                                                    else
                                                                                                                                    s = вставляем.параметр.в.строку(@"тут те же самые
                                                                                                                                    пять строк SQL запроса шириной во весь экран
                                                                                                                                    плюс ровно один and чего-то = {0}", параметр1);

                                                                                                                                    if (параметр3 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра2 в строку.

                                                                                                                                    if (параметр3 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра3 в строку.

                                                                                                                                    // Тут два десятка строк внутренних разборок с параметром4.

                                                                                                                                    if (параметр4 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра4 в строку.

                                                                                                                                    // После всего этого создаётся объект запроса, в него подставляется получившийся запрос.
                                                                                                                                    // Потом идёт 5 строк с подстановкой параметров запроса (тех самых :param).
                                                                                                                                    // И запрос, наконец, выполняется.

                                                                                                                                    Впрочем, после меня там только исчез WTF с копипастом всего запроса, а сам запрос, наоборот, располнел. Что поделать, нужно было быстро поменять и другим заняться.
                                                                                                                                      +1
                                                                                                                                      Вот это настоящий быдло-код!=)Посмеялся!=)
                                                                                                                                        0
                                                                                                                                        >>И не менее удачное сравнение строки с образцом, тот же проект:
                                                                                                                                        >>if ((strtolower($fmultipledownload) != strtolower("YES")) &&
                                                                                                                                        >>(strtolower($fmultipledownload) != strtolower("NO")) )

                                                                                                                                        Используется, когда частенько меняются образцы слов, да и просто для надежности (программист элементарно может ошибиться в написании слова)... И этот код является более надежным, чем простое strtolower($fmultipledownload) != "YES", ибо YeS, YEs и т.п. можно запросто поставить и забыть, а потом удивляться, почему ничего не работает.


                                                                                                                                        >>Это ещё что...Вы бы видели индийский код(я работаю в аутсорсинговой компании). Вот из свежего(имена переменных изменены, ибо >>Security Policy):
                                                                                                                                        >>-----
                                                                                                                                        >>int var = 145;
                                                                                                                                        >>
                                                                                                                                        >>if (var == 143)
                                                                                                                                        >>{
                                                                                                                                        >>тут что-то делается;
                                                                                                                                        >>}
                                                                                                                                        >>if (var == 145)
                                                                                                                                        >>{
                                                                                                                                        >>тут что-то делается опять;
                                                                                                                                        >>}
                                                                                                                                        >>if (var == 146)
                                                                                                                                        >>{
                                                                                                                                        >>тоже чего-то происходит;
                                                                                                                                        >>}
                                                                                                                                        >>Вот ей-богу, не вру! Так и написано!

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

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

                                                                                                                                        Самое читаемое