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

    +152

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    $db = Db::getInstance();
    $result = $db->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'payment_module_settings`;');
    $text = "";
    for($i=2;$i<sizeof($result[0]);$i++)
    {
        if($i == 2)
        {
            $text .= "[general]"."\n";
            $text .= "url = '".$result[0][url]."'"."\n";
        }
        if($i == 3)
        {
            $text .= "[payment]"."\n";
            $text .= "sequritySender = '".$result[0][security_sender]."'"."\n";
        }
        if($i == 4)
        {
            $text .= "transactionChannel = '".$result[0][transaction_Channel]."'"."\n";
        }
        if($i == 5)
        {
            $text .= "transactionMode = '".$result[0][transaction_Mode]."'"."\n";
        }
        if($i == 6)
        {
            $text .= "userLogin = '".$result[0][user_Login]."'"."\n";
        }
        if($i == 7)
        {
            $text .= "userPwd = '".$result[0][user_Pwd]."'"."\n";
        }
        if($i == 8)
        {
            $text .= "paymentType = '".$result[0][payment_Type]."'"."\n";
        }
        if($i == 9)
        {
            $text .= "presentationCurrency = '".$result[0][presentation_Currency]."'"."\n";
        }
        if($i == 10)
        {
            $text .= "[view]"."\n";
            $text .= "src = '".$result[0][src]."'"."\n";
        }
        if($i == 11)
        {
            $text .= "language = '".$result[0][language]."'"."\n";
        }
        if($i == 12)
        {
            $text .= "style = '".$result[0][style]."'"."\n";
        }
       
    }
    
    if($_GET['paymentType'] == 'CC')
    {
      $text .= "brands[] = 'VISA'"."\n";
      $text .= "brands[] = 'MASTER'"."\n";
     
    }
    if($_GET['paymentType'] == 'VA')
    {
      $text .= "brands[] = 'PAYPAL'"."\n";
    }
    
    $text .= "[soap]"."\n";
    $text .= "url = 'http://debugservices.fine-trade.org/PayOnOrderHandling.svc?WSDL'"."\n";
    $text .= "username  = 'extensions'"."\n";
    $text .= "password = 'testExtensions'"."\n";
    $text .= "options[] = false"."\n";
    $text .= "importIfPending = false"."\n";
    
    if (file_exists('LoviitLib/config.ini')) {
        unlink('LoviitLib/config.ini');
    } 
    $myFile = "LoviitLib/testFile.txt";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $text);
    fclose($fh);
    rename("LoviitLib/testFile.txt","LoviitLib/config.ini");

    Преамбула: для конфигурации библиотеки передаётся ассоциативный массив в конструктор. Если передаётся null, то для конфигурации используется файл config.ini с дефолтными настройками, который находится в корне библиотеки.
    Этот код исполняется при каждой инициализации библиотеки (при каждом чекауте).
    Ремарка: после запроса к db результатом является ассоциативный массив.
    И да, это код из модуля для prestashop cms.

    aronsky, 15 Апреля 2014

    Комментарии (1)
  2. PHP / Говнокод #15759

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $hlblock_id = 3;
    		$hlblock = HL\HighloadBlockTable::getById($hlblock_id)->fetch();
    		$entity = HL\HighloadBlockTable::compileEntity($hlblock);
    
    		$main_query = new Entity\Query($entity);
    		$main_query->setSelect(array('*'));
    		$main_query->setFilter(array('=UF_NAME' => $arOLDItem['material']));
    		$result = $main_query->exec();
    		$result = new CDBResult($result);
    		$row = $result->Fetch();

    Bitrix, HIGHLOAD инфоблоки, данная запись равносильна SQL запросу SELECT * FROM %таблица_название_которой_хранится_в_бд_ под_номером_3% WHERE UF_NAME = $arOLDItem['material']

    +зацените супер CamelCase от битрикса

    TBoolean, 15 Апреля 2014

    Комментарии (11)
  3. C++ / Говнокод #15758

    +9

    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
    25. 25
    26. 26
    27. 27
    template<...many params...>
    class Foo
    {
      template <typename T>
      class __Bar 
      {
        T t;
      public :
        __Bar(T t) : t(t) {}  
      };
    
    public :
      template <typename T>
      __Bar<T> Bar(T t)
      {
        return __Bar<T>(t); // просто __Bar(t) нельзя, вывод не сработает
      }
    
      template <typename T>
      void Buzz (T t)
      {
      }
    };
    
    ...
    Foo f;
    f.Buzz(Bar(5));

    А как вы выкручиваетесь из неумения определять тип результата по типу параметров конструктора?

    TarasB, 15 Апреля 2014

    Комментарии (87)
  4. PHP / Говнокод #15757

    +133

    1. 1
    Добрый вечер, цыплята.

    Сосево из ширинки, ебля с порога.

    KonardStuard, 14 Апреля 2014

    Комментарии (1)
  5. PHP / Говнокод #15756

    +152

    1. 1
    2. 2
    3. 3
    4. 4
    if (ctype_space($text[$pos] && $pos < $len)) {
        while (ctype_space($text[$pos++]) && $pos < $len);
        $pos--;
    }

    Написал я когда-то такое и подумал: а какой смысл в $pos++ в последней итерации, если потом сразу $pos--?
    И тут до меня дошло, что
    while (ctype_space($text[$pos++]) && $pos < $len);
    это не то же самое, что
    while (ctype_space($text[$pos]) && $pos < $len) $pos++;
    ибо в первом случае $pos++ выполнится в последней итерации, даже если ctype_space возвратит false.
    И в итоге заоптимизировал до while (ctype_space($text[$pos]) && $pos < $len) $pos++; (уже без ифа и декремента).

    Мораль: нефиг выпендриваться (ставить инкременты и декременты в условия), если можно написать по-простому.

    arzeth, 14 Апреля 2014

    Комментарии (2)
  6. Java / Говнокод #15755

    +75

    1. 1
    Integer code = Integer.valueOf(service.getId().toString());

    service.getId() возвращает Long

    evg_ever, 14 Апреля 2014

    Комментарии (15)
  7. PHP / Говнокод #15754

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <?php if(isset($the_cat_id)): ?>
        <?php
            $query_args['showposts'] = $brp_count_category;
            $query_args['cat'] = $the_cat_id;
        ?>
    <?php else: ?>
        <?php
            $query_args['showposts'] = $brp_count_index;
        ?>
    <?php endif; ?>

    { }? Нет, не слышали...

    russling, 14 Апреля 2014

    Комментарии (14)
  8. C++ / Говнокод #15753

    +9

    1. 1
    BOOST_FOREACH(auto &v, pt.get_child("root"))

    Код компилируется и написан таким изначально. Но судя по всему использует копипаст из примеров.

    laMer007, 14 Апреля 2014

    Комментарии (4)
  9. Куча / Говнокод #15752

    +128

    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
    (defun primes-under (limit &optional (filter-depth (truncate (log limit))))
      (labels ((%purge (prefix table depth)
                 (iter
                   (for (key value) :in-hashtable table)
                   (for mul := (* key prefix))
                   (while (< mul limit))
                   (when (> depth 0) (%purge mul table (1- depth)))
                   (remhash mul table))))
        (let ((primes (iter
                        (with p := (make-hash-table))
                        (for i :from 2 :below limit)
                        (setf (gethash i p) t)
                        (finally (return p)))))
          (iter
            (for (key value) :in-hashtable primes)
            (%purge key primes filter-depth)
            (finally
             (return
               (iter
                 (for (key value) :in-hashtable primes)
                 (reducing key :by #'+))))))))

    Вопрос к знатокам: почему так работает? (у меня чисто случайно получилось)
    Для тех, кому влом разбираться:
    Задача выше - код из Прожект Ойлер. Нужно найти сумму всех простых чисел меньше 2000000 (двух миллионов).
    Методом подбора было установлено, что если из всех чисел меньше N последовательно удалять их произведения N_0 * N_1 * ... * N_m, где m = floor(log(N)), то, по крайней мере на сколько меня хватило посчитать, не-простых чисел не остается.

    Вопрос, как связан log(N), и можно ли вообще надеятся на то, что это правило - универсально (например, что степени двойки никогда не будут меньше N).

    wvxvw, 14 Апреля 2014

    Комментарии (150)
  10. Java / Говнокод #15751

    +73

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    StartElement startElement = event.asStartElement();
    if(startElement.getName().getLocalPart().equals(REPORT)){
    	report = new Report();
    }else if (startElement.getName().getLocalPart().equals(CODE)){
    	event = eventReader.nextEvent();
    	report.setCode(event.asCharacters().getData());
    	continue;
    }else if(startElement.getName().getLocalPart().equals(SHORT_NAME)){
    	event = eventReader.nextEvent();
    	report.setShortName(event.asCharacters().getData());
    }else if(startElement.getName().getLocalPart().equals(NAME)){
    	event = eventReader.nextEvent();
    	report.setName(event.asCharacters().getData());
    	continue;
    }else if(startElement.getName().getLocalPart().equals(TYPE)){
    	event = eventReader.nextEvent();
    	report.setType(ReportType.valueOf(event.asCharacters().getData()));
    	continue;
    }else if(startElement.getName().getLocalPart().equals(CON_CMN_REPORT)){
    	event = eventReader.nextEvent();
    	String conRepCode = event.asCharacters().getData();
    	report.setConnectedCommonReport(getReportByCode(conRepCode, reports));
    	continue;
    }else if(startElement.getName().getLocalPart().equals(BEFORE)){
    	event = eventReader.nextEvent();
    	report.setAvaliableBefore(Boolean.valueOf(event.asCharacters().getData()));
    	continue;
    }else if(startElement.getName().getLocalPart().equals(QUANTITY)){
    	event = eventReader.nextEvent();
    	report.setQuantity(ReportQuantity.valueOf(event.asCharacters().getData()));
    	continue;
    }else if(startElement.getName().getLocalPart().equals(CREATOR_CLASS_NAME)){
    	event = eventReader.nextEvent();
    	report.setCreatorClassName(event.asCharacters().getData());
    }

    и не лень же было

    evg_ever, 14 Апреля 2014

    Комментарии (1)