1. Куча / Говнокод #12049

    +122

    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
    data IdPState a r = IdPEnd r | IdPNeedInput | IdPHaveInput a
    {-# INLINE_STREAM idP #-}
    idP :: (Monad m) => Stream l a a r m r
    idP = Stream next IdPNeedInput where
    	{-# INLINE_INNER next #-}
    	next (IdPEnd r) = Done r
    	next IdPNeedInput = NeedInput IdPHaveInput IdPEnd
    	next (IdPHaveInput a) = HaveOutput IdPNeedInput (return ()) a
    
    {-# INLINE_STREAM pipe #-}
    pipe :: Monad m => Stream l a b r0 m r1 -> Stream Void b c r1 m r2 -> Stream l a c r0 m r2
    pipe (Stream nextL sL) (Stream nextR sR) = Stream next (Right (return (), sL, Right sR)) where
    	{-# INLINE_INNER next #-}
    	next (Left r) = Done r
    	next (Right (final, sL, Right sR)) = case nextR sR of
    		Skip sR' -> Skip (Right (final, sL, Right sR'))
    		HaveOutput sR' c o -> HaveOutput (Right (final, sL, Right sR')) (c >> final) o
    		NeedInput p c -> Skip (Right (final, sL, Left (p, c)))
    		Done r -> PipeM (final >> return (Left r))
    		PipeM ms -> PipeM (liftM (Right . (final, sL,) . Right) ms)
    		Leftover _ i -> absurd i
    	next (Right (final, sL, Left (p, c))) = case nextL sL of
    		Skip sL' -> Skip (Right (final, sL', Left (p, c)))
    		HaveOutput sL' final' o -> Skip (Right (final', sL', Right (p o)))
    		NeedInput pL cL -> NeedInput (Right . (final,, Left (p, c)) . pL) (Right . (final,, Left (p, c)) . cL)
    		Done r -> Skip (Right (return (), sL, Right (c r)))
    		PipeM ms -> PipeM (liftM (Right . (final,, Left (p, c))) ms)
    		Leftover sL' i -> Leftover (Right (final, sL', Left (p, c))) i
    
    {-# INLINE_STREAM purePipe #-}
    purePipe :: (forall m . Monad m => Stream l a b r0 m r1) -> (forall m . Monad m => Stream Void b c r1 m r2) -> (forall m . Monad m => Stream l a c r0 m r2)
    purePipe (Stream nextL sL) (Stream nextR sR) = Stream next (sL, Right sR) where
    	{-# INLINE_INNER next #-}
    	next (sL, Right sR) = case nextR sR of
    		Skip sR' -> Skip (sL, Right sR')
    		HaveOutput sR' _ o -> HaveOutput (sL, Right sR') (return ()) o
    		NeedInput p c -> Skip (sL, Left (p, c))
    		Done r -> Done r
    		PipeM ms -> Skip (sL, Right (runIdentity ms))
    		Leftover _ i -> absurd i
    	next (sL, Left (p, c)) = case nextL sL of
    		Skip sL' -> Skip (sL', Left (p, c))
    		HaveOutput sL' _ o -> Skip (sL', Right (p o))
    		NeedInput pL cL -> NeedInput ((, Left (p, c)) . pL) ((, Left (p, c)) . cL)
    		Done r -> Skip (sL, Right (c r))
    		PipeM ms -> Skip (runIdentity ms, Left (p, c))
    		Leftover sL' i -> Leftover (sL', Left (p, c)) i

    qbasic, 03 Ноября 2012

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

    +100

    1. 1
    2. 2
    3. 3
    4. 4
    <form action="/cgi-bin/repare.mpl" method="post" enctype="multipart/form-data" class="frm">
    	<input type="hidden" name="sql" value="UPDATE  parcels p, parcels_doc d SET p.state = 'transporter_store' WHERE  d.doctype = 'confirm.L'  AND d.docid IN ($SORD)  AND p.good  IN ($ter)  AND d.docitem = p.good  AND p.state <> 'transporter_store'  AND d.parcel = p.id">
    	<input type="submit" class="butt" name="main_ok" value="Исправить">
    </form>

    Нашли тут в боевом проекте шедевральную SQL Injection "by design".

    aml, 01 Ноября 2012

    Комментарии (29)
  3. Куча / Говнокод #12041

    +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
    public Match(source:SourceLexemes, namedLinkDictionary:NamedLinkDictionary, settings:MatchSettings):MatchResult
    				def endMatchingBlockLexemesByType = settings._endMatchingBlockLexemesByType;
    				def endMatchingBlockLexemesByValue = settings._endMatchingBlockLexemesByValue;
    				assert([_beginOfMatchBlock, _endOfMatchBlock].ForAll(excludedItem => !endMatchingBlockLexemesByValue.Contains(excludedItem)));
    				def matchLexeme(amountOfEntryBlock=0, matchedLexemes=[], sourceTail=source)
    					|(0, _::_, _)                                                                    => Some(matchedLexemes, sourceTail)
    					|(_, _, lexeme_::_) when endMatchingBlockLexemesByType.Contains(lexeme_._type)   => None()
    					|(_, _, lexeme_::lexemes_)                                                       => 
    						match(lexeme_._value, amountOfEntryBlock)
    							|(value_, _) when endMatchingBlockLexemesByValue.Contains(value_)   => None()
    							|(_beginOfMatchBlock, _)                                            => matchLexeme(amountOfEntryBlock+1, lexeme_::matchedLexemes, lexemes_)
    							|(_endOfMatchBlock, 0)                                              => None()
    							|(_endOfMatchBlock, _)                                              => matchLexeme(amountOfEntryBlock-1, lexeme_::matchedLexemes, lexemes_)
    							|(_, 0)                                                             => None()
    							|(_, _)                                                             => matchLexeme(amountOfEntryBlock, lexeme_::matchedLexemes, lexemes_)
    							|_                                                                  => None()
    					|_                                                                               => None()
    				match(matchLexeme())
    					|None                                                    => MatchResult.Failure(source, namedLinkDictionary)
    					|Some((matchedLexemes_, unmatchedLexemesTail_))          => MatchResult.Success(unmatchedLexemesTail_, updateNamedLinkDictionary(matchedLexemes_, namedLinkDictionary))

    Вчера заглянул в свой код.
    Есть один язык, так вот в нем паттерн-матчинг задается на уровне сигнатур функций.
    В связи с тем, что я каждую ночь читал книгу по кулХацкелу, то то что там было написано - вьелось мне в подкоррку и я этого даже не заметил.
    По ночам когда читаешь что-то, оно проникает в незащищенное подсознание. Я даже не ожидал, что напишу такой код. Но я его написал и только опосля понял, что с кодом что-то не так.
    Беда пришла оттуда, откуда её не ждали.
    Ещё я больше не могу без таких функций, как id или ($) или (.) или стрелочка\рыбка. Меня все это конечно раздражает... Мне кажется, что меня держут в клетке и не дают пользоваться правильными функциями.
    Я всегда считал, что зашквар и профессиональная деформация может быть только от крестов.
    Похоже я очень сильно ошибался и поплатился за это.
    Что посоветуете?

    LispGovno, 01 Ноября 2012

    Комментарии (80)
  4. Куча / Говнокод #12036

    +124

    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
    Сайт ЦИК Украины, нынешние выборы народных депутатов. 
    http://cvk.gov.ua/vnd2012/wp300pt001f01=900.html
    Говно везде - html, css, дизайн, юзабилити. 
    
    Для начала цитаты из html-кода страницы. В шапке мы видим 
    заголовок "XHTML 1.0 Transitional", а в коде - конструкции 
    в стиле 90-х годов, например:
    
    <IMG src="img2012/bar-blue1.jpg" WIDTH=" 1" HEIGHT=20>
    
    <table class=t1 cellspacing=0><tr>
        <td width="50%" class="td2"><font class="f3"> © WWW ІАС "Вибори 
            народних депутатів України"
        <td align="right" class="td2"> 
    </table>
    
    <td class=td10 align=center><font color="maroon">2</font>
    <td class=td2><A class=a1 href="wp302pt001f01=900pf7171=52.html">
    політична партія Всеукраїнське об’єднання "Батьківщина"</A></td>
    
    В стилях тоже все в порядке, товарищи проявили 
    отличное знание спецификаций:
    ... height=14px; ...
    ... background-color: 666699; ...
    ... text-decoration: non ...
    ... background-color : none; ...
    ... valign: center; ...
    
    Про отсутствие смысла я даже не говорю. 
    Вот, например, такой перл:
    FONT.F1 {color: black; font-family:Arial;font-size: 14pt}

    Сайт ЦИК Украины. Не сомневаюсь, что ООО "НПП "Медирент"" и ООО "НПП "Проком" получили за свою работу сотни нефти.

    P.S. Плохо, что в самом говнокоде нельзя применять форматирование bb-тегами, для кучи было бы полезно.

    ZX_Spectrum, 31 Октября 2012

    Комментарии (17)
  5. Куча / Говнокод #12031

    +128

    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
    [Record] variant ItemPatternMatched: PatternMatchedBase, IPatternMatched
    			_matchByLexemeValue:option[string]
    			public Match(source:SourceLexemes, namedLinkDictionary:NamedLinkDictionary):MatchResult
    				match(source)
    					|[]               => MatchResult.EndOfLexemes(source, namedLinkDictionary)
    					|lexeme_::lexemes_=>    def updatedNamedLinkDictionary = updateNamedLinkDictionary(lexeme_::[], namedLinkDictionary);
    											def failure = MatchResult.Failure(source, namedLinkDictionary);
    											def success = MatchResult.Success(lexemes_, updatedNamedLinkDictionary);
    											match(_matchByLexemeValue)
    												|None | Some(lexemeValue_) when (lexemeValue_==lexeme_._value) =>											
    													match(this, lexeme_._type)
    														|(Symbol, SourceLexeme.Type.Symbol) | (Identificator, SourceLexeme.Type.Identificator) | (Number, SourceLexeme.Type.Number) => 
    															success
    														|_                                                                                                                          => 
    															failure
    												|_                                                             => 
    													failure
    			|Symbol
    			|Identificator
    			|Number

    Начальник, посмотрев на код, сказал, что NemerleGovno. Я не знаю, что ему ответить?

    LispGovno, 30 Октября 2012

    Комментарии (21)
  6. Куча / Говнокод #12021

    +133

    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
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {		
    	// ...skipped...
    });  
    </script>
    <!-- end script vert menu -->
    
    <!-- spoiler -->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"> </script>
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    // ...skipped...
    });
    </script>
    <!-- spoiler -->
    
    <!-- up-->
    <script language="JavaScript" type="text/javascript"
    src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
    </script><!--up-->
    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'></script>
    <script type="text/javascript" src="ajax.js"></script>
    <!-- gallery -->  
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>

    jQuery в организме не хватает?..

    telnet, 29 Октября 2012

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

    +104

    1. 1
    http://zapret-info.gov.ru/

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

    Vasiliy, 26 Октября 2012

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

    +142

    1. 1
    http://habrahabr.ru/post/155131/

    dos_, 25 Октября 2012

    Комментарии (19)
  9. Куча / Говнокод #12003

    +95

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    println    (13.0 to 14.0 by 0.1);
    println    (1.3 to  1.4 by 0.01);
    println    (7.0 to 8.2 by 0.3);
    
    //Output:
    NumericRange(13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14.0)
    NumericRange(1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39)
    java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
    	at java.math.BigDecimal.divide(BigDecimal.java:1616)

    Скала - говно. Вернее даже говнище. И это достойно отдельного поста.
    Консолька для запуска тут:
    http://www.simplyscala.com/

    3.14159265, 25 Октября 2012

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

    +129

    1. 1
    <input type="hidden" style="width:0px; height:0px;border:0px" name="eventtype" value="3" />

    shmaltorhbooks, 25 Октября 2012

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