1. JavaScript / Говнокод #3396

    +180

    1. 1
    /^[a|b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|@|\.|-]*$/gim

    Проверка валидности E-Mail от местного умельца.

    eval, 04 Июня 2010

    Комментарии (12)
  2. Java / Говнокод #3395

    +74

    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 StreamToBytes()throws Exception
        {
            int i;
            InputStream in=getStream();
            ArrayList<Integer> byt=new ArrayList<Integer>();
            while((i=in.read())!=-1)
            {
                byt.add(i);
            }
            in.close();
            b=new byte[byt.size()];
            for(int j=0;j<b.length;j++)
            {
                b[j]=byt.get(j).byteValue();
            }
        }

    хуита, 04 Июня 2010

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

    −92

    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
    def get_next_line(max_level, current_level, current_line_items)
            next_line_items = []
            result_string = ''
    
            if current_level == 1
                    next_line_items.push(1)
                    result_string = "1\n"
            else
                    current_line_number = false
                    current_line_number_count = 0
                    current_index = 0
    
                    current_line_items.each do |line_number|
                            if current_index == 0
                                    current_line_number = line_number
                                    current_line_number_count = 1
                            else
                                    if line_number == current_line_number
                                            current_line_number_count = current_line_number_count + 1
                                    else
                                            next_line_items.push(current_line_number_count)
                                            next_line_items.push(current_line_number)
    
                                            current_line_number_count = 1
                                            current_line_number = line_number
                                    end
                            end
    
                            if current_index >= current_line_items.length - 1
                                    next_line_items.push(current_line_number_count)
                                    next_line_items.push(current_line_number)
                            end
    
                            current_index = current_index + 1
                    end
    
                    result_string = next_line_items.join(' ') + "\n"
            end
    
            if current_level < max_level
                    result_string = result_string + get_next_line(max_level, current_level + 1, next_line_items).to_s
            end
    
            # return result
            result_string
    end
    
    puts 'Input max level:'
    level = gets
    
    puts ''
    puts get_next_line(level.to_i, 1, [])

    реальное тестовое задание кандитата.
    задача - вывести несколько членов последовательности
    1
    11
    21
    1211
    ....

    malleus, 04 Июня 2010

    Комментарии (63)
  4. JavaScript / Говнокод #3393

    +158

    1. 1
    2. 2
    3. 3
    if ($('#block').is(':hidden')) {
    $('#block').toggle();
    }

    eval, 04 Июня 2010

    Комментарии (22)
  5. Си / Говнокод #3392

    +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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    void init(void)
    {
    	int i,j;
    
    	setup();
    	if (!fork())
    		_exit(execve("/bin/update",NULL,NULL));
    	(void) open("/dev/tty0",O_RDWR,0);
    	(void) dup(0);
    	(void) dup(0);
    	printf("%d buffers = %d bytes buffer space\n\r",NR_BUFFERS,
    		NR_BUFFERS*BLOCK_SIZE);
    	printf(" Ok.\n\r");
    	if ((i=fork())<0)
    		printf("Fork failed in init\r\n");
    	else if (!i) {
    		close(0);close(1);close(2);
    		setsid();
    		(void) open("/dev/tty0",O_RDWR,0);
    		(void) dup(0);
    		(void) dup(0);
    		_exit(execve("/bin/sh",argv,envp));
    	}
    	j=wait(&i);
    	printf("child %d died with code %04x\n",j,i);
    	sync();
    	_exit(0);	/* NOTE! _exit, not exit() */
    }

    Говно, вошедшее в историю.

    avaaron, 03 Июня 2010

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

    +73

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private static final double[][][] charsets = {{
      {1, 2, 3, 4},
     // 30 lines of a 3-dimentional array (4x9x3) declaration skipped
    }}
    
    // Later on
    double dx = charsets[order[n[0]][i - 1]][n[i]][j];

    Ну что тут еще скажешь... Legacy code forever!

    Koshiku, 03 Июня 2010

    Комментарии (1)
  7. SQL / Говнокод #3390

    −862

    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
    -- находим текущий месяц
    FOR rec IN 
    	SELECT date_part ('month', now()) as ma, date_part ('year', now()) as ya 
    LOOP
    	m1 = rec.ma-1;
    	IF m1=0 THEN m1=12; END IF;
    	Y1 = rec.ya;
    	IF m1=12 THEN Y1 = rec.ya - 1; END IF;
    END LOOP;
    
    FOR rec IN 
    	SELECT count(v.partner_id) as cnt  
    		FROM  v, a where v.id=a.id  and period like '%'||m1||'-'||Y1||' по%' and accepted = 1 and active=1 
    LOOP
    -- вырезано
    -- а десятком строк ниже
    -- находим предыдущие 3 месяца 
    m2 = m1 - 1;	
    IF  m2 = 0 THEN m2 = 12; END IF;
    IF m1<m2  THEN Y2 = Y1 - 1; ELSE Y2 = Y1; END IF;
    m3 = m2 - 1;
    IF m3 = 0 THEN m3 = 12; END IF;
    IF m2<m3 THEN Y3 = Y2 - 1; ELSE Y3 = Y2; END IF;
    m4 = m3 - 1;
    IF  m4 = 0 THEN m4 = 12; END IF;
    IF m3<m4 THEN Y4 = Y3 - 1; ELSE Y4 = Y3; END IF;

    из кода доставшегося по наследству.
    вот так вот видимо модно проводить поиск по дате
    комментерии добавлены при выкладывании сюда

    qnikst, 03 Июня 2010

    Комментарии (0)
  8. Java / Говнокод #3389

    +68

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    def InvoicedExtra(JobExtra extra) {
       type = extra.type
       clientPrice = extra.price ?: ZERO
       vatPrice = (extra.type.vatBand?.band ?: 0) * extra.price / 100
       grossPrice = vatPrice ?: ZERO + clientPrice ?: ZERO
    }

    Мой код на Groovy. Обратите внимание на строку 5. Это типа хитрый способ суммирования который не бросает NullPointerException. Однако не учтены приоритеты операторов. Оцените красоту выстрела в ногу =)

    tinhol, 03 Июня 2010

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

    +1001

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    struct Dir {
        Dir(const char* name) {
            d = opendir("/var/log");
        }
        ~Dir();
        const char* next();
        bool operator== (DIR* other);
    private:
        DIR* d;
    };
    ...
    Dir var_log("/var/log");

    evlad, 03 Июня 2010

    Комментарии (39)
  10. Си / Говнокод #3387

    +141

    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
    for (int x=0; x < TANK_SIZE; x++)
    
    	{
    
    		for (int y=0; y < TANK_SIZE; y++)
    
    		{
    
    			*((Uint32 *)(((Uint8 *)player_surface[DOWN]->pixels) + (TANK_SIZE - y - 1) * player_surface[DOWN]->pitch + (TANK_SIZE - x - 1) * player_surface[DOWN]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[LEFT]->pixels) + (TANK_SIZE - x - 1) * player_surface[LEFT]->pitch + y * player_surface[LEFT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[RIGHT]->pixels) + x * player_surface[RIGHT]->pitch + (TANK_SIZE - y - 1) * player_surface[RIGHT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[UP]->pixels) + y * player_surface[UP]->pitch + x * player_surface[UP]->format->BytesPerPixel));
    
    			*((Uint32 *)(((Uint8 *)enemy_surface[DOWN]->pixels) + (TANK_SIZE - y - 1) * enemy_surface[DOWN]->pitch + (TANK_SIZE - x - 1) * enemy_surface[DOWN]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[LEFT]->pixels) + (TANK_SIZE - x - 1) * enemy_surface[LEFT]->pitch + y * enemy_surface[LEFT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[RIGHT]->pixels) + x * enemy_surface[RIGHT]->pitch + (TANK_SIZE - y - 1) * enemy_surface[RIGHT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[UP]->pixels) + y * enemy_surface[UP]->pitch + x * enemy_surface[UP]->format->BytesPerPixel));
    
    			
    
    		}
    
    	}

    dageru, 03 Июня 2010

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