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

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

    +163

    1. 1
    2. 2
    3. 3
    function paging($pageNum,$rowsPerPage)
    {
    	GLOBAL $_GET, $_POST, $_SESSION;

    На всякий случай. Чтоб точно глобальные были. А то всякое бывает ...

    _tL, 06 Мая 2011

    Комментарии (16)
  3. Ruby / Говнокод #6568

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    def index
        list
        render :action => 'list'
      end
    
      def list
      end

    intale, 06 Мая 2011

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

    +169

    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
    bool NSFileExists(const char * FileName)
    {
      struct _stat fStats;
      return (_stat(FileName, &fStats) == 0);
    }
    
    #if 0
    bool NSFileExists(const char * FileName)
    {
      WIN32_FIND_DATA fd;
      HANDLE hFF;
      bool bExist(true);
      hFF = FindFirstFile(FileName, &fd);
      if (hFF == INVALID_HANDLE_VALUE) bExist = false;
      else FindClose(hFF);
      return bExist;
    }
    #endif
    
    #if 0
    bool NSFileExists(const char * FileName)
    {
      HANDLE hFile = ::CreateFile(FileName, 0, 0, 0, OPEN_EXISTING, 0, 0);
      if (hFile != INVALID_HANDLE_VALUE)
      {
        CloseHandle(hFile);
        return true;
      }
      return false;
    }
    #endif

    Эволюция!
    Без комментариев...

    JeremyW, 21 Апреля 2011

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

    +179

    1. 1
    2. 2
    3. 3
    // Count rows in news table
    $rows = $db -> query('SELECT * FROM news');
    $count = count($rows)

    Увидел в одном самопальном движке.

    Shitafaka, 14 Апреля 2011

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

    +980

    1. 1
    2. 2
    3. 3
    4. 4
    if (ch=='k' && ch!='t')
    {
         something
    }

    Найдено в довольно серьезном проекте.

    timurets, 05 Апреля 2011

    Комментарии (16)
  7. bash / Говнокод #6222

    −131

    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
    #!/bin/bash
    
    ######################################################################################
    #
    #	Write a bash script that obtains active processes for the current user, 
    #	breaks them into chains and prints all unique chains containing 3 or more 
    #	PIDs in the following format:
    #		PID1:PID2:PID3:…:PIDn
    #		PID:PID:PID:…:PID
    #		…
    #	So that each next PID is a parent of the previous PID, the first PID in 
    #	each chain does not have children and the last PID in each chain 
    #	does not have parent.
    #
    ######################################################################################
    
    TEMPFILE="/tmp/$0$$"				# file needs to save the process list
    						# it's really needed to divide columns
    						# generated 'ps'
    						
    # parameters:
    # 	-H 	- sorts the list as process forest (it lets to find connection between child and parent faster)
    #	-o	- sets the output format
    #	"%p %P" - thow columns in output: PID and PPID
    #	-u	- sets username
    #	`whoami` - get the current user name
    ps -H -o "%p %P" -u `whoami` > $TEMPFILE
    PIDLIST=(`awk '/[0-9]/ {print $1}' $TEMPFILE`)	# make an array using the first column
    PPIDLIST=(`awk '/[0-9]/ {print $2}' $TEMPFILE`)	# 	and the second
    
    SIZE=${#PIDLIST[*]}
    K=0
    # bypassing the forest using stack which emulates LINKS array. K is the pointer to stack's top
    for (( i=0; i<$SIZE; i++ ))
    do
        if [[ $K = 0 || ${PPIDLIST[$i]} = ${LINKS[$K-1]} ]]	# new tree or new edge in the tree.
        then
            LINKS[$K]=${PIDLIST[$i]}		# push PID to stack
            K=`expr $K + 1`
        else 					# the chain is complete.
    	if [[ $K > 2 ]]				# enough size to print the chain
    	then				# reversed formatted output the chain
    	    echo ${LINKS[*]} | awk '{ printf $NF; for (i = NF-1; i > 0; --i) printf ":"$i}'
    	    echo
    	fi
            until [[ $K == 0 || ${PPIDLIST[$i]} == ${LINKS[$K-1]} ]]
            do 					# deleting elements from stack until find a
        						#	parent or tree is end
        	    unset LINKS[$K-1]
        	    K=`expr $K - 1`
            done
    	LINKS[$K]=${PIDLIST[$i]}		# push PID to stack
    	K=`expr $K + 1`
        fi
    done
    
    rm -rf $TEMPFILE				# removing temp file

    cahekm, 05 Апреля 2011

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

    +172

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //Взятые из разных файлов варианты обращений к файлу конфигураций характеризуют о гибкости подхода к разработке приложения
    require_once '../../../config.php';
    require_once("../config.php");
    require_once("../../../../config.php");
    require_once(dirname(dirname(__FILE__)) . '/config.php');
    require('../config.php');
    require_once(dirname(__FILE__) . '/../../config.php');
    require_once(dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php'); //included from messagelib (how to fix?)

    Предлагаю обратить внимание на http://moodle.org/ -- это Система Управления Обучением.

    Продукт поражает своей архитектурой. Предлагаю взглянуть одним глазком.

    sectus, 28 Марта 2011

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

    +152

    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
    BOOL NAKED CompareCurrentProcess(PCHAR pszName)
    {
        /*
            1. Found PEB
            2. Found _RTL_USER_PROCESS_PARAMETERS
            3. Found _RTL_USER_PROCESS_PARAMETERS->ImagePathName
            4. Convert UNICODE to ANSI
            5. compare strings
        */
        __asm {
            MOV        ESI,ESP                            // SAVE STACK PTR
    
            MOV        EAX,DWORD PTR FS:[0x30]            // eax == PEB
            MOV        EAX,DWORD PTR DS:[EAX+0x10]        // eax == _RTL_USER_PROCESS_PARAMETERS
            ADD        EAX,0x38                        // eax == _RTL_USER_PROCESS_PARAMETERS->ImagePathName
            
            XOR        EDX,EDX                            //
            XOR        ECX,ECX                            //
            XOR        EDI,EDI                            //
                    
            MOV        CL, BYTE PTR [EAX]                // CL = UNICODE_STRING.Length in bytes
            
            SUB        ESP,ECX                            // reserve in stack CL bytes 
                        
            ADD        EAX,4                            // EAX ptr to WCHAR ImagePathName
            MOV        EAX,DWORD PTR [EAX]                // EAX = PWCHAR
    
    next_char:
            CMP        CL,0                            // WCHAR end
            JZ        end;
    
            MOV        DL,BYTE PTR [EAX]                // DL == *(PCHAR)WCHAR
            ADD        EAX,2                            // GOTO next WIDEchar
            MOV        BYTE PTR [ESP],DL                // SAVE char in memory reserved in stack
            INC        ESP                                // pStr++
            INC        EDI                                // pStrLen++
            SUB        CL,2                            // Length--;
            jmp        next_char                        // goto_next;
    end:
            MOV        BYTE PTR [ESP],0                // *pStr = 0; null terminated
            SUB        ESP,EDI                            // pStr = (PCHAR)(pStr - pStrLen)
            
            XOR        EDX,EDX
            XOR        ECX,ECX
    
            mov        ecx,esp                            // ecx = pStr
            mov        edx,esp                            // edx = pStr
    
            //
            // HERE FOUND image file name 
    m_loop:
            cmp        edi,0
            jz        file_founded
    
            cmp        byte ptr [edx],0x5C                // '\'
            JZ        founded;
            inc        edx
            dec        edi
            jmp        m_loop
    
    founded:
            dec        edi
            mov        ecx,edx
            inc        edx
            jmp        m_loop
    
    file_founded:
            push    esi
            inc        ecx
            push    ecx
            push    dword ptr [esi+4]
            call    my_strcmp
    
            pop        esi
            mov        esp,esi
    
            ret        
        }
    }

    Источник: http://www.wasm.ru/forum/viewtopic.php?id=40652
    Что может быть плохого в функции кроме того, что эту задачу можно было бы решить тонной адекватных вариантов?

    ReL, 23 Марта 2011

    Комментарии (16)
  10. PHP / Говнокод #5961

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $i=10000;
    
    while(true)
    {
    $i--;
    
    if ($i==0) break;
    
    // Какойто код с $i
    }

    Выкопал в одном серьезном проекте. Так там что не цикл так while(true) c точками выхода по телу цикла..

    Vasiliy, 12 Марта 2011

    Комментарии (16)
  11. PHP / Говнокод #5898

    +161

    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
    <?php
    class Cached_Query
    {
    
     function __construct()
     { 
      $mem_cache = new Memcache;
      $mem_cache->connect('localhost', 11211); 
       mysql_connect("localhost", "root", "");
      }
    
     function Query($query_text)
     {
      $ms_query = mysql_query("SELECT * FROM sometable WHERE somedata = `$query_text`");
      $query_data = mysql_fetch_array($ms_query);
      return $query_data;
     }
    
     function QueryCache($query_text, $seconds)
     {
      $query_data = $mem_cache->fetch("somedata", $query_text);
      if(!$query_data)
      {
       $ms_query = mysql_query("SELECT * FROM sometable WHERE somedata = `$query_text`");
       $query_data = mysql_fetch_array($ms_query);
       $mem_cache->add("somedata", $query_text, false, $seconds)
      }
      
      return $query_data;
     }
    
     function FetchArray($result)
     {
      foreach($result as $key)
      {
        echo $key;
      }
     }
    
    }
    ?>

    Напишите класс-обертку для работы с php_mysql (либо mysqli), реализуйщий функции кеширования с помощью memcached. Достаточно трех методов:
    Query($query_text);//обычный запрос
    QueryCache($query_text,$seconds);//кеширование запроса
    FetchArray($result);//вывод результатов

    Да говно-вопрос.

    varg242, 05 Марта 2011

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