1. Куча / Говнокод #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)
  2. 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)
  3. 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)
  4. 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)
  5. Куча / Говнокод #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)
  6. Java / Говнокод #3688

    +79

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

    konsoletyper, 12 Июля 2010

    Комментарии (16)
  7. 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)
  8. Куча / Говнокод #3686

    +144

    1. 1
    $a = true || false;

    ^)

    ycuk, 12 Июля 2010

    Комментарии (1)
  9. 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)
  10. PHP / Говнокод #3684

    +144

    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
    ...
    <body>
    <form action="top1.php" method="get">
    <input type="checkbox" value="f1()" name="a1"  > Windows 2000
    <input type="checkbox" value="f2()" name="a2"  > Windows 7
    </form>
    </body>
    </html>
     
    <?php
    function f1(){
    if($_POST['a1']){
    echo 'Good';
    }else
    echo 'bad';
    }
    ?>

    Автор этого чуда хотел, чтоб
    "При отметке галочкой первого чекбокса должно ниже самих чекбоксов вывестись слово good"

    administation, 11 Июля 2010

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