1. PHP / Говнокод #10961

    +53

    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
    function CP1251toUTF8($string) {
        $out = '';
        for ($i = 0; $i < strlen($string); ++$i) {
            $ch = ord($string{$i});
            if ($ch < 0x80)
                $out .= chr($ch);
            else
            if ($ch >= 0xC0)
                if ($ch < 0xF0)
                    $out .= "\xD0" . chr(0x90 + $ch - 0xC0); // А-Я, а-п (A-YA, a-p) 
                else
                    $out .= "\xD1" . chr(0x80 + $ch - 0xF0); // р-я (r-ya) 
                    else
                switch ($ch) {
                    case 0xA8: $out .= "\xD0\x81";
                        break; // YO 
                    case 0xB8: $out .= "\xD1\x91";
                        break; // yo 
    // ukrainian 
                    case 0xA1: $out .= "\xD0\x8E";
                        break; // Ў (U) 
                    case 0xA2: $out .= "\xD1\x9E";
                        break; // ў (u) 
                    case 0xAA: $out .= "\xD0\x84";
                        break; // Є (e) 
                    case 0xAF: $out .= "\xD0\x87";
                        break; // Ї (I..) 
                    case 0xB2: $out .= "\xD0\x86";
                        break; // I (I) 
                    case 0xB3: $out .= "\xD1\x96";
                        break; // i (i) 
                    case 0xBA: $out .= "\xD1\x94";
                        break; // є (e) 
                    case 0xBF: $out .= "\xD1\x97";
                        break; // ї (i..) 
    // chuvashian 
                    case 0x8C: $out .= "\xD3\x90";
                        break; // ? (A) 
                    case 0x8D: $out .= "\xD3\x96";
                        break; // ? (E) 
                    case 0x8E: $out .= "\xD2\xAA";
                        break; // ? (SCH) 
                    case 0x8F: $out .= "\xD3\xB2";
                        break; // ? (U) 
                    case 0x9C: $out .= "\xD3\x91";
                        break; // ? (a) 
                    case 0x9D: $out .= "\xD3\x97";
                        break; // ? (e) 
                    case 0x9E: $out .= "\xD2\xAB";
                        break; // ? (sch) 
                    case 0x9F: $out .= "\xD3\xB3";
                        break; // ? (u) 
                }
        }
        return $out;
    }

    iconv? Не, не слышал.

    7ion, 14 Июня 2012

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

    +66

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function sanitizeString($var)
      {
        trim($var);
        strip_tags($var);
        htmlspecialchars($var);
        stripslashes($var);
        mysql_real_escape_string($var);
      }

    Защита от SQL инъекции - экранирование, http://www.askdev.ru/q/10604

    Anon39AsAjYN, 14 Июня 2012

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

    +65

    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
    <?php
    
    $str = file_get_contents('source.txt');
    $out = '';
    
    $len = strlen($str);
    $word = '';
    
    $bad_words = array(
        'Аноним',
        'Птн',
        'Сен',
        'Ответ',
        'Пропущено',
        'ответов',
        'изображениями',
        'Нажмите',
        'jpg',
        'png',
        'gif',
        'Кб',
        'x',
    );
    
    $str=str_replace('Нажмите "ответ", чтобы увидеть тред целиком.','', $str);
    $str=str_replace('Показана уменьшенная копия, оригинал по клику.','', $str);
    $str=str_replace('Пропущено ','', $str);
    $str=str_replace(' ответов, из них ','', $str);
    $str=str_replace(' с изображениями.','', $str);
    $str=str_replace('Аноним','', $str);
    $str=str_replace('Ответы','', $str);
    $str=str_replace('Ответ','', $str);
    $str=str_replace('Птн','', $str);
    $str=str_replace('Сен','', $str);
    $str=str_replace('jpg','', $str);
    $str=str_replace('png','', $str);
    $str=str_replace('gif','', $str);
    $str=str_replace('Кб','', $str);
    $str=str_replace('x','', $str);
    
    
    
    for ($i = 0; $i < $len; $i++) {
        $c = $str[$i];
        if (($c >= 'a') && ($c <= 'z') ||
                ($c >= 'A') && ($c <= 'Z') ||
                ($c >= 'а') && ($c <= 'я') ||
                ($c >= 'А') && ($c <= 'Я')
        ) {
            $word.=$c;
        } else {
            if ($word != '') {
                $out.=strtolower($word) . "\r\n";
            }
            $word = '';
        }
    }
    file_put_contents('dictonary.txt', $out);
    ?>

    Из чьей-то пхп-вайпалки для известной имиджборды.
    Генерирует словарь слов из текста, взятого с помощью Ctrl+C с любой из страниц борды.

    7ion, 14 Июня 2012

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

    +59

    1. 1
    2. 2
    3. 3
    4. 4
    <table>
    	<tr><th colspan="2">Если вы еще не зарегистрированы:</th></tr>
    	<tr><td colspan="2"><a href="/registration.php">Перейдите к регистрации на сайте</a></td></tr>
    </table>

    Глубокий смысл в наличии colspan="2" постичь никак не получается...

    domaster, 14 Июня 2012

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

    +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
    static inline int getKey(short int high, short int low)
    {
        return (((int)high)<<16)+(int)low;
    }
    
    static inline short getHigh(int pKey)
    {
        return (short)(pKey>>16);
    }
    
    static inline short getLow(int pKey)
    {
        return (short)(pKey&0x00000000FFFFFFFF);
    }

    вот так. getHigh() оставил для полноты.

    Dummy00001, 14 Июня 2012

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

    −117

    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
    Если Номенклатура1 <> Номенклатура2 Тогда
    Запрос=Новый Запрос("ВЫБРАТЬ
    |РаспределениеМатериаловПоМенеджерам.ЗаявкаНаМатериалы,
    |РаспределениеМатериаловПоМенеджерам.Материал
    |ИЗ
    |РегистрСведений.РаспределениеМатериаловПоМенеджерам КАК РаспределениеМатериаловПоМенеджерам
    |ГДЕ
    |РаспределениеМатериаловПоМенеджерам.Материал = &Материал");
    Запрос.УстановитьПараметр("Материал",Номенклатура1);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    МЗСтарой=РегистрыСведений.РаспределениеМатериаловПоМенеджерам.СоздатьМенеджерЗаписи();
    МЗСтарой.ЗаявкаНаМатериалы=Выборка.ЗаявкаНаМатериалы;
    МЗСтарой.Материал=Номенклатура2;
    МЗСтарой.Прочитать();
    МЗНовой=РегистрыСведений.РаспределениеМатериаловПоМенеджерам.СоздатьМенеджерЗаписи();
    МЗНовой.ЗаявкаНаМатериалы=Выборка.ЗаявкаНаМатериалы;
    МЗНовой.Материал=Выборка.Материал;
    МЗНовой.Прочитать();
    Если МЗСтарой.Выбран() тогда
    МЗНовой.Удалить();
    Иначе
    МЗНовой.Материал=Номенклатура2;
    МЗНовой.Записать(Истина);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

    Вот такой код сделан был франчем, который потребовал за это еще и 3 часа оплаты)))) Одно только непонятно почему при обращении к регистру нельзя было использовать отбор это же гораздо проще и быстрее и кода меньше

    dart, 14 Июня 2012

    Комментарии (40)
  7. Java / Говнокод #10951

    +77

    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
    //...
    final AudioClip bar3Note = new AudioClip(Xylophone.class.getResource(THIRD_SOUND_NODE).toString());
    final AudioClip bar4Note = new AudioClip(Xylophone.class.getResource(FOURTH_SOUND_NODE).toString());
    final AudioClip bar5Note = new AudioClip(Xylophone.class.getResource(FIFTH_SOUND_NODE).toString());
    //...
    
    // ... Далее еще плачевнее...
    bar2Group.setOnMousePressed(new EventHandler<MouseEvent>()
    {
        @Override
        public void handle(MouseEvent me)
        {
            bar2Note.play();
         }
    });
    bar3Group.setOnMousePressed(new EventHandler<MouseEvent>()
    {
        @Override
        public void handle(MouseEvent me)
        {
            bar3Note.play();
        }
    });
    bar4Group.setOnMousePressed(new EventHandler<MouseEvent>()
    {
        @Override
        public void handle(MouseEvent me)
        {
            bar4Note.play();
        }
    });
    // ...
    
    // Ну и, наконец, полный П.З..Ц
    bar1Group.setEffect(l);
    bar2Group.setEffect(l);
    bar3Group.setEffect(l);
    bar4Group.setEffect(l);
    bar5Group.setEffect(l);
    bar6Group.setEffect(l);
    bar7Group.setEffect(l);
    bar8Group.setEffect(l);

    Внедрение JFX без элементарных циклов хорошим не закончится.

    dwinner, 14 Июня 2012

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

    −35

    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
    // For the probably_koi8_locales we have to look. the standard says
    // these are 8859-5, but almost all Russian users use KOI8-R and
    // incorrectly set $LANG to ru_RU. We'll check tolower() to see what
    // it thinks ru_RU means.
    // If you read the history, it seems that many Russians blame ISO and
    // Perestroika for the confusion.
    ...
    static QTextCodec * ru_RU_hack(const char * i) {
        QTextCodec * ru_RU_codec = 0;
    
    #if !defined(QT_NO_SETLOCALE)
        QByteArray origlocale(setlocale(LC_CTYPE, i));
    #else
        QByteArray origlocale(i);
    #endif
        // unicode   koi8r   latin5   name
        // 0x044E    0xC0    0xEE     CYRILLIC SMALL LETTER YU
        // 0x042E    0xE0    0xCE     CYRILLIC CAPITAL LETTER YU
        int latin5 = tolower(0xCE);
        int koi8r = tolower(0xE0);
        if (koi8r == 0xC0 && latin5 != 0xEE) {
            ru_RU_codec = QTextCodec::codecForName("KOI8-R");
        } else if (koi8r != 0xC0 && latin5 == 0xEE) {
            ru_RU_codec = QTextCodec::codecForName("ISO 8859-5");
        } else {
            // something else again... let's assume... *throws dice*
            ru_RU_codec = QTextCodec::codecForName("KOI8-R");
            qWarning("QTextCodec: Using KOI8-R, probe failed (%02x %02x %s)",
                      koi8r, latin5, i);
        }
    #if !defined(QT_NO_SETLOCALE)
        setlocale(LC_CTYPE, origlocale);
    #endif
    
        return ru_RU_codec;
    }

    Снова Qt. На этот раз src/corelib/codecs/qtextcodec.cpp и борьба бобра с ослом русских с буржуинскими стандартами ISO.

    bormand, 14 Июня 2012

    Комментарии (7)
  9. Java / Говнокод #10948

    +68

    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
    String townName = (params.get("town") == null ? "" : params.get("town").toLowerCase());
    List<String> towns = new LinkedList();
    int i = 0;
    for (Town town : service.getTowns()) {
        if (townName.length() > 0) {
            if (town.getName().toLowerCase().startsWith(townName)) {
                towns.add(town.getName());
                i++;
            }
        } else {
            towns.add(town.getName());
            i++;
        }
        if (i == 10) {
            break;
        }
    }

    наверное в тот день sql меня достал

    zlob.jc, 14 Июня 2012

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

    −104

    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
    if ($key eq $default_key){
    		my $author = $default_author;
    		if ($release){
    			if (length $release <= $max_release){
    				if (length $description <= $max_description){			
    					if ($filename){
    						if (clearfn(\$filename) eq 1){
    							if (! -e "$files_dir/$filename"){
    								$release = clear($release);
    								$description = clear($description);
    								$description = bb($description);
    								open FILE, '>>db.txt' or die $!;
    								print FILE "$release\t$filename\t$description\t$author\t" . ftime() . "\n";
    								close FILE;
    								open FILE, ">$files_dir/$filename" or die "$!";
    								binmode FILE;
    								while (<$filehandle>){
    									print FILE;
    								}
    								close FILE;
    								$result = 'Файл успешно добавлен!';
    								rss();
    							}
    							else {
    								$result = 'Ошибка: Файл с таким именем уже загружен!';
    							}
    						}
    						else {
    							$result = 'Ошибка: Недопустимое расширение файла!';
    						}
    					}
    					else {
    						$result = 'Ошибка: Нет файла!';
    					}
    				}
    				else {
    					$result = "Ошибка: В описании должно быть не более $max_description символов!";
    				}
    			}
    			else {
    				$result = "Ошибка: В названии должно быть не более $max_release символов!";
    			}
    		}
    		else {
    			$result = 'Ошибка: Нет названия!';
    		}
    	}
    	else {
    		$result = 'Ошибка: ';
    	}

    Писал паскалеребенок

    nyaknyan, 14 Июня 2012

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