1. Лучший говнокод

    В номинации:
    За время:
  2. Python / Говнокод #23658

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    def normalize_phone(phone):
            if (not phone):
                return
            normalized_phone = phone.replace("(", "").replace(")", "").replace("+", "").replace("-", "").replace(" ", "")
            if normalized_phone[0] == "7":
                p = list(normalized_phone)
                p[0] = "8"
                normalized_phone = "".join(p)
            if normalized_phone[0] == "9":
                normalized_phone = "8" + normalized_phone
            return normalized_phone

    Питонокод пхпешника.

    хуита, 17 Января 2018

    Комментарии (23)
  3. bash / Говнокод #23575

    0

    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
    #!/bin/sh
    # 
    # Simple script to enable CPU cores automatically again if cooling state is
    # 3 or lower.
    #
    
    set -e
    
    get_cooling_state() {
            echo $(cat /sys/devices/virtual/thermal/cooling_device0/cur_state)
    }
    
    enable_cpu() {
            if [ $(cat /sys/devices/system/cpu/cpu$1/online) = 0 ]; then
                    echo 1 > /sys/devices/system/cpu/cpu$1/online || true
            fi
    }
    
    while true; do
            for c in 0 1 2 3; do
                    if [ $(get_cooling_state) -le 3 ]; then
                            enable_cpu $c
                    fi
            done
            sleep 5
    done

    Вот такой замечательный код занимается защитой процессора в стандартных сборках под OrangePi на Allwinner H5
    https://github.com/orangepi-xunlong/OrangePiH5_scripts/blob/master/platform-scripts/OrangePi_corekeeper.sh
    Думаю, говорить о том, как такой код работает, и насколько лучше был бы тут простенький скрипт, скажем, на питоне, смысла нет

    losetup, 10 Декабря 2017

    Комментарии (23)
  4. C++ / Говнокод #23221

    −2

    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
    #include <iostream>
    #include <typeinfo>
    
    class S
    {
    public:
    	S* _next;
    };
    
    int main (int argc, char **argv)
    {
        for (S* sw1 = new S(), sw2 = sw1->_next;;)
    	{
    		std::cout << typeid(sw1).name() << std::endl;  
    		std::cout << typeid(sw2).name() << std::endl;  
    		break;
    	}
    
        return 0;
    }

    какого хрена этот говнокод не хочет скомпилиться :)

    ASD_77, 26 Июля 2017

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function get_rand_word () {
        $list = explode(" ", file_get_contents('http://www.gnu.org/licenses/gpl-3.0.txt'));
            $cwords = rand (2,5);
            $string = '';
            $r = 0;
            while($r++<$cwords) {
                    $string .= preg_replace('~[^a-z]+~', '', strtolower($list[rand(0, (count($list)-1))]));
            }
            return $string;
    }

    Одним прекрасным утром поступила жалоба, что сервер ддосят. Канал на 100Mb был полностью забит входящим трафиком. Ддосили с www.gnu.org...

    deadmorose, 18 Июля 2017

    Комментарии (23)
  6. 1C / Говнокод #21711

    −101

    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
    Функция ПроверкаЗаполнения()
    	Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
    		Предупреждение("Не выбран контрагент!");
    		Возврат Ложь;
    	КонецЕсли;
    	Если НЕ ЗначениеЗаполнено(ВалютаДокумента) Тогда
    		Предупреждение("Не выбрана валюта документа!");
    		Возврат Ложь;
    	КонецЕсли;
    	Если НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда
    		Предупреждение("Не выбрана дата окончания периода сверки!");
    		Возврат Ложь;
    	КонецЕсли;
    	Если ДатаОкончания < ДатаНачала Тогда
    	    Предупреждение("Неверно задан период сверки расчетов!");
    		Возврат Ложь;
    	КонецЕсли;	
    	Возврат Истина;
    КонецФункции

    Как нужно дрочить пользаков.

    blMbl, 23 Ноября 2016

    Комментарии (23)
  7. Куча / Говнокод #20865

    +1514

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    [151] ns-flow-pair-entry(n,c) ::= ns-flow-pair-yaml-key-entry(n,c)
                                    | c-ns-flow-map-empty-key-entry(n,c)
                                    | c-ns-flow-pair-json-key-entry(n,c)
    [152] ns-flow-pair-yaml-key-entry(n,c) ::= ns-s-implicit-yaml-key(flow-key)
                                               c-ns-flow-map-separate-value(n,c)
    [153] c-ns-flow-pair-json-key-entry(n,c) ::= c-s-implicit-json-key(flow-key)
                                                 c-ns-flow-map-adjacent-value(n,c)
    [154] ns-s-implicit-yaml-key(c) ::= ns-flow-yaml-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */
    [155] c-s-implicit-json-key(c) ::= c-flow-json-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */

    If the “?” indicator is omitted, parsing needs to see past the implicit key to recognize it as such. To limit the amount of lookahead required, the “:” indicator must appear at most 1024 Unicode characters beyond the start of the key. In addition, the key is restricted to a single line.

    Note that YAML allows arbitrary nodes to be used as keys. In particular, a key may be a sequence or a mapping. Thus, without the above restrictions, practical one-pass parsing would have been impossible to implement.


    Столкнулся, значит, с проблемой. ЙАМЛ парсер для Го не может распарсить даже примеры из спецификации.
    Заглянул в исходники - ад и погибель. Копипаста сишного кода из libyaml с косметическими изменениями. Функции по 200+ строк с кучей ифов, регулярками и т.п. Решил заглянуть в спецификацию в надежде, что может можно самому как-то... в спецификации - ад и погибель. Копипаста с грамматическими ошибками, и тьма их. Ну а как дошел до этого места, так сразу и понял, что тут уже делать больше нечего.

    wvxvw, 19 Августа 2016

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (test)
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails, true);
    
    }
    else
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails);
    }

    индусы радуются и танцуют групповые танцы, когда видят, что подобный код пишет кто то кроме них

    and1dufresn3, 04 Августа 2016

    Комментарии (23)
  9. PHP / Говнокод #20361

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /**
      * @param int $day
      * @return bool
      */
    protected function isWorkingDay($day)
    {
        return $day % 8 <= 5;
    }

    Cпособ определить, является ли указанный день (передается номер дня в неделе от 1 до 7) рабочим. Чем автора не устроил return $day <= 5 - непонятно..

    feversocial, 11 Июля 2016

    Комментарии (23)
  10. C++ / Говнокод #20326

    +3

    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<class... Bases>
    struct MaminVisitor: public boost::static_visitor<>, public Bases... {
        MaminVisitor(Bases&&... bases) : Bases(std::move(bases))... { }
    };
    
    
    template<class Variant, class... F>
    void match(Variant &&v, F &&... functors) {
        typedef MaminVisitor<typename std::decay<F>::type...> visitor_t;
        boost::apply_visitor(visitor_t(std::move(functors)...), std::forward<Variant>(v));
    }
    
    
    int main() {
        boost::variant<int, double, std::string> v = "ololo";
    
        match(v,
            [&](auto x) {
                std::cout << "auto branch " << x << std::endl;
            },
            [&](double x) {
                std::cout << "double branch " << x << std::endl;
            }
        );
    
        return 0;
    }

    Сделал няшный матч, а на гцц не конпелируется.
    http://ideone.com/J9ulsr

    kurwa-nextgen, 05 Июля 2016

    Комментарии (23)
  11. Куча / Говнокод #20186

    +14

    1. 1
    2. 2
    3. 3
    Note: If your <username> starts with the "u" or "x" character, change
    C:\MSys\1.0\home\<username>\config.h and double all backslashes
    in VLC_COMPILED_BY constant.

    Из гайда по сборке VLC.

    bormand, 13 Июня 2016

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