1. Список говнокодов пользователя Elvenfighter

    Всего: 116

  2. Perl / Говнокод #14107

    −155

    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
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Data::Dumper;
    
    sub mymap(&@) {
        my ($code, @result) = shift;
    
        push @result, $code->() for (@_);
    
        return @result;
    }
    
    sub doit_map {
        return {
            some_key => [
                map { return $_; } qw(one)
            ]
        };
    }
    
    sub doit_mymap {
        return {
            some_key => [
                mymap { return $_; } qw(one)
            ]
        };
    }
    
    print Dumper({
        doit_mymap => doit_mymap,
        doit_map => doit_map,
    });

    Реализация mymap, конечно, заслуживает отдельного треда. But leave it... for time being.

    Вся соль в различии возвращаемых значений. В доке конечно описано почему оно так: http://perldoc.perl.org/functions/map.html. Но негативный осадок всё-же остался.

    http://ideone.com/q1HFDW

    Elvenfighter, 19 Ноября 2013

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

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    cat /dev/zero | 
    while true ; do
        sleep 1
    done &

    http://habrahabr.ru/qa/8295/

    Элегантный способ заменить 0>&-

    Elvenfighter, 04 Сентября 2013

    Комментарии (10)
  4. Perl / Говнокод #13648

    −167

    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
    use strict;
    use warnings;
     
    my $bottom = sub {
        my $test = shift // 'undef';
        print "bottom( $test )\n";
    };
     
    sub sub_bottom {
        my $test = shift // 'undef';
        print "sub_bottom( $test )\n";
    }
     
    sub fallthrough {
        &$bottom;
    }
     
    sub not_fallthrough {
        &$bottom();
    }
     
    sub not_fallthrough2 {
        sub_bottom;
    }
     
    fallthrough('Fallen1');
    not_fallthrough('Fallen2');
    not_fallthrough2('Fallen3');

    Долго пытался понять как до сабины доходят аргументы, хоть она вызывается без них. Обнаружил вот это. OH SHI~
    Вывод:

    bottom( Fallen1 )
    bottom( undef )
    sub_bottom( undef )

    http://ideone.com/QXT3HJ

    Elvenfighter, 23 Августа 2013

    Комментарии (43)
  5. Perl / Говнокод #13612

    −109

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    my $list       = [];
    while ( my $r = $st->fetchrow_hashref ) {
         # ...
    
         my @desc_periods = sort { $b <=> $a } keys %{ $r->{bp_periods} };
         $num_p = ( $#desc_periods + 1 ) or 1;
     
         $list->{$num_p} = $r;
    }

    Суть ГК в строчке 6. Картина маслом: "Я у мамы хакир".

    Elvenfighter, 15 Августа 2013

    Комментарии (2)
  6. Perl / Говнокод #13520

    −119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    use strict;
    use warnings;
     
    my ($i, $j) = (42, 13);
     
    my $max = [ $i => $j ]->[ $i <= $j ];
     
    print "max: $max\n";

    Вот-так вот: http://ideone.com/2Rd3Mr

    // Вроди где-то в PBP этот пример даже есть

    Elvenfighter, 31 Июля 2013

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

    −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
    def getBoundTextRangeSL(leftBoundary, rightBoundary, pos, doc):
        ''' Get the range between any symbol specified in leftBoundary set and rightBoundary
    
            Search starts from given cursor position...
    
            NOTE `SL' suffix means Single Line -- i.e. when search, do not cross one line boundaries!
        '''
        if not doc.lineLength(pos.line()):
            return KTextEditor.Range(pos, pos)
    
        lineStr = doc.line(pos.line())                          # Get the current line as string to analyse
        found = False
        cc = pos.column()                                       # (pre)initialize 'current column'
        # NOTE If cursor positioned at the end of a line, column()
        # will be equal to the line length and lineStr[cc] will
        # fail... So it must be handled before the `for' loop...
        # And BTW, going to the line begin will start from a
        # previous position -- it is why 'pos.column() - 1'
        initialPos = min(len(lineStr) - 1, pos.column() - 1)    # Let initial index be less than line length
        for cc in range(initialPos, -1, -1):                    # Moving towards the line start
            found = lineStr[cc] in leftBoundary                 # Check the current char for left boundary terminators
            if found:
                break                                           # Break the loop if found smth
    
        startPos = KTextEditor.Cursor(pos.line(), cc + int(found))
    
        cc = pos.column()                                       # Reset 'current column'
        for cc in range(pos.column(), len(lineStr)):            # Moving towards the line end
            if lineStr[cc] in rightBoundary:                    # Check the current char for right boundary terminators
                break                                           # Break the loop if found smth
    
        endPos = KTextEditor.Cursor(pos.line(), cc)
    
        return KTextEditor.Range(startPos, endPos)

    [color=blue]http://patches.fedorapeople.org/pate-docs/_modules/libkatepate/common.html#getBoundTextRangeSL[color]

    Elvenfighter, 26 Июля 2013

    Комментарии (7)
  8. Perl / Говнокод #13449

    −165

    1. 1
    if ( $method{'out_format'} && $method{'out_format'} eq lc(q{json}) ) {

    Yo dawg, we heard that you like lowercase, so we put some lowercase into your lowercase

    Elvenfighter, 18 Июля 2013

    Комментарии (25)
  9. Perl / Говнокод #13311

    −165

    1. 1
    2. 2
    3. 3
    my $parent_key=$$hash{parent_key};
    delete $$hash{parent_key};
    $parent_key = '' if ! $parent_key;

    my $parent_key = delete $hash->{parent_key} || '';

    Elvenfighter, 05 Июля 2013

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

    +119

    1. 1
    border-color: #dadada #ebebeb #ebebeb #dadada;

    CSS. Встречено в проекте, разработчики с пост-совка :)

    Elvenfighter, 04 Июля 2013

    Комментарии (5)
  11. JavaScript / Говнокод #13155

    +150

    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
    //
        getMode: function(nMode) {
            switch (nMode) {
                case this.MODES.LEFT_BOOKEND:
                    return this.aModes[nMode];
                case this.MODES.RIGHT_BOOKEND:
                    return this.aModes[nMode];
                case this.MODES.BOTH_BOOKENDS:
                    return this.aModes[nMode];
                case this.MODES.NONE:
                default:
                    return this.aModes[this.MODES.NONE];
            }
        },

    Наверное уже боян, но вот же он, опять!

    https://github.com/scirelli/ExtjsBreadCrumbs/blob/master/js/ux/breadCrumbs.js

    Elvenfighter, 11 Июня 2013

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