1. Perl / Говнокод #16634

    0

    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
    #!/usr/bin/perl
    use strict;
    sub ternary_switch {
    	my ($def,%exp) = @_;
    	my $result = $def;
    	for my $key (keys %exp) {
    		$result = '(' . $key . ')?(' . $exp{$key} . '):(' . $result . ')';
    	}
    	return $result;
    }
    my $def = ' (int)sum/0 /*assert*/ '; 
    my %exp = ( 
    	'quant==2' => ' round((sum)*pow(10.0,prec-1)*5.0)/pow(10.0,prec-1)/5.0 ',
    	'quant==5' => ' round((sum)*pow(10.0,prec-1)*2.0)/pow(10.0,prec-1)/2.0 ',
    	'quant==1' => ' round((sum)*pow(10.0,prec))/pow(10.0,prec) ',
    );
    my $result = ternary_switch($def,%exp);
    print $result . "\n";
    
    #define ROUND_QUANT(sum,prec,quant) (quant==5)?( round((sum)*pow(10.0,prec-1)*2.0)/pow(10.0,prec-1)/2.0 ):\
        ((quant==2)?( round((sum)*pow(10.0,prec-1)*5.0)/pow(10.0,prec-1)/5.0 ):\
        ((quant==1)?( round((sum)*pow(10.0,prec))/pow(10.0,prec) ):\
        ( (int)sum/0 /*assert*/ )))

    Округление с дробной точностью.
    Если бы я не прочитал на говнокоде что тернарники можно вкладывать, мне бы никогда это не пришло в голову

    overloop, 02 Сентября 2014

    Комментарии (0)
  2. Python / Говнокод #16633

    +1

    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
    def str_to_weight(val, format_str_max, format_str_min=None, separator=u",", long=3):
        """
        %fgr (full gr)  %cgr (cut gr) %kg
        example
        >>> str_to_weight('0.120', u'%kg%fgr kg', u'%kg%fgr kg', ',', 3)
        u'0,120 kg'
        >>> str_to_weight('0.120', u'%kg%fgr kg', u'%fgr gr', ',', 3)
        u'120 gr'
        >>> str_to_weight('0.120', u'%kg%fgr kg', u'%cgr gr', ',', 3)
        u'12 gr'
        """
    
        if isinstance(val, basestring):
            try:
                num = float(val.replace(',', '.'))
            except ValueError:
                return None
        elif isinstance(val, float):
            num = val
        else:
            return None
    
        format_str = format_str_min if num < 1 and format_str_min else format_str_max
    
        kg = u'%.f' % int(num)
        fgr = re.sub(u'^\d+.', u'', (u'%.' + str(long) + u'f') % num)
        if num < 1:
            fgr = re.sub('^0+', '', fgr)
        cgr = re.sub(u'0+$', u'', fgr)
    
        if fgr and '%kg' in format_str:
            fgr = separator + fgr
    
        if cgr and '%kg' in format_str:
            cgr = separator + cgr
    
        return format_str.replace(u'%fgr', fgr).replace(u'%cgr', cgr).replace(u'%kg', kg)
    
    
    def create_ru_weight_patterns(weight):
        res = [
            str_to_weight(weight, u'^%kg%cgr.?кг|%kg%cgr.?л', u'^%fgr.?г|%fgr.?мл', separator=u'[\.|,]'),
            str_to_weight(weight, u'[ |\t|\n]%kg%cgr.?кг|%kg%cgr.?л', u'[ |\t|\n]%fgr.?г|%fgr.?мл', separator=u'[\.|,]'),
            str_to_weight(weight, u'%kg%cgr.?кг|%kg%cgr.?л', u'%fgr.?г|%fgr.?мл', separator=u'[\.|,]'),
            str_to_weight(weight, u'%kg%cgr.?кг|%kg%cgr.?л', separator=u'[\.|,]')
        ]
        return filter(lambda x: x, res)

    Чо айдишники, есть вес, я легко его найду в товаре
    Через месяц...

    kyzi007, 02 Сентября 2014

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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    //You can assign Values to the ASPNET RadioButton like this way:
    protected void Page_Load(object sender, EventArgs e)
     {
             RadioButton1.Attributes.Add("value", "ASPNET");
    } 
    
    //Then you can access the value this way:
    protected void Button1_Click(object sender, EventArgs e)
     {
             Response.Write(RadioButton1.Attributes["value"].ToString());
    }

    сегодня для меня стало новостью, что у высокоуровневого контрола asp.net web form RadioButton, который по сути рендерится в <input type="radio">, нет атрибута value.
    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton(v= vs.110).aspx да, его нет.
    но сначала я подумал, что все же может это я кривой и не туда смотрю, а потом нахожу велосипед, который предлагает MVP http://forums.asp.net/t/1379187.aspx?Why+does+an+ASP+NET+RadioBu tton+control+not+have+a+property+to+prog ramatically+set+the+value+attribute+

    Lokich, 02 Сентября 2014

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

    +5

    1. 1
    int len = dynamic_cast<GatewayRec *>(*Iter)->PrefixMatch(aliases, matchedalias, priority);

    gnugk

    bormand, 02 Сентября 2014

    Комментарии (23)
  5. C# / Говнокод #16630

    +1

    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
    private const double A = -695.0;
    
            private const double B = 1136.0;
    
            private const double C = 172018;
    через 10 строк:
     topPanel.SplitterDistance = (int)
                                                Math.Round(
                                                    (-A*ApplicationDispatcher.Current.ApplicationContainer.Size.Width - C)/B,
                                                    MidpointRounding.AwayFromZero) - 5;
    
    и дальше внутри , где-то через 200 строк
    
     topPanel.SplitterDistance = (int)
                                                Math.Round(
                                                    (-A * ApplicationDispatcher.Current.ApplicationContainer.Size.Width - C) / B,
                                                    MidpointRounding.AwayFromZero) - 5;
    больше нигде не используется

    zxxc, 01 Сентября 2014

    Комментарии (3)
  6. ActionScript / Говнокод #16629

    +4

    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
    public function getName():String
    {
    	if (sourceUrl && sourceUrl != "")
    	{
    		var urlArray:Array = sourceUrl.split("/");
    		if (urlArray.length > 0)
    		{
    			var fileName:String;
    			fileName= urlArray[urlArray.length - 1] as String;
    			return fileName.substr(0,13);
    		}
    	}
    	return "";
    }

    Удача сопутствует смелым!
    (Никакого очевидного повода к тому, чтобы в имени файла было какое-то определенное количество символов нет, я не знаю почему 13).

    wvxvw, 01 Сентября 2014

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

    0

    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
    foreach($PROP as $k1 => $val1)
    		{
    			if(is_array($val1))
    			{
    				foreach($val1 as $k2 => $val2)
    				{
    					$text_name = preg_replace("/([^a-z0-9])/is", "_", "PROP[".$k1."][".$k2."][VALUE][TEXT]");
    					if(array_key_exists($text_name, $_POST))
    					{
    						$type_name = preg_replace("/([^a-z0-9])/is", "_", "PROP[".$k1."][".$k2."][VALUE][TYPE]");
    						$PROP[$k1][$k2]["VALUE"] = array(
    							"TEXT" => $_POST[$text_name],
    							"TYPE" => $_POST[$type_name],
    						);
    					}
    				}
    			}
    		}
    
    		foreach($PROP as $k1 => $val1)
    		{
    			if(is_array($val1))
    			{
    				foreach($val1 as $k2 => $val2)
    				{
    					if(!is_array($val2))
    						$PROP[$k1][$k2] = array("VALUE" => $val2);
    				}
    			}
    		}

    bitrix

    как вам организация цикла(ов)

    memclutter, 01 Сентября 2014

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

    +3

    1. 1
    2. 2
    3. 3
    if( is_numeric((int)$_GET['id1']) && is_numeric((int)$_GET['id2']) && is_numeric((int)$_GET['id3']) ){
    
    }

    Капитан очевидность)

    sa-kirich, 01 Сентября 2014

    Комментарии (9)
  9. JavaScript / Говнокод #16626

    +4

    1. 1
    2. 2
    // poor man's semaphore
    while (self.fetching) {}

    http://backgridjs.com/ref/extensions/select2-cell.html

    someone, 01 Сентября 2014

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

    −5

    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
    package main
    
    import "fmt"
    
    type буква string
    
    var (
    	наТрубе буква
    )
    
    func сидели(а, б буква) буква {
    	return а + б
    }
    
    func aпропало(буква буква) буква {
    	return буква[1:]
    }
    
    func бупало(буква буква) буква {
    	return буква[:1]
    }
    
    func main() {
    	наТрубе = сидели(буква("а"), буква("б"))
    	наТрубе = aпропало(наТрубе)
    	наТрубе = бупало(наТрубе)
    	fmt.Printf("на трубе %s\n", наТрубе)
    }

    ya-ukurok, 01 Сентября 2014

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