1. Список говнокодов пользователя wvxvw

    Всего: 202

  2. bash / Говнокод #21735

    −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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    available_docker_storage() {
        avail=$(docker info | grep 'Data Space Available' | cut -d' ' -f'5,6')
        # Some Docker drivers don't provide this info
        if [ -z "$avail" ]; then
            available_disk_space
        else
            num=$(echo "$avail" | cut -d' ' -f1)
            magnitude=1
            correction=1
            case $avail in
                *GB) magnitude=1000000000 ;;
                *MB) magnitude=1000000 ;;
                *KB) magnitude=1000 ;;
            esac
            # Prey to Poseidon they don't use scientific notation
            exponent=(${num//./ })
            exponent=${exponent[1]}
            exponent_length=${#exponent}
            correction=$((10**exponent_length))
            num=$(echo "$num" | tr -d '.')
            result=$((magnitude*num))
            result=$((result/correction))
            echo $result
        fi
    }

    Плавающий питух. bc не установлен. Ничего вообще не установлено. Только баш. Вроде работает.

    wvxvw, 27 Ноября 2016

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

    −98

    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
    #!/bin/bash
    
    docker images  | \
        grep $1 | \
        awk '{ print $1":"$2 }' | \
        xargs -I{} docker history --human=false {} | \
        grep -P '^[0-9a-f]{12}' | \
        sed -r 's/([^ ]+).+\s([^ ]+\s+)$/\1 \2/' | \
        sort -u | \
        grep -v ' 0' | \
        awk '{ print $2 }' | \
        xargs | \
        sed -e 's/\ /+/g' | \
        bc | xargs -I{} echo '({} / (1024.0 * 1024.0))' | bc

    Считает общий объем занимаемый всеми имиджами Докера с определенным тагом.

    wvxvw, 29 Августа 2016

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

    +2424

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // Most profiles should run only on one loader (they don't coordinate multiple instances,
    // and do not test performance).
    // We explicitly specify that some profiles should run on multiple loaders:
    singleLoader := true
    switch params.Config.Foo.Profile.Name() {
    case (*foo_config.ProfileIO).Name(nil):
    	singleLoader = false
    }
    
    if singleLoader {
    	// Setting TargetLoaders to a single random loader.
    }

    Вот думаем подарить человеку книжку про судоку, а то творческую натуру негде применить.

    wvxvw, 24 Августа 2016

    Комментарии (25)
  5. Куча / Говнокод #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)
  6. Си / Говнокод #20274

    −46

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    case DEBUG_VAR__SIMPLE_TYPE_BOOL:
        b = (bool *)(item->ptr);
        if (0 != strncmp(var->var_s, "0", 2) && 0 != strncmp(var->var_s, "1", 2)) {
            ERROR("Value of %s is not boolean (%s)", name, var->var_s);
            return false;
        }
        *b = (var->var_s[0] == '0') ? 0 : 1;

    Все, что вам нужно знать о формате Protobuf.

    Предыстория: нужно используя Протобаф переслать значение которое может быть либо строкой, либо числом, либо логической переменной.

    Варианты решения:
    1. Создать message с опциональными полями - аналог сишного union.
    2. Придумать формат в котором в одно поле будет записываться тип пересылаемого значения, а в другое - неведомая херня, которую потом динамически проверять.

    wvxvw, 26 Июня 2016

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

    +5

    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
    type asynchronizer struct {
    	payload interface{}
    }
    
    func (as *asynchronizer) MarshalJSON() ([]byte, error) {
    	insert := []byte("\"async\":true,")
    	if as.payload == nil {
    		as.payload = struct{}{}
    	}
    	raw, err := json.Marshal(as.payload)
    	if err != nil {
    		return raw, err
    	}
    	if raw[1] == '}' {
    		insert = insert[:len(insert)-2]
    	}
    	return append(append(raw[0:1], insert...), raw[1:]...), nil
    }

    Чем дальше в лес, тем больше Го напоминает ПХП.

    wvxvw, 03 Апреля 2016

    Комментарии (28)
  8. bash / Говнокод #19664

    −53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    set +x
    for file in ./*.{status,addr2Line,sysctlLog,procLog}
    do
        if [ -f "./$file" ]
        then
    	    echo -e "\n\n \e[1m### Failure info: \e[34m$file\e[0m\e[1m ###\e[0m"
            cat ./$file | sed -e 's/^host: \(.*\)/host: \x1b[1m\x1b[44m\1\x1b[0m/' \
                              -e 's/^\(.*PANIC:\)/\x1b[1m\x1b[31m\1/' \
                              -e 's/^\(.*Use the following command for more stack info:\)/\x1b[0m\1/'
        fi
    done

    Почти Malbolge

    wvxvw, 20 Марта 2016

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

    −1

    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
    FROM centos:7
    
    RUN yum update -y && yum -y install openssh-server ssh
    
    RUN echo 'root:123456' | chpasswd
    RUN passwd -u root
    RUN ssh-keygen -A
    RUN ssh-keygen -t rsa -b 4096 -C "[email protected]" -N "" -f /root/.ssh/id_rsa
    RUN cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
    RUN chmod 600 /root/.ssh/id_rsa.pub
    ADD ./ssh_config /etc/ssh/ssh_config
    ADD ./sshd_config /etc/ssh/sshd_config
    
    CMD ["/bin/sh", "-c", "{ while :; do /usr/sbin/sshd -eD ; done }"]

    docker build --name trolleybus-is-hleba .

    Вот так вот.

    wvxvw, 16 Марта 2016

    Комментарии (8)
  10. bash / Говнокод #19282

    −57

    1. 1
    yum check | grep 'duplicate with' | awk '{ print $6 }' | xargs -I{} yum -y remove {}

    Брат умер.

    wvxvw, 10 Января 2016

    Комментарии (50)
  11. JavaScript / Говнокод #18996

    −3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    var api = angular.module('GithubApi', []);
    api.controller('GithubStatus', function ($scope, $http) {
        $http.get('/api.json')
            .success(function (response) { $scope.api = response; });
    });

    Пейсатели ж.скрипт фреймоврков не перестают радовать. Код несколько упрощен, но суть должна быть очевидна каждому: переменная api будет затерта как только она будет создана строкой типа "[object Object]" потому что в $scope есть поле с таким же значением.

    wvxvw, 09 Ноября 2015

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