1. Си / Говнокод #9363

    +132

    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
    #define COMMAND_MARKER		'\x1B'
    #define COMMAND_SET			'='
    #define COMMAND_XOR			'^'
    #define COMMAND_OR			'|'
    #define COMMAND_AND			'&'
    
    void usbWriteOut(uchar *data, int len)
    {
    	while(len--) {
    		uchar c = *data;
    		buf[0] = buf[1];
    		buf[1] = buf[2];
    		buf[2] = buf[3];
    		buf[3] = c;
    		
    		if(buf[0] == COMMAND_MARKER) {
    			uint8_t val = (hex2u(buf[2]) << 4) | hex2u(buf[3]);
    			if(buf[1] == COMMAND_SET) {
    				colorData = val;
    			}
    			else if(buf[1] == COMMAND_XOR) {
    				colorData ^= val;
    			}
    			else if(buf[1] == COMMAND_OR) {
    				colorData |= val;
    			}
    			else if(buf[1] == COMMAND_AND) {
    				colorData &= ~val;
    			}
    		}
    	}
    }

    Простой баг оказался крайне подлым!
    При тестировании девайса терминалкой и чепятании команды ручками, каждый символ уходил в отдельном пакете и создавалось впечатление, что всё работает.
    После чего девайс был собран с применением большого количества термоклея, так что исправление бага оказалось совершенно непростым занятием >_<

    odmin, 09 Февраля 2012

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

    +158

    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
    // Запрос выбрал из таблицы всё, далее цикл
    for($c=$from; $c<$n_objects+$from; $c++)  {
    // Название ключа улыбнуло - $products[$i]['IsNotAvalible']
    // формирует массив (оставлю самое интересное):
    
    // запрос в итерации для картинки текущего товара
    $foto_res = $this->connect->Query("SELECT FotoID FROM __cat_Foto WHERE ProductID='".$products[$i]['ID']."' AND Attribute='Index'");
    		if($this->connect->GetNRows()>0)
    		{
    // запрос в итерации для урлы картинки текущего товара
    			$i_src = $this->img->ImgLink($foto_res[0]['FotoID']);
    			$MATR['PRODUCTS'][$mi]['INDEX_FOTO_IMG']='<img src="'.$i_src.'" alt="'.$products[$i]['Name'].'" border="0" />';
    			$MATR['PRODUCTS'][$mi]['INDEX_FOTO_SRC']=$i_src;
    		}
    			
    // бьем наверняка, а вдруг еще картинки есть?			
    		$foto_res = $this->connect->Query("SELECT FotoID FROM __cat_Foto WHERE ProductID='".$products[$i]['ID']."' AND Attribute='Small'");
    		if($this->connect->GetNRows()>0)
    		{
    // ага, точно, картинка есть, надо достать урлу
    			$i_src = $this->img->ImgLink($foto_res[0]['FotoID']);
    			$MATR['PRODUCTS'][$mi]['SMALL_FOTO_IMG']='<img src="'.$i_src.'" alt="'.$products[$i]['Name'].'" border="0" />';
    			$MATR['PRODUCTS'][$mi]['SMALL_FOTO_SRC']=$i_src;
    		}
    		else $img_html ='';
    // ну давай еще разок, нам запросом меньше, запросом больше не принципиально уже
    		$foto_res = $this->connect->Query("SELECT FotoID FROM __cat_Foto WHERE ProductID='".$products[$i]['ID']."' AND Attribute='Large'");
    		if($this->connect->GetNRows()>0)
    		{
    // ну ты смотри, еще картинку нашло, давай ка урлу к ней достанем
    			$MATR['PRODUCTS'][$mi]['LARGE_FOTO_IMG']='<img src="'.$this->img->ImgLink($foto_res[0]['FotoID']).'" alt="'.$products[$i]['Name'].'" border="0" />';
    		} 
    		else $img_html ='';
    }

    И вот такая она ВСЯ, то что я привел, это только формирование блочка популярных товаров.
    Если вам понравится - буду веселить дальше, там еще мноого всего )))

    deep, 09 Февраля 2012

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

    +1014

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #ifndef _WIN32
        std::ostream  * dpOutputStream;
    #else
            ostream  * dpOutputStream;
    #endif

    делаем код портабельным.

    Dummy00001, 08 Февраля 2012

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

    +1003

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class fileOutStream : public ostream
    {
    public:
        /* ... */
        virtual inline int printf( const char * fpFormat, ... )
        {
            /* ... */
        }
        /* ... */
    }

    virtual inline метод.

    Dummy00001, 08 Февраля 2012

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

    +1004

    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
    class FuncFileOutStream: public fileOutStream
    {
    public:
    	/* ... */
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, bool b);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, char c);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, long l);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, int i);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, short s);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, const char* pc);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, float f);
    	friend FuncFileOutStream& operator<<(FuncFileOutStream& out, double d);
    	/* ... */
    };

    попытка перенаправления данных проходящих через ostream.

    только маленькая тонкость. fileOutStream уже перенакрывает ostream специально для этой цели - что бы собственный streambuf подставить, который данными проходящими через ostream и манипулирует используя два официальных виртуальных метода - вместо дюжины корявых операторов которые наверное и половины того что проект испульзует не покрывают. ну бляха муха поэтому же и сделали streambuf в стандарте, что бы вот таким маразмом не страдали...

    Dummy00001, 08 Февраля 2012

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

    +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
    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
    var wma0;
    wma0 = {
    0: "02:35 08/01/2012",
    1: "дайте скрипт подарки",
    id: 3,
    uid: 103,
    login: "gadget"
    }
    mess[0] = wma0;
    var wma0;
    wma0 = {
    pol: 0,
    last: 1325975830
    }
    u[0] = wma0;
    var wma1;
    wma1 = {
    0: "10:19 20/12/2011",
    1: "уххйййффыввы",
    id: 2,
    uid: 90,
    login: "kotofeyka"
    }
    mess[1] = wma1;
    var wma1;
    wma1 = {
    pol: 0,
    last: 1324361954
    }
    u[1] = wma1;

    json? Не, не слышал

    jQuery, 08 Февраля 2012

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

    +38

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $t='array(';
    	foreach ($info as $k=>$v){
    		$t.='"'.$k.'"=>"'.mysql_escape_string(htmlspecialchars($v)).'"';
    		if ($i<($cnt-1)) $t.=',';
    		$i++;
    	}
    	$t.=')';
    	if ($labelingid) sql ("UPDATE labeling SET info='$t' WHERE id='$labelingid'");

    Хрясь!

    brainstorm, 08 Февраля 2012

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

    +1007

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #if defined( HPUX_11_31 )
    #define BDYNAMIC_CAST( CLASS, OBJECT )  (( CLASS ) ( OBJECT ))
    #else
    #define BDYNAMIC_CAST( CLASS, OBJECT )  (dynamic_cast< CLASS >(( OBJECT )))
    #endif

    чуть кофе не похлебнулся.

    при более детальном рассмотрении кода из-за которого это сделали, выяснилось что: (А) в проекте нет ни одного места где нужен динамик каст и (Б) половина наших С++ профисианалов не умеют пользоватся конст кастом (который по коду там и был им нужен, вместе со статик кастом).

    Dummy00001, 08 Февраля 2012

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

    +971

    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
    using System;
    
    public class Man
    {
        static int num;
        public Man parent = new Man();    //У каждого человека есть родители, ведь так?
    
        static Man()
        {
            num = 0;
        }
    
        public Man()
        {
            num++;
        }
    }

    Компилятор C# против перенаселения, вовремя выдаёт StackOverflowException, пока расплодиться не успели..

    vistefan, 08 Февраля 2012

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

    +115

    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
    switch (pList)
                    {
                        #region Формы контейнера        |
                        case TObjects.ContainerForm         :
                            frmList                                         =   new TfrmContainerForm();
                            pnlMain                                         =   ((TfrmContainerForm)frmList).pnlMain;
                            Result                                          =   ((TfrmContainerForm)frmList).grList;
                            break;
                        #endregion
                        #region Тип контейнера          |
                        case TObjects.ContainerType         :
                            frmList                                         =   new TfrmContainerType();
                            pnlMain                                         =   ((TfrmContainerType)frmList).pnlMain;
                            Result                                          =   ((TfrmContainerType)frmList).grList;
                            break;
                        #endregion
                        #region Объект НВАЭС            |
                        case TObjects.Object                :
                            frmList                                         =   new TfrmObjects();
                            pnlMain                                         =   ((TfrmObjects)frmList).pnlMain;
                            Result                                          =   ((TfrmObjects)frmList).grList;
                            break;
                        #endregion
                        #region Исполнитель работ       |
                        case TObjects.DepSource             :
                            frmList                                         =   new TfrmDepSource();
                            pnlMain                                         =   ((TfrmDepSource)frmList).pnlMain;
                            Result                                          =   ((TfrmDepSource)frmList).grList;
                            break;
                        #endregion
                        #region Установка переработки   |
                        case TObjects.TreatSet              :
                            frmList                                         =   new TfrmTreatSet();
                            pnlMain                                         =   ((TfrmTreatSet)frmList).pnlMain;
                            Result                                          =   ((TfrmTreatSet)frmList).grList;
                            break;
                        #endregion
                        #region Контейнер               |
                        case TObjects.Container             :
                            frmList                                         =   new TfrmContainer();
                            pnlMain                                         =   ((TfrmContainer)frmList).pnlMain;
                            Result                                          =   ((TfrmContainer)frmList).grList;
                            break;
                        #endregion
                        #region Хранилище               |
                        case TObjects.Storage               :
                            frmList                                         =   new TfrmStorage();
                            pnlMain                                         =   ((TfrmStorage)frmList).pnlMain;
                            Result                                          =   ((TfrmStorage)frmList).grList;
                            break;
                        #endregion
    ...

    А тут ок. 400 таких вот строк.

    gcoder, 08 Февраля 2012

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