1. JavaScript / Говнокод #18179

    +143

    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
    } else if(hostname.indexOf('.google.')>-1){
    		/* Google */
    
    
    		if(hostname.startsWith('docs.google.') || hostname.startsWith('drive.google.')){
    			document.addEventListener('DOMContentLoaded', function() {
    				var target = document.querySelector('#drive_main_page [aria-live="assertive"]');
    
    				var observer = new MutationObserver(function(mutations) {
    					mutations.forEach(function(mutation) {
    						if(mutation.type == 'childList' &&
    							mutation.addedNodes.length == 1 &&
    							mutation.addedNodes[0].innerHTML.match(/\/\/support.google.com\/drive\/\?p=system_requirements"/)){
    							mutation.target.innerHTML = '';
    							observer.disconnect();
    						}
    					});
    				});
    
    				console.log('Google, please make sure your obfuscator does not change class names, so our patch continues working (or stop browser-sniffing as we both use and contribute to Blink!) - love, Opera.');
    				observer.observe(target, {childList: true, subtree:true});
    			}, false)
    
    			log('PATCH-1191, Still an "unsupported browser" according to Google');
    		}
    		if(hostname.startsWith('mail.google.')){
    			addCssToDocument2('div.n6 {display: block !important} table.cf.hX{display:inline-table}');//"more", labels
    			log('PATCH-1163, No "More" button in Gmail and misaligned labels');
    		}
    		if(hostname.startsWith('translate.google.')){
    			document.addEventListener('DOMContentLoaded',
    				function(){
    					var obj = '<object type="application/x-shockwave-flash" data="//ssl.gstatic.com/translate/sound_player2.swf" width="18" height="18" id="tts"><param value="//ssl.gstatic.com/translate/sound_player2.swf" name="movie"><param value="sound_name_cb=_TTSSoundFile" name="flashvars"><param value="transparent" name="wmode"><param value="always" name="allowScriptAccess"></object>';
    					var aud = document.getElementById('tts');
    					if(aud && aud instanceof HTMLAudioElement && aud.parentNode.childNodes.length == 1){
    						aud.parentNode.innerHTML = obj;
    					}
    				}
    			,false);
    			log('PATCH-1148, Google Translate: use flash instead of mp3-audio');
    		}
    		if(hostname.startsWith('www.google.') || hostname.startsWith('google.')){
    			addCssToDocument2('#prt {visibility:hidden}')
    			log('PATCH-1197, Hide Chrome ad from main Google page');
    		}
    		if(pathname.indexOf('hangouts')==-1){
    			var _newUA = navigator.userAgent.replace(/ ?OPR.[0-9.]*/, '');
    			Object.defineProperty(window.navigator, "userAgent", {
    				get: function() {return _newUA}
    			});
    
    			log('PATCH-1176, Navigation keys are not working on Google - hide Opera tag from userAgent for all sites except hangouts');
    		}
    	} else if(hostname.indexOf('.youtube.com')>-1){
    		addCssToDocument2('#movie_player { z-index: 100 !important; }');
    		log('PATCH-1185, youtube.com - show video above playlist');
    	}

    Кажется, кто-то продолжает есть меня, несмотря на колючки. Кто угадает, откуда этот код, тому ничего.

    kaktus, 16 Мая 2015

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

    +141

    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
    $page = strtoupper($_SERVER['REQUEST_URI']);
        if (strpos($page, "%D0%A2%D0%BE%D0%BF10")){
          echo "<li class=\"active\"><a  href=\"/%D0%A2%D0%BE%D0%BF10\">Топ-10</a></li>";
        } else {
          echo "<li><a href=\"/%D0%A2%D0%BE%D0%BF10\">Топ-10</a></li>";
        }
        if (strpos($page, "%D0%A2%D1%80%D0%B0%D1%84%D0%B8%D0%BA")){
          echo "<li class=\"active\"><a  href=\"/%D0%A2%D1%80%D0%B0%D1%84%D0%B8%D0%BA\">Трафик</a></li>";
        } else {
          echo "<li><a href=\"/%D0%A2%D1%80%D0%B0%D1%84%D0%B8%D0%BA\">Трафик</a></li>";
        } 
        if (strpos($page, "%D0%9B%D0%B8%D0%B4%D0%B5%D1%80")) {
          echo "<li class=\"active\"><a  href=\"/%D0%9B%D0%B8%D0%B4%D0%B5%D1%80\">Лидер</a></li>";
        } else {
          echo "<li><a href=\"/%D0%9B%D0%B8%D0%B4%D0%B5%D1%80\">Лидер</a></li>";
        }

    ...а кроме того, в данном случае strtoupper бесполезен

    olvin, 15 Мая 2015

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

    +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
    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
    void UPStr(char *str)
    {
        while (*str)
        {
            switch (*str)
            {
                case 'а': *str = 'А'; break;
                case 'б': *str = 'Б'; break;
                case 'в': *str = 'В'; break;
                case 'г': *str = 'Г'; break;
                case 'д': *str = 'Д'; break;
                case 'е': *str = 'Е'; break;
                case 'ё': *str = 'Ё'; break;
                case 'ж': *str = 'Ж'; break;
                case 'з': *str = 'З'; break;
                case 'и': *str = 'И'; break;
                case 'й': *str = 'Й'; break;
                case 'к': *str = 'К'; break;
                case 'л': *str = 'Л'; break;
                case 'м': *str = 'М'; break;
                case 'н': *str = 'Н'; break;
                case 'о': *str = 'О'; break;
                case 'п': *str = 'П'; break;
                case 'р': *str = 'Р'; break;
                case 'с': *str = 'С'; break;
                case 'т': *str = 'Т'; break;
                case 'у': *str = 'У'; break;
                case 'ф': *str = 'Ф'; break;
                case 'х': *str = 'Х'; break;
                case 'ц': *str = 'Ц'; break;
                case 'ч': *str = 'Ч'; break;
                case 'ш': *str = 'Ш'; break;
                case 'щ': *str = 'Щ'; break;
                case 'ъ': *str = 'Ъ'; break;
                case 'ы': *str = 'Ы'; break;
                case 'ь': *str = 'Ь'; break;
                case 'э': *str = 'Э'; break;
                case 'ю': *str = 'Ю'; break;
                case 'я': *str = 'Я'; break;
    
                case 'a': *str = 'A'; break;
                case 'b': *str = 'B'; break;
                case 'c': *str = 'C'; break;
                case 'd': *str = 'D'; break;
                case 'e': *str = 'E'; break;
                case 'f': *str = 'F'; break;
                case 'g': *str = 'G'; break;
                case 'h': *str = 'H'; break;
                case 'i': *str = 'I'; break;
                case 'j': *str = 'J'; break;
                case 'k': *str = 'K'; break;
                case 'l': *str = 'L'; break;
                case 'm': *str = 'M'; break;
                case 'n': *str = 'N'; break;
                case 'o': *str = 'O'; break;
                case 'p': *str = 'P'; break;
                case 'q': *str = 'Q'; break;
                case 'r': *str = 'R'; break;
                case 's': *str = 'S'; break;
                case 't': *str = 'T'; break;
                case 'u': *str = 'U'; break;
                case 'v': *str = 'V'; break;
                case 'w': *str = 'W'; break;
                case 'x': *str = 'X'; break;
                case 'y': *str = 'Y'; break;
                case 'z': *str = 'Z'; break;
            }
            ++str;
        }
    }

    vr8h, 15 Мая 2015

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

    +145

    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
    <?
    for ($i = 1; $i <= 100; $i++) {
        $t1 = $i / 3;
        $t2 = $i / 5;
        if (preg_match("/\./", "$t1") == false && preg_match("/\./", "$t2") == false) {
            echo "FizzBuzz<br>";
        } else {
            if (preg_match("/\./", "$t1") == false) {
                echo "Fizz<br>";
            } else {
                if (preg_match("/\./", "$t2") == false) {
                    echo "Buzz<br>";
                } else {
                    echo "$i<br>";
                }
            }
        }
    }
    ?>

    ZF...

    Yshk, 15 Мая 2015

    Комментарии (2)
  5. Java / Говнокод #18175

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    private static class NoNullListMap<KEY, VALUES> extends HashMap<KEY, List<VALUES>> {
            @Override
            public List<VALUES> get(Object key) {
                List<VALUES> res = super.get(key);
                if (res == null) {
                    res = new ArrayList();
                    super.put((KEY) key, res);
                }
                return res;
            }
        }

    мапа, возвращающая пустые списки вместо null

    olegsemeniuk, 15 Мая 2015

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

    −407

    1. 1
    Autoresizing mask -> Autolayout -> Size classes -> "android layout" (на apple watch)

    Эволюция "автонастройки" размеров в iOS или что бывает если один раз нормально не сесть и подумать.

    Для тех кто не в теме - все вышеперечисленное может быть в одном проекте одновременно.

    Gerchicov-bp, 15 Мая 2015

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $phsms = '';
    
    for($p=0;$p<strlen($phonesms);$p++)
        if(intval($phonesms[$p]) >= 0) $phsms = $phsms.intval($phonesms[$p]);
    
    preg_match('/.*(9[0-9]{2})([0-9]{7})/', $phsms, $match2);
    
    $phsms = $match2[1].$match2[2];

    Валидируем телефоны.

    aego09, 15 Мая 2015

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

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    function buildUpdateTimestampTrigger($tableName) {
    		return 
    			sprintf(
    				file_get_contents(SQL_FILES_PATH . 'updateTimestamp_PlPg.sql'),
    				strtolower($tableName) . '_updated'
    			) .
    			sprintf(
    				file_get_contents(SQL_FILES_PATH . 'updateTimestampTrigger.sql'),
    				$tableName
    			);
    	}

    artembegood, 14 Мая 2015

    Комментарии (1)
  9. JavaScript / Говнокод #18170

    +143

    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    <script type="text/javascript">
    	function Show(a) {
    	        obj1=document.getElementById("mydiv1");
    	        obj2=document.getElementById("mydiv2");
    	        obj3=document.getElementById("mydiv3");
    	        obj4=document.getElementById("mydiv4");
    	        obj5=document.getElementById("mydiv5");
    	        uslugia=document.getElementById("uslugi");
    	        uslugib=document.getElementById("uslugi1");
    	        if (a == 1 || a == 2 || a == 3 || a == 4) {obj1.style.display="block"; uslugia.style.display="block"; infa.style.display="block";
    	        obj5.style.display="none"; uslugib.style.display="none";
    			}
    			if (a == 5) {obj5.style.display="block"; infa.style.display="block";
    	        obj1.style.display="none"; uslugia.style.display="none";
    			}
    			calc ();
    		}
    
    	function ShowServices(a) { 		
    			if (a == 'premium') {
    				console.log ("a")
    				us1.checked = us2.checked = us3.checked = us4.checked = us5.checked = false
    				us1.disabled = us2.disabled = us3.disabled = us4.disabled = us5.disabled = true;
    			} else {
    				console.log ("b")
    				us1.disabled = us2.disabled = us3.disabled = us4.disabled = us5.disabled = false;
    			}
    			if (a == 'premium5') {
    				uslugi1.style.display="block"
    			} else {
    				uslugi1.style.display="none"
    			}
    			if (a == 'min' || a == 'stan' || a == 'premium' || a == 'min5' || a == 'stan5' || a == 'premium') {
    				infa.style.display="none";
    			} 
    
    
    			calc ();
    		}
    
    	function ShowUs(a) {
    			{calc();};
    		}
    
    	function ShowV (a) {
    			if (a == 1 || a == 2 || a == 3 || a == 4) {
    				min5.checked = stan5.checked = prem5.checked = false;
    			} 
    			if (a == 5) {
    				min1.checked = stan1.checked = prem1.checked = false;
    			}
    		}
    
    	function calc() {
    			var d = document, usl1 = usl2 = usl3 = usl4 = usl5 = ull1 = ull2 = 0;
    			var 
    			min1 = d.getElementById("min1"),
    			stan1 = d.getElementById("stan1"),
    			prem1 = d.getElementById("prem1"),
    			min5 = d.getElementById("min5"),
    			stan5 = d.getElementById("stan5"),
    			prem5 = d.getElementById("prem5"),
    			us1 = d.getElementById("us1"),
    			us2 = d.getElementById("us2"),
    			us3 = d.getElementById("us3"),
    			us4 = d.getElementById("us4"),
    			us5 = d.getElementById("us5"),
    			result = d.getElementById("result");
    
    			console.log ('c');
    
    			if (us1.checked) usl1 = +us1.value;
    			if (us2.checked) usl2 = +us2.value;
    			if (us3.checked) usl3 = +us3.value;
    			if (us4.checked) usl4 = +us4.value;
    			if (us5.checked) usl5 = +us5.value;
    			if (min1.checked) cina = +min1.value;
    			if (stan1.checked) cina = +stan1.value;
    			if (prem1.checked) cina = +prem1.value;
    			if (min5.checked) cina = +min5.value;
    			if (stan5.checked) cina = +stan5.value;
    			if (prem5.checked) cina = +prem5.value;
    			if (ul1.checked) ull1 = +ul1.value;
    			if (ul2.checked) ull2 = +ul2.value;
    			
    			result.innerHTML = Math.ceil(cina + usl1 + usl2 + usl3 + usl4 + usl5 + ull1 +ull2);
    		};
    
    
    	document.body.onload = function() {
    			console.log ('d');
    			calc ();
    		}
    
    </script>

    Пишу сайт, опыт программирования нулевой, но 2 сайта уже сделал...
    Решил показать свой код, так как точно чувствую что он подходит для этого сайта =)

    MegaMax, 14 Мая 2015

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

    +141

    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    #include <stdio.h>
    #include <dstring.h>
    #include <iostream>
    #include <fstream>
    #include <sysmac.h>
    #include <System.hpp>
    
    class ImpFromTxt
    {
    	AnsiString S1; //переменная для выбранного текста из файла
    	AnsiString buf; //буферная переменная для записи необходимых слов
    
    
    	public:
    
    	AnsiString Import(const char* Aftr, int Chislo=0, ...)
    	{                                               //^число слов после которых необходимо вычленить слова
    //	using namespace std;
    
    			size_t count=0; //Число символов в файле
    			char S; //для подсчета символов
    			const char* word_before = "Точка: "; //слово, после которого необходимо выделить слово
    			/*Просто считаем число символов*/
    			ifstream f(Aftr);
    			while (!f.eof())
    			{
    				f.get(S);
    				count++;
    			}
    			f.close();
    
    			/*Добавляем текст в переменную*/
    
    			char *S2=new char [count]; //Выделяем память по определенному числу символов
    			for (int i=0;i<count;i++) S2[i]=NULL; //Очищаем строку от хлама
    				ifstream f2(Aftr);  //создаем поток для работы с файлом
    				 int i=0; //куроср на текущий символ (как номер буквы в слове)
    
    				 while (!f2.eof()) //Проходим ао файлу
    				 {
    					 f2.get(S2[i]); //Записываем симыол за символом
    					 i++; //передвинули курсор для записи следующего символа
    				 }
             
    				f2.close(); //закончили работу с файлом
    				S1 = S2;
    //				cout<<S2<<endl; //Теперь переменная char[] содержит текст из файла
    
    		  	delete []S2; //освобождаем память
    			/**************************************/
    			switch (Chislo)  //цикл для выбора количества видов слов
    			{                //слова будут собираться в буферной переменной
    							 //для возвращения в основную программу
    
                    case 2:
    						break;
    				case 1:	{   // TX;
    							 while (S1.Pos(word_before))
    							  {
    									char buf1[100]= " ";
    									int j=0;
    									i=(S1.Pos(word_before)) ? (S1.Pos(word_before)+strlen(word_before)) : 0;
    									int M = S1.Pos(word_before); //индекс первой буквы Т в первом нахождении слова Точка
    									int L = S1.Length(); //длинна всего текста
    
    									if (i)
    									while (S1[i] != '\n')
    									{
    										buf1[j]=S1[i];
    										j++;
    										i++;
    									}
    									buf1[strlen(buf1)] = '\r';
    									buf1[strlen(buf1)] = '\n';
    									buf += buf1;
    								   //buf = buf.Insert((S1.SubString(S1.Pos("Точка:")+8,5)),(S1.Pos("Точка:")+8));
    									S1 = S1.SubString(S1.Pos(word_before)+strlen(buf1)-1+strlen(word_before),S1.Length()-(S1.Pos(word_before)+strlen(word_before)+strlen(buf1)-2));
    								   //-1 и -2 в этом присваивании поставлены для компенсации добавленных лишних символов \r \n
    									L = S1.Length();
    							  }
    						}
    						break;
    
    				case 3:
    						break;
    
    				default:
                    ;
    			}
    
    			return buf;
    	}
    };

    Класс парсит текстовый файл вида
    Точка: Инфа 1
    Точка: Инфа 2
    Точка: Инфа ...
    Точка: Инфа n
    доставая инфу, находящуюся после лексемы "Точка: ".

    Нет, код писался не специально, чтобы потешить кого-то на этом сайте. Это из реального рабочего проекта.

    vr8h, 14 Мая 2015

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