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

    Всего: 168

  2. JavaScript / Говнокод #14327

    +167

    1. 1
    2. 2
    gl.drawArrays(gl.QUADS, 0, 4);
    // WebGL рисует черный экран с четырьмя точками.

    bormand vs WebGL. Акт второй.

    Как оказалось, в OpenGL ES выпилили GL_QUADS и GL_POLYGON.
    Но т.к. в js несуществующее поле это null, а null это 0, а 0 это GL_POINTS, то рисуются 4 точки ;)

    bormand, 07 Января 2014

    Комментарии (53)
  3. Куча / Говнокод #14325

    +133

    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
    // bormand: Ну что, затестим шейдер в WebGL...
    int iter = 0;
    while (iter < 1000 && length(z) < 2.0) {
        z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
        iter++;
    }
    // compileShader: 'while' : This type of loop is not allowed
    
    // bormand: WTF?! В обычном OpenGL же работало, ну ок...
    int iter = 0;
    for (; iter < 1000; iter++) {
        if (length(z) < 2.0)
            break;
        z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
    }
    // compileShader: 'for' : Missing init declaration
    
    // bormand: Да что за херня!?
    for (iter = 0; iter < 1000; iter++) {
    // compileShader: 'for' : Invalid init declaration
    
    // bormand: Подавись, сука!
    int iters = -1;
    for (int iter = 0; iter < 1000; iter++) {
        if (length(z) < 2.0) {
            iters = iter;
            break;
        }
        z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
    }
    // compileShader: ok.

    bormand vs WebGL

    bormand, 07 Января 2014

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

    +34

    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
    class cxx_query {
        elements operator()(const std::string &css_query);
        void operator()(std::function<void()> callback);
        http_request get(const std::string &url);
        // ...
    } $;
    
    #define function []
    
    $(function() {
        $.get(some_url, function(const std::string &data) {
            $("#result").html(data);
        });
    });

    bormand, 30 Декабря 2013

    Комментарии (284)
  5. Java / Говнокод #14254

    +83

    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
    // java.io.FilterOutputStream
    public void close() throws IOException {
        try {
            flush();
        } catch (IOException ignored) {
        }
        out.close();
    }
    
    // тестовый код
    try (OutputStream os = new BufferedOutputStream(new FileOutputStream("/tmp/little_virtual_fs/1.txt"))) {
        byte[] buf = new byte[2028544];
        os.write(buf, 0, 2028544); // максимальный размер файла, который влезает на нашу фс
        os.write(buf, 0, 5); // и еще немножко
        //os.flush();
    }

    А сейчас, на арене нашего цирка - очередная жабопроблема!

    Как думаете, каков результат выполнения тестовой программы?

    Запишет 2028549 байт? Хрен там, места маловато.
    Выдаст IOException на write()? Хрен там, буферизация.
    Выдаст IOException на close()? Хрен там, его сожрала реализация FilterOutputStream.

    Результат: файл не дописался, исключения нет.
    Решение: всегда дергать flush() перед close() самому или не юзать буферизованный поток.

    bormand, 21 Декабря 2013

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

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5ANDTRIPLEDES");
    PBEKeySpec spec = new PBEKeySpec(password, salt, 1024, 128);
    SecretKey key = factory.generateSecret(spec);
    hexdump(key.getEncoded());

    http://ideone.com/bVElQG

    Не, ну я все понимаю, PKCS #5 1.5 аля PBE, MD5 и DES не считаются безопасными алгоритмами... но не настолько же...

    bormand, 14 Декабря 2013

    Комментарии (19)
  7. ActionScript / Говнокод #14144

    −130

    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
    [Embed(source="../../assets/dtmf/dtmf-0.mp3")]
    [Bindable]
    public var dtmf0 : Class;
    
    // ...еще десяток звуков ...
    
    [Embed(source="../../assets/dtmf/dtmf-star.mp3")]
    [Bindable]
    public var dtmfstar : Class;
    
    private function clickHandler(key : String) : void {
        var dtmf : Object = {
            "0": dtmf0, "1": dtmf1, "2": dtmf2,
            "3": dtmf3, "4": dtmf4, "5": dtmf5,
            "6": dtmf6, "7": dtmf7, "8": dtmf8,
            "9": dtmf9, "*": dtmfstar, "#": dtmfhash
        };
        var sound : Sound = new dtmf[key]() as Sound;
        sound.play();
        dispatchEvent(new DataEvent('dialpadKey', false, false, key));
    }

    Как говорится, от пыхи и от флеша не зарекаются... Вот и мне пришлось на пару-тройку дней связаться с флешем флексом.

    Вот такой вот код я высрал написал сегодня ;)

    bormand, 27 Ноября 2013

    Комментарии (18)
  8. Си / Говнокод #14142

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // drivers/usb/serial/cp210x.c
    
    static void cp210x_close(struct usb_serial_port *port)
    {
            usb_serial_generic_close(port);
            cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_DISABLE);
    }

    Дело было так.

    На прошлой неделе, по просьбе одного знакомого, я сел писать прошивку для attiny2313, которая должна принять по RS-232 строчку и исполнить соответствующую команду. Потратив несколько минут на раскур даташита, а именно главы, посвященной USART, я набросал тупейший код на сях, залил его на чип, и затестил через миником. Все работало нормально, ничто не предвещало беды...

    Но когда я попробовал послать команду через echo, меня ждал облом. Она не выполнилась. На 10 раз проверил код - все ок, в миникоме пашет идеально, через echo - куй. Под виндой та же ересь. Чем отличается echo от миникома? Правильно, тем, что оно отправляет символы подряд, без пауз. Контроллер тактировался от внутренного генератора, поэтому я подумал, что оный хреново откалиброван, и что надо бы его настроить... Вечер ушел на написание прошивки для калибровки... Оказалось, что частота действительно уплыла на 2% от расчетной, что некритично. Ну да пофиг, откалибровался до +-0.5%. Запустил echo - куй. Послал все нахрен, и пошел спать...

    (Продолжение в комменте ниже)

    bormand, 26 Ноября 2013

    Комментарии (49)
  9. C++ / Говнокод #14075

    +10

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    int ScriptArrow;
    ...
    // проверим а есть ли в натуре скрипт по этому указателю
    try
    {
        RunScript = (Script*)ScriptArrow;
        RunScript->Script.ArrVar.count();
    }
    catch (...)
    {
        RunScript = NULL;
    }

    Проверка, в натуре. Авторский комментарий сохранен :)

    bormand, 30 Октября 2013

    Комментарии (42)
  10. Python / Говнокод #14074

    −98

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    rows = db.query_all("select id, command from всякие-заджойненные-таблички")
    foreach row in rows:
        if row[1] == command:
            return row[0]
    return None

    Высрал сегодня на работе. Пока пых не трогал - такого говна не писал ;)

    bormand, 28 Октября 2013

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

    +22

    1. 1
    printf("Куда все подевались? Ни одного коммента за два дня...\n");

    bormand, 24 Октября 2013

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