1. PHP / Говнокод #17869

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    function addnews($str1="", $str2="", $str3="", $str4="", $str5=""){
      $num = 0;
      $done = 0;
      while ($done == 0){
        $num++;
        $s = "";
        if ($num<10000000) {$s="0".$s;}
        if ($num<1000000)  {$s="0".$s;}
        if ($num<100000)   {$s="0".$s;}
        if ($num<10000)    {$s="0".$s;}
        if ($num<1000)     {$s="0".$s;}
        if ($num<100)      {$s="0".$s;}
        if ($num<10)       {$s="0".$s;}
    	$done = 1;
    	if (file_exists("news/".$s.$num.".txt")){$done=0;}
      }
      $fh1 =fopen("news/".$s.$num.".txt","w");
      fwrite($fh1, $str1."\r\n");
      fwrite($fh1, $str2."\r\n");
      fwrite($fh1, $str3."\r\n");
      fwrite($fh1, $str4."\r\n");
      fwrite($fh1, $str5);
      fclose($fh1);
    }

    Предложили доработать корпоративную тикет-систему. Движок абсолютно всё хранит в txt-файлах. Да, и пароли пользователей тоже - в открытом виде. БД? Нет, не слышали :(
    Но это еще не так страшно...

    Запостил: Arris, 26 Марта 2015

    Комментарии (21) RSS

    • зачем нужна субд? для работы с ней нужен специальный инструмент, а текстовый файл можно и блокнотом править.
      Ответить
      • На самом деле эта функция - не говнокод :) Я вот сейчас нашел другую... побольше. Не могу сказать, что она совсем уж говнокодистая, но... НО НАХРЕНА так извращаться? О.о
        Ответить
        • да проблема в том, что это файлы.
          пока кто-то пишет что-то в файл, другие его ждут. конкурентный доступ? не, не слышал
          Ответить
          • > пока кто-то пишет что-то в файл, другие его ждут.
            Судя по коду, тут по файлу на запись. Так что конкурентность будет не хуже, чем в СУБД.
            Ответить
            • по одному файлу на каждый... кусочек информации - пользователь, таск-тикет, новость, сообщение в ленте итд итп.

              Да, а вот тикет и комментарии к нему лежат в одном файле.
              Ответить
            • если он смог распараллелить тикеты по отдельным файлам, это не значит что нет узких мест.
              видишь ли, если ты ночью идешь с фонарем через поле, где днем коровы паслись, это не значит, что ты защищен он попадания в говно. когда батарейки в фонаре сядут, ты начнешь регулярно наступать на это говно и конечно же 100500 лулзов.
              Ответить
              • >распараллелить
                >PHP
                >распараллелить в один поток
                /0

                # Тред не читал, пыхобляди соснули.
                Ответить
                • Дык там же новый инстанс интерпретатора на один запрос и никакой связи между инстансами. Идеальная обстановочка для распараллеливания.
                  Ответить
              • > это не значит что нет узких мест
                Ты так говоришь, как будто СУБД - это серебряная пуля, волшебным образом спасающая от всех узких мест.
                Ответить
                • конечно же это не панацея, но это лучше такой реализации
                  Ответить
            • но не скорость
              Ответить
        • >if ($num<10000000) {$s="0".$s;}
          if ($num<1000000) {$s="0".$s;}
          if ($num<100000) {$s="0".$s;}
          if ($num<10000) {$s="0".$s;}
          if ($num<1000) {$s="0".$s;}
          if ($num<100) {$s="0".$s;}
          if ($num<10) {$s="0".$s;}
          >На самом деле эта функция - не говнокод :)
          у меня разрыв шаблона
          Ответить
          • Это хуйня. Вот где истинное говно:
            while ($done == 0){
                $num++;
            Ответить
            • if (file_exists("news/".$s.$num.".txt")){$done=0;}

              а это типа совсем не хуйня?
              Ответить
              • Может быть мне выложить полный код файла const.php ? :)
                Ответить
          • по сравнению стем, что я увидел дальше - поверьте - не говнокод :)
            Ответить
        • Недавно познакомился с такой функцией как crypt() и с PDO.
          Ответить
          • > crypt()
            Поздновато, уже пора знакомиться с password_hash() и password_verify().
            Ответить
            • Нигатишно! Велосипеды надо самому изобретать, иначе жить не интересно!
              Ответить

    Добавить комментарий