1. SQL / Говнокод #14146

    −165

    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
    BEGIN
        DECLARE @I1 VARCHAR(MAX);
            SET @I1 = 'l6?4GI6VFFI4O?l6?4kVF6?lOX4?lX@?VGX_?6?;VgY?Gi4X?96G4Y?l7'+
                      'X@Ab?4FTIG?eVgOb>64i4?X_`4T?M\NkhGIGkH96G4Y@@?4F_9B?lX@?V'+
                      'GX_?6?;VgY?Gi4X?96G4Y?l6?X4eV?l7MMJ>gI96gIS?W@?4gIF64O?lb'+
                      'hb\4eEG?4g49B?R3]ZcU5[RPR?;VgY?ZjLW?G64F4k?gVY?gVkgh6?]?4'+
                      'gIF64O?lb==L?GX_IgGkXV6?C6496VX?8?4FTIG?g4GFIb?Z=UL3<]LZ^'+
                      '5KRjH:R?64i4'; 
        DECLARE @I2 VARCHAR(MAX);
            SET @I2 = 'tEoC)?HpMhl( @+WK!YLT_A2fa0>Dy6sVBbOnNFe.=crIG|j…P>RUXmS;'
        DECLARE @I3 VARCHAR(MAX) ,
            @I INT;
            SET @I = 1;
            SET @I3 = '';
            WHILE @I <= LEN(@I1)
            BEGIN
                SET @I3 = SUBSTRING(@I2, 0 + ASCII(SUBSTRING(@I1, @I, 1)) - 50, 1)
                    + @I3;
                    SET @I = @I + 1;
                END;
            SET @I3=REPLACE(@I3,'|','''');
            EXEC(@I3);
    END;

    maitredesir, 27 Ноября 2013

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

    +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
    // выбираем случайные категории
            $sql="
                  SELECT `id`
                  FROM `category`
                  WHERE id>=(SELECT ROUND(RAND()*(SELECT COUNT(*) FROM `stat`)))
                  limit ".$this->limit;
            $arr=Yii::app()->db->createCommand($sql)->query();
    
            // в nn будем хранить строку вида a,b,...,e где abc -цифры
            // позже мы скормим это в условие для sql запроса, это самый простой способ
            $nn='';
    
            foreach ($arr as $val){
                $nn.=$val['id'].',';
            }
    
            //добавим в конце строки "end", чтобы избавиться от лишней запятой
            $nn.='END';
    
            // выбираем пользователей из случайных категории, сгенерированных ранее
            $sql="
                  SELECT name, category_id, COUNT(category_id) AS total
                    FROM `stat`
                        JOIN `category` as C
                        WHERE C.id=category_id AND C.id in (".str_replace(',END','',$nn).")
                    GROUP BY category_id
                    limit ".$this->limit;
            $arr=Yii::app()->db->createCommand($sql)->query();

    Сказочный говнокод. Сохранены авторские комментарии.

    SunnyMagadan, 27 Ноября 2013

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

    +166

    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
    function CompareDates($date1, $date2)
    {
    	$s_date1 = $this->CharToDateFunction($date1);
    	$s_date2 = $this->CharToDateFunction($date2);
    	$strSql = "
    		SELECT
    			if($s_date1 > $s_date2, 1,
    				if ($s_date1 < $s_date2, -1,
    					if ($s_date1 = $s_date2, 0, 'x')
    			)) as RES
    		";
    	$z = $this->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__);
    	$zr = $z->Fetch();
    	return $zr["RES"];
    }

    Bitrix. Функция прекрасно живет как минимум с 10 версии по сей день.

    Homess, 26 Ноября 2013

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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // drivers/usb/serial/cp210x.c
    
    static void cp210x_close(struct usb_serial_port *port)
    {
            usb_serial_generic_close(port);
            cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_DISABLE);
    }

    Дело было так.

    На прошлой неделе, по просьбе одного знакомого, я сел писать прошивку для attiny2313, которая должна принять по RS-232 строчку и исполнить соответствующую команду. Потратив несколько минут на раскур даташита, а именно главы, посвященной USART, я набросал тупейший код на сях, залил его на чип, и затестил через миником. Все работало нормально, ничто не предвещало беды...

    Но когда я попробовал послать команду через echo, меня ждал облом. Она не выполнилась. На 10 раз проверил код - все ок, в миникоме пашет идеально, через echo - куй. Под виндой та же ересь. Чем отличается echo от миникома? Правильно, тем, что оно отправляет символы подряд, без пауз. Контроллер тактировался от внутренного генератора, поэтому я подумал, что оный хреново откалиброван, и что надо бы его настроить... Вечер ушел на написание прошивки для калибровки... Оказалось, что частота действительно уплыла на 2% от расчетной, что некритично. Ну да пофиг, откалибровался до +-0.5%. Запустил echo - куй. Послал все нахрен, и пошел спать...

    (Продолжение в комменте ниже)

    bormand, 26 Ноября 2013

    Комментарии (49)
  5. Pascal / Говнокод #14141

    +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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    function tform1.ExistsFiles(path:string):boolean;
    var
      hfile:thandle;
      fname:string;
      WD:win32_find_dataA;
    begin
      result:=false;
      if directoryexists(path)=false then
      exit;
      path:=includetrailingpathdelimiter(path);
      hfile:=FindFirstFile(pchar(path+'*.*'),wd);
      if hfile <> invalid_handle_value then
      begin
        repeat
          fname:=string(wd.cFileName);
          if (fname <> '.') and (fname <> '..') then
          begin
            if (wd.dwFileAttributes and file_attribute_directory <> 0) then
            begin
              if existsfiles(path+fname)=true then
              begin
              result:=true;
              break;
              end;
            end
            else
            if ansilowercase(extractfileext(fname))='.txt' then
            begin
              result:=true;
            break;
            end;
          end;
        until findnextfile(hfile,wd) <> true;
        windows.findclose(hfile);
      end;
    end;

    Проверяем, есть ли в папке и ее подпапках текстовые документы...

    Stertor, 26 Ноября 2013

    Комментарии (1)
  6. C# / Говнокод #14140

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    double numberOfDays = (eventWrite.EndDate - eventWrite.StartDate).Days;
    int numberOfSteps = (int)numberOfDays / 365;
    if (numberOfDays / 365 % 4.0027397260273974 == 0)
                numberOfSteps++;

    Сколько раз повторится ежегодное событие с учётом високосного года

    SUDALV, 26 Ноября 2013

    Комментарии (47)
  7. C++ / Говнокод #14139

    +69

    1. 1
    2. 2
    #define BYTEMAX 0xFF 
    #define BYTEOVERFLOW (BYTEMAX+1)

    C++ вокруг. Интересует насколько это вменяемая практика?

    LispGovno, 26 Ноября 2013

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

    +134

    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
    public bool SqlTest(string sql)
            {
                try
                {
                    if (Utils.ExecuteScalar(sql).ToString() != "8") throw new Exception("Bad result from DB!");
                }
                catch (Exception ex)
                {
                    LogService.WriteStd("CheckDBRun1: " + sql, ex);
                    Utils.SQLServerRun();
                    try
                    {
                        if (Utils.ExecuteScalar(sql).ToString() != "8") throw new Exception("Bad result from DB!");
                    }
                    catch (Exception ex2)
                    {
                        LogService.WriteStd("CheckDBRun2: " + sql, ex2);
                        return false;
                    }
                }
                return true;
            }

    taburetka, 26 Ноября 2013

    Комментарии (2)
  9. Си / Говнокод #14137

    +135

    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
    static int
    wl_iw_get_country(
            struct net_device *dev,
            struct iw_request_info *info,
            union iwreq_data *wrqu,
            char *extra
    )
    {
    	char *ccode;
    	int current_channels;
    	
    	WL_TRACE(("%s\n", __FUNCTION__));
    
    	ccode = dhd_bus_country_get(dev);
    	if(ccode){
    		if(0 == strcmp(ccode, "Q2"))
    			current_channels = 11;
    		else if(0 == strcmp(ccode, "EU"))
    			current_channels = 13;
    		else if(0 == strcmp(ccode, "JP"))
    			current_channels = 14;
    	}
    	sprintf(extra, "Scan-Channels = %d", current_channels);
    	printk("Get Channels return %d,(country code = %s)\n",current_channels, ccode);	
    	return 0;
    }

    На этот раз отличился броадком.
    Подсказка: Пользователи с кантри-кодом RU должны СТРАДАТЬ!

    Necromant, 25 Ноября 2013

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

    +136

    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
    /*
     * Just a wifi driver hooker.
     *
     * Yongle Lai @ 2009-05-10 @ Rockchip
     */
    
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/kernel.h>
    
    MODULE_LICENSE("Dual BSD/GPL");
    
    #ifdef CONFIG_MODVERSIONS
    #define MODVERSIONS
    #include <linux/modversions.h>
    #endif 
    
    //#define OLD_WIFI_IFACE
    
    #ifdef OLD_WIFI_IFACE
    extern int mv88w8686_if_sdio_init_module(void);
    extern void mv88w8686_if_sdio_exit_module(void);
    #else
    extern int rockchip_wifi_init_module(void);
    extern void rockchip_wifi_exit_module(void);
    #endif
    
    static int wifi_launcher_init(void) 
    {
      int ret;
    
      printk("=======================================================\n");
      printk("==== Launching Wi-Fi driver! (Powered by Rockchip) ====\n");
      printk("=======================================================\n");
    
    #ifdef OLD_WIFI_IFACE
      ret = mv88w8686_if_sdio_init_module();
      if (ret) /* Try again */
            ret = mv88w8686_if_sdio_init_module();
    #else
      ret = rockchip_wifi_init_module();
      //if (ret) /* Try again */
      //    ret = rockchip_wifi_init_module();
    #endif
    
      return ret;
    }
    
    static void wifi_launcher_exit(void) 
    {
      printk("=======================================================\n");
      printk("== Dis-launching Wi-Fi driver! (Powered by Rockchip) ==\n");
      printk("=======================================================\n");
    
    #ifdef OLD_WIFI_IFACE
      mv88w8686_if_sdio_exit_module();
    #else
      rockchip_wifi_exit_module();
    #endif
    }
    
    module_init(wifi_launcher_init);
    module_exit(wifi_launcher_exit);

    Вот так вот, просто и незатейливо на RK3188 включается и выключается вайфай.

    Necromant, 25 Ноября 2013

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