1. Куча / Говнокод #3694

    +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
    17. 17
    18. 18
    19. 19
    20. 20
    0 DIM P(4): DIM R(4)
    10 DATA 173, 48, 192, 136, 208, 5, 206, 1, 3, 240, 9, 202, 208, 245, 174, 0, 3, 76, 2, 3, 96,,0
    20 FOR X=770 TO 792
    30 READ Y
    40 POKE X, Y
    50 NEXT X
    60 DATA 192, 152, 144, 128, 114
    70 FOR I=0 TO 4
    80 READ P(I)
    90 NEXT I
    100 DATA 255, 128, 64, 64, 128
    FOR I=0 TO 4
    READ R(I)
    NEXT I
    FOR I=0 TO 4
    POKE 768, P(I)
    POKE 769, R(I)
    CALL 770
    NEXT I
    END

    Не совсем ГК, зато выглядит страшно. Шарманка для ПЭВМ «Агат-7». Вторая строка — машинные коды. Выглядит как обфуска. Вот листинг:

    .ORG 768
    L_768: .BYTE 0 ; НОТА
    L_769: .BYTE 0 ; ДЛИТЕЛЬНОСТЬ
    L_770: LDA $C030
    L_773: DEY
    BNE L_781
    DEC L_769
    BEQ L_790
    L_781: DEX
    BNE L_773
    LDX L_768
    JMP L_770
    L_790: RTS
    .BYTE $FF
    .BYTE 0

    Кстати, таблица команд процессора совместима с 6502, поэтому листинг похож на демонстрировавшийся в фильме «Терминатор».
    Строчки 7 и 11 — это массивы нот и длительностей соответственно.
    Самое страшное, что этот код мы набирали на уроке информатики в восьмом классе. Представляете, что может произойти, если ошибиться во второй строке? Хорошо, что у «Агатов» винчестеров не было...

    inkanus-gray, 13 Июля 2010

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

    +129

    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
    for i in 14 15 27 29 38; do # make a sed string to replace special characters
        hexval=$(printf \\\\x%02x $i)
        sedstr=$sedstr"s/'$hexval/chr($i)||'/g;s/$hexval'/'||chr($i)/g;s/$hexval/'||chr($i)||'/g;"
    done
    
    cat <<EOF | sqlplus -S $DB_LOGIN | sed $sedstr | awk -v dbdir=db/data '{print > dbdir"/"$3".sql"}'
    $SPINIT
    BEGIN
      FOR i IN (SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' ORDER BY OBJECT_NAME) LOOP
        DECLARE
          all_cols VARCHAR2(32767) := '';
          TYPE data_cur_type IS REF CURSOR;
          data_cur data_cur_type;
          ins_str VARCHAR2(32767);
        BEGIN
          FOR j IN (SELECT DISTINCT(COLUMN_NAME) FROM USER_TAB_COLUMNS
                    WHERE TABLE_NAME=i.OBJECT_NAME AND
                    DATA_TYPE IN ('VARCHAR2', 'CHAR', 'NUMBER', 'DATE')
                    ORDER BY COLUMN_NAME) LOOP
            all_cols := all_cols || j.column_name || ',';
          END LOOP;
          IF all_cols is null THEN GOTO end_of_loop; END IF;
          all_cols := RTRIM(all_cols,',');
        
          OPEN data_cur FOR 'select ' ||
           '''INSERT INTO ' || i.object_name || ' (' || all_cols || ') VALUES (' || '''''''||' || replace(all_cols, ',', '||'''''',''''''||') || '||'''''');''' ||
           ' from ' || i.object_name || ' order by ' || all_cols;
          LOOP
            FETCH data_cur INTO ins_str;
            EXIT WHEN data_cur%NOTFOUND;
            dbms_output.put_line(ins_str);
          END LOOP;
          CLOSE data_cur;
        END;
    <<end_of_loop>> NULL;
      END LOOP;
    END;
    /
    EOF

    Проблеме экранирования посвящается.
    На стыке технологий: экспорт данных из БД в виде insert-ов. Там еще есть awk-шный код по разбору всего, что получилось, но он не такой ужасный.
    Автор я, если чо:)

    nil, 13 Июля 2010

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

    −126

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    .........................................
     if [[ "$rez" = "0%" ]]
     then
     let "i = i + 1"
     else
    #Ещё чуток индийского кода:)
     let "i = i + 0"
     fi
     done
    .........................................

    ccoder, 13 Июля 2010

    Комментарии (5)
  4. SQL / Говнокод #3691

    −864

    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
    Гавнокод --
    
    SELECT * FROM  Table1
    WHERE [Id] not in 
    		(
    		SELECT min([Id]) FROM Table1
    		WHERE [Code] in 
    				(
    				SELECT [Code] FROM Table1
    				GROUP BY [Code]									HAVING count([Code]) > 1
    				)
    					GROUP BY [Code]
    		)
    	and [Id] in 
    		(
    				SELECT [Id] FROM Table1
    				WHERE [Code] in (
    						SELECT [Code] FROM Table1
    						GROUP BY [Code]
    						HAVING count([Code]) > 1
    						)
    		)
    
    
    Нормальний варіант --
    
    SELECT * FROM Table1 AS a
    WHERE [Id] not in 
    		(
    			SELECT min([Id]) FROM a_ListParam
    			WHERE a_ListParam.[Code] = a.[Code]
    		)

    O_O, 12 Июля 2010

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

    +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
    // считает кол-во основных вопросов в тесте
    function get_qnum($file_name) {
    $dom = get_str_file($file_name);
    $root = $dom->documentElement;
    $nodes = $root->childNodes;
    
    $currentTask = array();
    foreach ($nodes as $node) {
            if ($node->nodeName == 'TASK') {
                    $currentTaskName = $node->getAttribute('NAME');
                    if ($currentTaskName == $_SESSION['TEOR']) {
                            $currentTask['NAME'] = $currentTaskName;
                            $currentTask['QUEST'] = array();
                            $Task_info = $node->childNodes;
    
                            foreach ($Task_info as $info) {                           
                                    if ($info->nodeName == 'QUEST') 
                                              $currentTask['QUEST'][] = ss_qstn_desc($info);                               
                                    if ($info->nodeName == 'QUESTYESNO') 
                                              $currentTask['QUEST'][] = ss_qstnyesno_desc($info);                            
                            }
                    }
            }
    }
    return count($currentTask['QUEST']);
    }

    cyberuta, 12 Июля 2010

    Комментарии (65)
  6. Куча / Говнокод #3689

    +89

    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
    ## dup_hq - merge ##
     dup     = opos!=pos || abs(dm)<2 || abs(dm)==3 ? 0 : dcn*5<dbc && dnn*5<dbc && 
    (dcn<1.25*thr || bn<bc && pos==lpos) || (dcn*dcn<dbc || dcn*5<dbc) && bn<bc && pos==lpos 
    && dnn<.9*dbc || dnn*9<dbc && dcn*3<dbc ? 1 : (dbc*dbc<dcn || dbc*5<dcn) && 
    bb<bc && pos==lpos && dbb<.9*dcn || dbb*9<dcn && dbc*3<dcn ||  dbb*5<dcn && 
    dbc*5<dcn &&  (dbc<1.25*thr || bb<bc && pos==lpos) ? -1 : 0
    mer = bom==false && opos==pos && dup==0 && abs(dm)>2 && 
          (dbc*8<dcn || dbc*8<dbb || dcn*8<dbc || dcn*8<dnn || dbc*2<thr ||
           dcn*2<thr || dnn*9<dbc && dcn*3<dbc || dbb*9<dcn && dbc*3<dcn)
    
    
    add  = bp1*cn2>bn2*cp1*(1+thr*.01) && bn0*cn2>bn2*cn0*(1+thr*.01) && 
              cn2*bn1>cn1*n2*(1+thr*.01)
    dup  = bom ? (bn0>bp2 && bn0>=bp1 && bn0>bn1 && bn0>bn2 && cn0<125 ? 
             (d12*d12<d10 || d12*9<d10) ? 1 :  (d10*d10<d12 || d10*9<d12) ? 
             0 : 4 : bp1>bp3 && bp1>=bp2 && bp1>bn0 && bp1>bn1 ? 1 : 0) : dup!=0 ? 
             dup : om>0 && om<5 ? (bbool==false ? 0 : om==4 && bp1*cn1<bn1*cp1 ||
             om==3 && d10<d01 || om==1 ? -1 : 1) : om==5 ? (bp1*cp2>bp2*cp1*(1+thr*.01) && 
             bn0*cp2>bp2*cn0*(1+thr*.01) && cp2*bn1>cn1*bp2*(1+thr*.01) &&
             (add==false || cp2*bn2>cn2*bp2) ? -2 : add ? 2 : bn0*cp1>bp1*cn0 && 
             (bn0*cn1<bn1*cn0 || cp1*bn1>cn1*bp1) ? -1 : bn0*cn1>bn1*cn0 ? 1 : 0) : 0

    это называется AviSynth - и это вполне нормальный скрипт, ибо другого пути там просто нет, да и альтернатив AviSynthy пока нет

    3.14159265, 12 Июля 2010

    Комментарии (18)
  7. Java / Говнокод #3688

    +79

    1. 1
    long sourceBaseId = Long.parseLong(_depId+"00000000000000");

    konsoletyper, 12 Июля 2010

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

    +105

    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
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    
    
    namespace GisClient
    {
        class EntryPoint
        {
            static void Main()
            {
                TcpClient TcpCli = new TcpClient("127.0.0.1", 15800);
                NetworkStream ns = TcpCli.GetStream();
                
                PacketStructure obj = new PacketStructure();
                obj.CommandOptions = 0x80; //What's this shit??? 0x80 , what's Encoding??? What 0x80 equals to?
    
                obj.Write2Net(ns);
                obj.ReadFromNet(ns);
            }
        }
    
        class PacketStructure
        {
            UInt32 PacketId = 0x35534947;
            Guid UserId = new Guid();
            
            public byte CommandOptions = 0;
            UInt32 CommandSize = 0;
    
            byte[] Reserved = new byte[3];
    
    
            public void Write2BufferStream(MemoryStream ms)
            {
                //PacketId || Length - 4 || Type - UInt32
                ms.Write(BitConverter.GetBytes(PacketId), 0, 4);
                //UserId || Length - 16 || Type - byte[16]
                ms.Write(UserId.ToByteArray(), 0, 16);
                //Command Options || Length - 1 || byte
                ms.Write(BitConverter.GetBytes(CommandOptions), 0, 1);
                //Command Size || Length - 4 || Int32
                ms.Write(BitConverter.GetBytes(CommandSize), 0, 4);
                //Reserved space || Length - 3 || byte[3]
                ms.Write(Reserved, 0, 3);
                //CRC32 - control summary
                ms.Write(BitConverter.GetBytes(CRC32.BytesCrc(ms.ToArray())), 0, 4);
            }
    
            public void Write2Net(NetworkStream ns)
            {
                MemoryStream ms = new MemoryStream();
    
                Write2BufferStream(ms);
    
                byte[] A = ms.ToArray();
                ns.Write(A, 0, (int)ns.Length);
            }
    
            public void ReadFromNet(NetworkStream ns)
            {
                byte[] B = new byte[32];
    
                ns.Read(B, 0, (int)ns.Length);
    
                PacketId = BitConverter.ToUInt32(B, 0); //??????? lolwhat?????!!!!!111
    
                byte[] C = new byte[16];
    
                for (int i = 0; i < 16; i++)
                {
                    C[i] = C[i + 4];
                }
    
                foreach (int i in C)
                {
                    Console.WriteLine(i);
                    Console.ReadLine();
                }
    
                UserId = new Guid(C);
    
                CommandOptions = B[20]; // Why no BitConverter?????!!!!!
    
                CommandSize = BitConverter.ToUInt32(B, 21); // The end of CommandSize IS NOT SET!!!!1111
    
                for (int i = 0; i < 3; i++) Reserved[i] = B[i + 25]; // A[0] = Packet[0 + 25] IF i = 0 THEN i++
    
                Console.ReadLine();
            }
    
        }
    }

    Код с работы, вот так вот мы отслыаем и принимаем пакеты по TCP.
    Комменатрии особенно доставляют удовольствие :)

    sergylens, 12 Июля 2010

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

    +144

    1. 1
    $a = true || false;

    ^)

    ycuk, 12 Июля 2010

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

    +119

    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
    private static int inv_mod(int x, int y) 
    {
        int q = 0;
        int u = x;
        int v = y;
        int a = 0;
        int c = 1;
        int t = 0;
    
        do 
        {
            q = v/u;
    
            t = c;
            c = a-q*c;
            a = t;
    
            t = u;
            u = v-q*u;
            v = t;
        }
        while( u != 0 );
    
        a = a%y;
        if( a < 0 ) a = y+a;
    
        return a;
    }

    Кусок кода из Microsoft Enterprise Library 5.0 - Hands On Labs: Logging Application Block

    asilmacc, 11 Июля 2010

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