1. 1C / Говнокод #12748

    −121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Если Организация = Справочники.Организации.НайтиПоКоду("650532") Тогда	
    			Сумма2011 = 14271648;
    		ИначеЕсли Организация = Справочники.Организации.НайтиПоКоду("325316") Тогда
    			Сумма2011 = 1195741.30;
    		ИначеЕсли Организация = Справочники.Организации.НайтиПоКоду("670054") Тогда
    			Сумма2011 = 7782829;
    		ИначеЕсли Организация = Справочники.Организации.НайтиПоКоду("650533") Тогда
    			Сумма2011 = 72882366.11;

    Чем-то напоминает int rand() { return 4; };
    Тут не расстреливать, а живьем закапывать надо!

    mrbus, 14 Марта 2013

    Комментарии (8)
  2. C# / Говнокод #12747

    +106

    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
    /*FuckingMagic*/
    public static T[] GetT<T>(int _RepeatCount, Func<IExpression, T[]> _GetT, IExpression[] _Expressions) {
    	T[] __outbytes;
    	T[][] __tmp_bytes;
    	int __offset = 0, __tmp_sz = 0, __i = 0, __j = 0, __ex_l = _Expressions.Length;
    	__ex_l = _Expressions.Length;
    	__tmp_bytes = new T[__ex_l * _RepeatCount][];
    	for ( __j = 0; __j < _RepeatCount; __j++ )
    		for ( __i = 0; __i < __ex_l; __i++ )
    			__tmp_bytes[__j * __ex_l + __i] = _GetT(_Expressions[__i]);
    	__j = __tmp_bytes.Length;
    	for ( __i = 0; __i < __j; __tmp_sz += __tmp_bytes[__i].Length, __i++ ) ;
    	__outbytes = new T[__tmp_sz];
    	for ( __i = 0; __i < __j; __i++ ) {
    		__tmp_sz = __tmp_bytes[__i].Length;
    		Array.Copy(__tmp_bytes[__i], 0, __outbytes, __offset, __tmp_sz);
    		__tmp_bytes[__i] = null;
    		__offset += __tmp_sz;
    	}
    	return __outbytes;
    }

    С тех пор я всегда пишу код трезвым.

    kasthack, 14 Марта 2013

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

    +23

    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
    struct mystream: public std::ostream 
    {
        mystream(std::ostream & o): std::ostream(o.rdbuf()) {}
    
        template <class T>
        mystream & operator << (T const & arg)
        {
            if (enabled_) as_std_ostream() << arg;
            return *this;
        }
    
        // дерьмо STX
        mystream & operator << (std::ostream & (*f)(std::ostream &))
        {
            if (enabled_) as_std_ostream() << f;
            return *this;
        }
    
        mystream & operator << (std::ios & (*f)(std::ios &))
        {
            if (enabled_) as_std_ostream() << f;
            return *this;    
        }
    
        mystream & operator << (std::ios_base & (*f)(std::ios_base &))
        {
            if (enabled_) as_std_ostream() << f;
            return *this;
        }
        // дерьмо ETX
    
        void enable() { enabled_ = true; }
        void disable() { enabled_ = false; }
    
    protected:
        bool enabled_;
        std::ostream & as_std_ostream() { return *this; }
    };

    а так хотелось хоть сегодня рыбки поесть захерачить вместо трёх перегрузок
    template <class O>
    mystream & operator << (O & (*f)(O &)) { ...

    defecate-plusplus, 13 Марта 2013

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public double Supremum()
    {
    	HazardEstimation intensityEstimation = new IntensityEstimation(Sample, new EpanechnikovKernel(), SmoothingParameterMethod.Asymptotic);
    	var s = new List<double>(Sample.Size);
    	for (int i = 0; i < Sample.Size; i++)
    	s.Add(Math.Abs(intensityEstimation.NonParametricEstimation(Sample[i].Value) - rv.h(Sample[i].Value)));
    	return s.Max();
    }

    Дипломники не ищут легких путей

    zontar, 13 Марта 2013

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void free_transaction(p_transaction_t trans) {
      p_transaction_t next = trans->next;
      while (next) {
        trans->next = next->next;
        free_transaction(next);
        next = trans->next;
      }
      xfree(trans);
    }

    Освобождение списка.

    benderlog, 13 Марта 2013

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

    +159

    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
    $threadusers = $db->query_read("
      SELECT user.username, user.usergroupid, user.membergroupids,
       session.userid, session.inthread, session.lastactivity, session.badlocation,
       IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid,
       IF(user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ", 1, 0) AS invisible
      FROM " . TABLE_PREFIX . "session AS session
      LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
      WHERE  session.lastactivity > $datecut
     ");
    
    ...
    
    while ($loggedin = $db->fetch_array($threadusers))

    Я уже несколько раз писал о гениальности ребят которые пишут форум vBulletin. Продолжу эту традицию.
    Выше приведен огрызок кода, которым ребятки собирают список активных пользователей в текущей теме. Думаю тут все понятно, но все же объясню на примере того форума, где довелось увидеть это чудо. В таблице session около 7к записей, активных записей в среднем 4к. Т.е. на выходе мы имеем запрос, который кладет сервак при 64 гигах оперативы + последовательный перебор 4к записей для того что бы выбрать парочку юзеров, которые активны в этой теме.
    Ну в общем ребятки поставили себе прижизненный памятник, который я спешу предоставить на лицезрение сообщества.

    vagrand, 13 Марта 2013

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

    −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
    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
    declare @billing_types table(k int null, t varchar(14)
    	collate SQL_Latin1_General_CP1255_CI_AS)
    insert @billing_types 
    values (1, 'אשרי')
    	   ,(2, 'צ׳ק')
    	   ,(3, 'הוראת קבע')
    
    declare @standing_order_status table(i int null, s varchar(14)
    	collate SQL_Latin1_General_CP1255_CI_AS)
    insert @standing_order_status 
    values (4, 'מבותל')
    	   ,(3, 'לא מאושר')
    	   ,(2, 'ממתין')
    	   ,(1, 'מאושר')
    
    declare @fax varchar(20)
    
    select billing_company_id
          ,internal_company_name
    	  ,isnull(t, 'לא פעיל') collate SQL_Latin1_General_CP1255_CI_AS as payment_type_string
          ,case when company_email is null then ''
    			when replace((ltrim(rtrim(company_email))), '0', '') = '' then ''
    			-- some emails were imported in the way, they aren't valid
    			when charindex('@', company_email) = 0 then ''
    			else (ltrim(rtrim(company_email))) end as email
          ,case when replace(ltrim(rtrim(company_fax)), '0', '') = '' 
    			then ''
    	   		when -- some times there are words like "none", "n/a" etc. in there
    			replace(replace(replace(replace(replace(replace(replace(
    				replace(replace(replace(replace(ltrim(rtrim(company_fax)), '-', ''), 
    				'0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''),
    				'7', ''), '8', ''), '9', '') != '' 
    			then ''
    			else replace(ltrim(rtrim(company_fax)), '-', '')
    		end as c_fax
          ,ltrim(rtrim(company_address)) as c_address
          ,ltrim(rtrim(cast(company_comments as varchar(1000)))) as c_comments
          ,invoice_send_with_details
          ,invoice_send_fax
          ,invoice_print
          ,ltrim(rtrim(cc_name)) as c_name
          ,ltrim(rtrim(cc_number)) as c_number
          ,ltrim(rtrim(cc_cvv)) as c_cvv
          ,ltrim(rtrim(cc_id)) as c_id
          ,ltrim(rtrim(cc_expire)) as c_expire
          ,ltrim(rtrim(bank_number)) as number
          ,ltrim(rtrim(bank_branch)) as branch
          ,ltrim(rtrim(bank_account)) as account
          ,bank_hoshen
    	  ,isnull(s, 'אין') collate SQL_Latin1_General_CP1255_CI_AS as order_status
    from billing_companies
    left join @billing_types bt on bt.k = payment_type
    left join @standing_order_status os on os.i = bank_standing_order_status

    Война. Экспорт в Эксель, для того, чтобы потом ее обратно, но уже другим людям в базу передать.
    Из интересных подробностей. Поле "факс" в базе имеет тип varchar(50), например. Никакой серверной валидации отродясь не было. Иногда люди просто путали факс и электорпочту, когда заполняли данные.

    wvxvw, 13 Марта 2013

    Комментарии (15)
  8. Haskell / Говнокод #12738

    −95

    1. 1
    2. 2
    instance Show (a -> b)
    main = print (*)

    http://liveworkspace.org/code/17QAgf$23
    stderr:
    Stack space overflow: current size 8388608 bytes.
    Use `+RTS -Ksize -RTS' to increase it.

    Возможно это из-за того, что нет реализации show и я написать вменяемую не смогу. Как заставить Haskell сгенерировать для меня show?

    Хочется типа такого:

    {-# LANGUAGE OverlappingInstances, FlexibleInstances, UndecidableInstances, StandaloneDeriving, DeriveFunctor #-}
    deriving instance Show (a -> b)
    main = print (*)

    http://liveworkspace.org/code/17QAgf$21
    http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/deriving.html
    http://www.haskell.org/haskellwiki/GHC/Stand-alone_deriving_declarations

    HaskellGovno, 13 Марта 2013

    Комментарии (14)
  9. PHP / Говнокод #12737

    +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
    <html>
        <head>
        <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
        <head>
        <title>test</title>
        <script type="text/javascript">
        // Функция, осуществляющая AJAX запрос
        function loadXMLDoc(method, url) {
          if(window.XMLHttpRequest) {
            req = new XMLHttpRequest();
            req.onreadystatechange = processReqChange;
            req.open(method, url, true);
            req.send(null);
          } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
            req.onreadystatechange = processReqChange;
            req.open(method, url, true);
            req.send();
          }
        }
        // Функция, выполняемая при изменении статуса
        // запроса, если статус  равен 200, данные получены
        function processReqChange() {
          if(req.readyState == 4) {
         
            if(req.status == 200) {
              getNumber(req.responseText);
         
            } else {
              alert("There was a problem retrieving the XML data:\n" + req.statusText);
            }
          }
        }
        // Функция выполняется при клике по кнопке
        function process() {
         
           var v = document.getElementById("flag");
           var url = "ajax.php?flag=" + v.checked;
           loadXMLDoc( "get", url );
           setTimeout('process()', 1000);
        }
         
        // Функция записывает в элемент content значение, полученное от сервера
        function getNumber(text) {
          //для текстового поля
          var content = document.getElementById( "content" );
         content.value = text;
          //для div
         var content = document.getElementById( "content2" );
         content.innerHTML = text;
         
        }
         
        </script>
        </head>
        <body onload='process()'>
        <input type='checkbox' id='flag'>Флажок
        <input type='text' id='content'>
        <div id='content2'></div>
        </body>
        </html>
        .....................................................................................
         
        //файл ajax.php
        <?php
        if (isset($_GET['flag']))
        {
        if($_GET['flag']==='true') echo 'checked';
        else echo 'not checked';
        }
        ?>

    Как скопировать значение одного поля в другое.
    Очередное оригинальное решение от нашего старого знакомого, который не верит в существование говнокода и быдлокодеров.

    Stallman, 13 Марта 2013

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

    +28

    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
    class atoi_func
    {
    public:
        atoi_func(): value_() {}
    
        inline int value() const { return value_; }
    
        inline bool operator() (const char *str, size_t len)
        {
            value_ = 0;
            int sign = 1;
            if (str[0] == '-') { // handle negative
                sign = -1;
                ++str;
                --len;
            }
    
            switch (len) { // handle up to 10 digits, assume we're 32-bit
                case 10:    value_ += (str[len-10] - '0') * 1000000000;
                case  9:    value_ += (str[len- 9] - '0') * 100000000;
                case  8:    value_ += (str[len- 8] - '0') * 10000000;
                case  7:    value_ += (str[len- 7] - '0') * 1000000;
                case  6:    value_ += (str[len- 6] - '0') * 100000;
                case  5:    value_ += (str[len- 5] - '0') * 10000;
                case  4:    value_ += (str[len- 4] - '0') * 1000;
                case  3:    value_ += (str[len- 3] - '0') * 100;
                case  2:    value_ += (str[len- 2] - '0') * 10;
                case  1:    value_ += (str[len- 1] - '0');
                    value_ *= sign;
                    return value_ > 0;
                default:
                    return false;
            }
        }
    private:
        int value_;
    };

    standard atoi()
    79142 milliseconds

    class atoi_func
    131 milliseconds.

    Если приходится велосипедить стандартные функции, то это камень в огород С++. Видать кресты писали гении ассемблерной оптимизации.

    LispGovno, 13 Марта 2013

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