1. Objective C / Говнокод #18173

    −407

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

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

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

    Gerchicov-bp, 15 Мая 2015

    Комментарии (3)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. JavaScript / Говнокод #18168

    +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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    function GetItemID() {
        var path = window.location.href;
        //alert(path);
        var itemID = "";
        var count = 0;
        for (i = 1; i < path.length; i++)
        {
            if (count != 12)
            {
                if ((path[i] == '0') || (path[i] == '1') || (path[i] == '2') || (path[i] == '3') || (path[i] == '4') || (path[i] == '5') || (path[i] == '6') || (path[i] == '7') || (path[i] == '8') || (path[i] == '9'))
                {
                    itemID += path[i];
                    count++;
                }
                else {
                    if (count != 12)
                    {
                        itemID = "";
                        count = 0;
                    }
                }
            }
        }
        return itemID;
    }

    На eBay определяет ID товара для кнопки купить в мерчантской(китайцы) странице ниже. O location.href.match(/\d{12}/) они наверное не знали.

    baldrs, 14 Мая 2015

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static final long SECOND = 1000;
       public static final long MINUTE = 1000 * 60;
       public static final long HOUR = MINUTE * 60;
       public static final long DAY = HOUR * 24;
       public static final long WEEK = DAY * 7;
       public static final long MONTH = DAY * 30;
       public static final long SEMIANNUAL = DAY * 183;
       public static final long YEAR = DAY * 365;

    ajtkulov, 14 Мая 2015

    Комментарии (33)
  8. JavaScript / Говнокод #18165

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //выберем все th-ячейки заголовка грида
    var allGridHeaderCells = cell.parentNode.children;
    //получим индекс ячейки 0...N, на которой произошел клик
    for (var ThisColNum = 0; ThisColNum < allGridHeaderCells.length; ThisColNum++) {
    	if (allGridHeaderCells[ThisColNum] == cell) {
    		break;
    	}
    }

    Пишет очень аккуратный программист. Но зачем так?! Вместо простого cell.cellIndex.
    Отдельный штрих, что дальше он использует переменную ThisColNum, определённую в цикле, доступность которой вне цикла — это вообще пережиток прошлого ECMAScript, не знавшего let.

    torbasow, 14 Мая 2015

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

    +144

    1. 1
    $orig_id = isset($_POST["orig_id"]) ? (int) $_POST["orig_id"] : (int) $_GET["orig_id"];

    https://github.com/uisky/notabenoid/blob/6edfee9f33b8466be9164cd3ba6be90b8f3a5770/protected/controllers/MyCommentsController.php#L123

    Stallman, 14 Мая 2015

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

    +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
    private List<string> urls = new List<string>();
    
            private int urls_index = -1;
    
            private ProgressBar pb = new ProgressBar()
            {
                Width = 291,
                Height = 26,
                Maximum = 100,
                Minimum = 0,
                Location = new Point(12, 41)
            };
    
            public Object SyncIndex = new Object();
    
    public void DownLoad(object index)
            {
                int indexwhile = (int) index;
                while (work)
                {
                    int localIndex;
    
                    lock (SyncIndex)
                    {
                        urls_index++;
                        localIndex = urls_index;
                    }
    
                    WebClient webClient = new WebClient();
                    try
                    {
                        webClient.DownloadFile(new Uri(urls[localIndex]), "img/" + localIndex + ".jpg");
                        webClient.DownloadProgressChanged += (s, a) => Invoke(new Action(() => {progressBars[indexwhile].Value = a.ProgressPercentage;})); 
                    }
                    catch (Exception exception)
                    {
                        Invoke(new Action(() =>
                        {
                            listBox2.Items.Add("Ошибка" + listBox1.Items[localIndex]);
                        }));
    
                        DownLoad(index);
                    }
    
                    Invoke(new Action(() =>
                    {
                        listBox1.Items[localIndex] =  "Загружен" + listBox1.Items[localIndex];
                        label1.Text = urls.Count.ToString();
                        richTextBox1.Text += localIndex + @".jpg Загружен" + Environment.NewLine;
                    }));
    
                    Thread.Sleep(500);
    
                }
            }
    
    
    private void button2_Click(object sender, EventArgs e)
            {
                work = true;
    
                Thread[] threads = new Thread[30];
    
                
    
                for (int i = 0; i < 20; i++)
                {
                    int mnoj = i + 1;
                    progressBars[i] = new ProgressBar()
                    {
                        Width = 291,
                        Height = 26,
                        Maximum = 100,
                        Minimum = 0,
                        Location = new Point(12, 41)
                    };
                    progressBars[i].Location = new Point(12, 41 * mnoj);
                    Controls.Add(progressBars[i]);
                    threads[i] = new Thread(DownLoad);
                    threads[i].IsBackground = true;
                    threads[i].Start(i);
                }
            }

    И все в одной форме..

    igorkrets, 14 Мая 2015

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