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

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

    +168

    1. 1
    define("OUTPUT_DIR_CSV", "kokoko/kukarek/files" . DIRECTORY_SEPARATOR);

    Stallman, 19 Февраля 2015

    Комментарии (103)
  3. JavaScript / Говнокод #16141

    +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
    46. 46
    47. 47
    48. 48
    49. 49
    (function(G, D) {
        "use strict";
        var $ = G.jQuery,
            listener;
    
        function addListener(elem, fn) {
            function handler(event) {
                event = event || G.event;
                var dx = event.DeltaX || event.wheelDeltaX || event.detail || 0,
                    dy = event.DeltaY || event.wheelDeltaY || event.detail || 0;
                event.dx = dx === 0 ? 0 : dx / Math.abs(dx);
                event.dy = dy === 0 ? 0 : dy / Math.abs(dy);
                fn(event);
            }
    
            if (elem.addEventListener) {
                if (D.hasOwnProperty('onwheel')) { //Modern browsers
                    listener = "wheel";
                } else if (D.hasOwnProperty('onmousewheel')) { //Old browsers
                    listener = "mousewheel";
                } else { //FF<17
                    listener = "MozMousePixelScroll";
                }
                elem.addEventListener(listener, handler, false);
            } else { //IE<9
                elem.attachEvent("onmousewheel", handler);
                listener = "onmousewheel";
            }
        }
    
        function removeListener(elem) {
            if (elem.removeEventListener) {
                elem.removeEventListener(listener);
            } else {
                elem.detachEvent(listener);
            }
        }
    
        $.fn.mousewheel = function(fn) {
            return this.each(function() {
                addListener(this, fn);
            });
        };
        $.fn.unmousewheel = function(fn) {
            return this.each(function() {
                removeListener(this, fn, false);
            });
        };
    }(this, document));

    Написал плагин для jQuery, который цепляет на элементы обработчик события вращения колесика мыши. Что скажете? Как бы вы написали функцию unmousewheel()?

    dunmaksim, 10 Июня 2014

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

    +135

    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
    private void Button2_Click(object sender, EventArgs e)
        {
          this.Label4.Text = new StreamReader("C:\\Program Files\\Microsoft Visual Studio 10.0\\VB\\VBProjects\\датаметр\\датаметр\\bin\\Release\\Key.txt").ReadLine();
          if (Operators.CompareString(this.Label4.Text, "vrc5rhhgyuuoxr45", false) == 0)
          {
            this.Button1.Visible = true;
            this.TextBox1.Visible = true;
            this.Label1.Visible = true;
            this.Label4.Visible = false;
            this.Button2.Visible = false;
            this.Label3.Visible = true;
            int num = (int) Interaction.MsgBox((object) "Ключ верный.\r\nНе сообщайте его никому !!\r\nИ не потеряйте.", MsgBoxStyle.OkOnly, (object) null);
          }
          else
            this.Label4.Text = "Ключ не верный !!\r\nПоменяйте его в файле \"Key\"";
        }

    Классное расположение файла. Причём в архиве лежит пустой файл Key.txt рядом с программой...
    Как надо было извратиться, чтобы в коде оказался не просто абсолютный путь, но и вот такой-вот с Program Files, ведь по умолчанию VS создаёт проекты в Моих документах

    http://www.cyberforum.ru/vb-net/thread971437.html

    Qwertiy, 08 Октября 2013

    Комментарии (103)
  5. C# / Говнокод #13314

    +134

    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
    using System;
    using System.Security.Cryptography;
    
    namespace sha1_calc
    {
        class Program
        {
            static void Main(string[] args)
            {
                SHA1 sha = new SHA1CryptoServiceProvider();
                foreach (var fname in args)
                {
                    Console.WriteLine("file: " + fname);
                    try
                    {
                        System.IO.FileStream fs = System.IO.File.Create(fname);
                        byte [] res = sha.ComputeHash(fs);
                        fs.Close();
                        Console.Write("0x");
                        foreach (var i in res)
                        {
                            Console.Write(i.ToString("X"));
                        }
                        Console.WriteLine();
                        Console.WriteLine("---------------------------------");
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("error: " + e);
                    }
                }
                Console.ReadKey();
            }
        }
    }

    Скачал парочку образов и решил проверить их чексуммы. Протестировал программу на скачанных файлах. Удивился, почему же у них хеши одинаковые?

    Xom94ok, 05 Июля 2013

    Комментарии (103)
  6. Pascal / Говнокод #4805

    +97

    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
    program Project42;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils, Math;
    
    const
      Radix = 10;
    
    function čòũʼnť(N: Integer): Integer;
    begin
      Result := 0;
      while N > 0 do
      begin
        N := N div Radix;
        Inc(Result);
      end;
    end;
    
    function count(N: Integer): Integer;
    begin
    //  Result := Ceil(LogN(Radix, N));     { slow! }
      Result := Ceil(Log10(N));
    end;
    
    function rdtsc: Int64;
    asm
            rdtsc
    end;
    
    var
      I: Integer;
      t0: Int64;
    
    const
      N = 100500;
    
    begin
      try
        Assert((count(42) = čòũʼnť(42)) and (count(100500) = čòũʼnť(100500)));
    
        t0 := rdtsc;
        for I := 1 to N do
          čòũʼnť(Random(MaxInt + 1));
        Writeln('naïve: ', rdtsc - t0, ' ticks');
    
        t0 := rdtsc;
        for I := 1 to N do
          count(Random(MaxInt + 1));
        Writeln('prőper: ', rdtsc - t0, ' ticks');
    
        Writeln(StringOfChar('-', 42));
    
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    
      if DebugHook <> 0 then
      begin
        Write('any big key to exit...');
        Readln;
      end;
    
    end.
    
    { http://imgs.xkcd.com/comics/haiku_proof.png :-P }

    матан > метан
    O(1) > O(N)
    логарифм > байтоёбства с делением

    bugmenot, 01 Декабря 2010

    Комментарии (103)
  7. Си / Говнокод #27954

    +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
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      int a[4] = {1, 2, 3, 4};
      int (*a_p1)[4] = (int (*)[4])a;
      int (*a_p2)[4] = &a;
      for(size_t i = 0; i < 4; ++i)
      {
        printf("%p -> %d; %p -> %d\n", &(*a_p1)[i], (*a_p1)[i], &(*a_p1)[i], (*a_p2)[i]);
      }
      return EXIT_SUCCESS;
    }

    Вот такой вывод:
    0x7ffee4ebd950 -> 1; 0x7ffee4ebd950 -> 1
    0x7ffee4ebd954 -> 2; 0x7ffee4ebd954 -> 2
    0x7ffee4ebd958 -> 3; 0x7ffee4ebd958 -> 3
    0x7ffee4ebd95c -> 4; 0x7ffee4ebd95c -> 4

    j123123, 14 Января 2022

    Комментарии (102)
  8. Куча / Говнокод #27646

    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
    pub fn take(end: u32) -> u32 
    {
        (0..).step_by(1000000000)
            .map(|i| i * i)
            .take_while(|&i| i < end)
            .sum()
    }
    pub fn filter(end: u32) -> u32 
    {
        (0..).step_by(1000000000)
            .map(|i| i * i)
            .filter(|&i| i < end)
            .sum()
    }

    Решил вернуться к изучению багра rust.
    Суть такова: код с take_while выводит 0, код с filter падает с runtime error или выбрасывается rustClang как бесконечный цикл (зависит от версии).

    https://ideone.com/IS05Q0

    То есть код filter ма-те-ма-ти-че-ски эквивалентен take_while. Поскольку i² монотонно возрастающая функция.

    Из примера ниже можно убедиться что цикл на самом деле конечен.
    https://ideone.com/xC2r35
    Счётчик кидает ошибку при переполнении и range не зацикливается.

    for x in (1..).step_by(1000000000) {
    println!("{}", x);
    }

    1
    1000000001
    2000000001
    Runtime error #stdin #stdout #stderr 0.01s 5552KB

    3.14159265, 05 Сентября 2021

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Пост SQL-проблем.
    
    Собственно, никогда за весь свой опыт я не использовал join. Большое кол-во выпускников гикбрейнсов говорит, "бла бла бла, джойн даёт нихуёвый перформанс по сравнению с этими вашими инлайн выборками".
    Но конечно гикбрейнсы не понимают, что джойн - не панацея, и блочить реляционку пока она тебе не найдет все связи - по меньшей мере тупо. Ровно как и не понимают, что перформанс им даст нормальный кэш
    который джуны так не любят использовать, или используют криво(кэшируют целые запросы, а не возвращаемые объекты).
    
    Уважаемые говнокодеры, как вам данный высер?

    monobogdan, 07 Августа 2019

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

    +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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    m =: 256$0
    index =: 0
    output =: 0$0
    input =: 0$0
    code =: 0$0
    cycles =: 0$0
    codeIndex =: 0
    setCode =: 3 : 'code =: transform y'
    transform =: '><+-.,[]'&i.
    preset =: 3 : 'cycles =: 0$0 [ codeIndex =: 0 [ output =: 0$0 [ m =: 256$0 [ index=:0'
    returnOutput =: 3 : 'output { a.'
    changeValue =: 3 : 'm =: (index&{.,y,(>:index)&}.) m'  
    addCodeIndex =: 3 : 'codeIndex =: (>: codeIndex)'
    setCodeIndex =: 3 : 'codeIndex =: {: cycles'
    deleteCycle =: 3 : 'cycles =: }: cycles'
    		 
    func_1 =: 3 : 'index =:256&|@>:index'
    func_2 =: 3 : 'index =:256&|@<:index'
    func_3 =: 3 : 'changeValue@(256&|)@>:@(index&{) m'
    func_4 =: 3 : 'changeValue@(256&|)@<:@(index&{) m'
    func_5 =: 3 : 'output=:output, ((index&{) m)'
    func_6 =: 3 : '(input =: }.input)[ changeValue(256&|@{.input)'
    func_7 =: 3 : 'cycles =: cycles&, codeIndex'
    func_8 =: 3 : '(setCodeIndex`deleteCycle@.(0&=))@(index&{) m'
    
    doAction =: func_1`func_2`func_3`func_4`func_5`func_6`func_7`func_8@.]  
    doInstuction =: 3 : '(doAction[addCodeIndex)@{.@(codeIndex&{) code'
    ExitCond =: 3 : 'codeIndex = (# code)'
    		 
    interpreter =: 3 : '(((,&1 [ doInstuction )`0: @. ExitCond)^:_) 0'
    brainFuck =: returnOutput [ interpreter [ setCode [ preset
    
    brainFuck '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'

    интерпретатор брейнфака на J

    kegdan, 19 Апреля 2016

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

    +145

    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
    public string define(string content)
        {
                    int till;
                    char[] CharArr = content.ToCharArray();
                    for (int i = 0; i < CharArr.Length; i++)
                    {
                        if (CharArr[i] == 'i')
                        {
                            till = i;
                        }
                    }
                    string Re = content.Substring(0,till);
                    return Re;
                }

    С тостера. Я рыдал.

    planaric, 18 Июня 2015

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