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

    Всего: 202

  2. Куча / Говнокод #12052

    +142

    1. 1
    http://s9.postimage.org/7t1dai0en/born_to_program.png

    Born to program :(

    wvxvw, 04 Ноября 2012

    Комментарии (10)
  3. ActionScript / Говнокод #12040

    −115

    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
    // =================================================================================================
    //
    //	Starling Framework
    //	Copyright 2011 Gamua OG. All Rights Reserved.
    //
    //	This program is free software. You can redistribute and/or modify it
    //	in accordance with the terms of the accompanying license agreement.
    //
    // =================================================================================================
    
    package starling.utils
    {
        /** Returns the next power of two that is equal to or bigger than the specified number. */
        public function getNextPowerOfTwo(number:int):int
        {
            if (number > 0 && (number & (number - 1)) == 0) // see: http://goo.gl/D9kPj
                return number;
            else
            {
                var result:int = 1;
                while (result < number) result <<= 1;
                return result;
            }
        }
    }

    Для кого-то и логарифм - высшая математика... :(

    wvxvw, 01 Ноября 2012

    Комментарии (122)
  4. ActionScript / Говнокод #12025

    −99

    1. 1
    2. 2
    3. 3
    4. 4
    private function onClick(e:MouseEvent):void 
    {
            dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false))
    }

    Еще один кусочек очень полезного кода. (this для этого обработчика - MovieClip).

    wvxvw, 30 Октября 2012

    Комментарии (33)
  5. ActionScript / Говнокод #12022

    −121

    1. 1
    private var _Button:Array;

    Работа подвалила, ура!

    wvxvw, 29 Октября 2012

    Комментарии (14)
  6. JavaScript / Говнокод #12002

    +160

    1. 1
    new Array(100).map(function(x) { return Math.random() * 1000; });

    Угадайте результат.

    wvxvw, 25 Октября 2012

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

    +123

    1. 1
    2. 2
    (format t "~{~[~:R~; ~S~:;none~] chance~^, ~}" '(0 1 0 2 0 3))
    ;; first chance, second chance, third chance

    Любителям ДСЛ (а так же древесно-стружечных плит, и других керамических изделий):
    Объясните почему так работает? Наверное не говнокод, просто нихрена не понятно.

    wvxvw, 18 Октября 2012

    Комментарии (2)
  8. JavaScript / Говнокод #11901

    +156

    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
    function isProperty(object, property) {
        "use strict";
        var p, names, original = object,
            ecmaTypes = [Object, Array, String, Number, Date];
        try {
            for (p = 0; p < ecmaTypes.length; p += 1) {
                if (ecmaTypes[p] == object) {
                    console.log("looking up: " + ecmaTypes[p]);
                    names = Object.getOwnPropertyNames(ecmaTypes[p]);
                    if ('prototype' in ecmaTypes[p]) {
                        names = names.concat(
                            Object.getOwnPropertyNames(
                                ecmaTypes[p].prototype));
                    }
                    break;
                }
            }
            do {
                object = object.prototype.__proto__.constructor;
                names = names ?
                    names.concat(Object.getOwnPropertyNames(object)) : [];
                if ('prototype' in object) {
                    names = names.concat(
                        Object.getOwnPropertyNames(object.prototype))
                }
            } while  (object != Object)
            if (!names) {
                names = Object.getOwnPropertyNames(object);
            }
        } catch (error) {
            for (p in object) {
                if (object[p] == property) {
                    return true;
                }
            }
            return false
        }
        for (p = 0; p < names.length; p += 1) {
            if (original[names[p]] == property ||
                original.prototype[names[p]] == property) {
                return true;
            }
        }
        return false;
    }

    А как еще узнать, является ли функция методом принадлежащим объекту или нет? Это еще после трех часов проведенных в муках пытаясь понять, что вообще происходит.

    wvxvw, 10 Октября 2012

    Комментарии (27)
  9. Python / Говнокод #11880

    −94

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    def __call__(self, *args, **kw):
        # ...
        if args and len(args) > 1 and args[0] is args[1][0]:
            # fml...
            temp = list(args)
            temp.pop(1)
            args = tuple(temp)
        return self._execute(*args, **kw)

    Быль про архитектуру.

    wvxvw, 06 Октября 2012

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

    +124

    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
    data = load('ex1data1.txt');
    X = data(:, 1); y = data(:, 2);
    m = length(y); % number of training examples
    X = [ones(m, 1), data(:,1)]; % Add a column of ones to x
    theta = zeros(2, 1); % initialize fitting parameters
    
    % Some gradient descent settings
    iterations = 1500;
    alpha = 0.01;
    
    function J = computeCost(X, y, theta)
      m = length(y); % number of training examples
      hypothesis = theta' * X';
      J = 1 / (2 * m) * sum((hypothesis' - y) .^ 2);
    endfunction
    
    % compute and display initial cost
    computeCost(X, y, theta)

    Язык: Матлаб / Октава.
    Что происходит: из массива создается матрица путем добавления еще одного такого же массива полностью заполненного единицами, а потом эта матрица умножается на вектор из двух элементов (первая колонка, соответственно, умножается на первый элемент вектора, вторая - на второй). Т.е. это равносильно вызову функции вида y(x) = Kx + b для всех членов исходного массива X. По сути происходит следующее: y(x_0, x_1) = K * x_1 + b * x_0, где x_0 всегда равен единице.
    Источник разглашать не буду.

    wvxvw, 11 Сентября 2012

    Комментарии (31)
  11. ActionScript / Говнокод #11722

    −86

    1. 1
    var file: * = File.userDirectory.resolvePath(CACHE_PATH + hashURL(key));

    На первый взгляд просто немного странный код, но за ним стоит интересная история.
    Человек написавший этот код после долгих расспросов и двузначных ответов таки сознался, что таким образом он надеялся избежать компиляции AIR классов в бразуерном проекте. Но интереснее еще и то, что человек продолжает в это свято верить и отстаивать свою точку зрения... а я уволился.
    Если вы не в курсе, Адоби делают несколько версий плееров, одна "ветка" предназначена для запуска с десктопа и ей можно обращаться к файловой системе, в то время как обычному плееру в браузере такое делать нельзя, ну или только после всяческих подтверждений и т.п. Человек таким образом пытлася написать кеширование загруженных картинок на диск к пользователю. Но тут судьба сыграла злую шутку, он компилировал все эти классы в библиотеку, которую забывал обновлять, и по счастливому стечению обстоятельств, библиотечный класс не содержал никаких упоминаний файловой системы - и все работало замечательно.

    Прогрнозируемый разрыв шаблона произойдет примерно недели через две-три, когда нужно будет обновлять версию. Ну, это конечно при условии, что кеширование каким-то образом будут тестировать, но, скорее всего не будут, и шутка может затянуться.

    wvxvw, 07 Сентября 2012

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