1. 1C / Говнокод #15420

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

    volfyx, 11 Марта 2014

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

    +152

    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
    <?php
    //Скрипт рассчета времени.
    if (!empty($_POST["from_hours"])) { $from_hours = $_POST["from_hours"]; } else { unset($_POST["from_hours"]); }
    if (!empty($_POST["from_minutes"])) { $from_minutes = $_POST["from_minutes"]; } else { unset($_POST["from_minutes"]); }
    if (!empty($_POST["from_seconds"])) { $from_seconds = $_POST["from_seconds"]; } else { unset($_POST["from_seconds"]); }
    if (!empty($_POST["from_month"])) { $from_month = $_POST["from_month"]; } else { unset($_POST["from_month"]); }
    if (!empty($_POST["from_day"])) { $from_day = $_POST["from_day"]; } else { unset($_POST["from_day"]); }
    if (!empty($_POST["from_year"])) { $from_year = $_POST["from_year"]; } else { unset($_POST["from_year"]); }
    
    if (!empty($_POST["to_hours"])) { $to_hours = $_POST["to_hours"]; } else { unset($_POST["to_hours"]); }
    if (!empty($_POST["to_minutes"])) { $to_minutes = $_POST["to_minutes"]; } else { unset($_POST["to_minutes"]); }
    if (!empty($_POST["to_seconds"])) { $to_seconds = $_POST["to_seconds"]; } else { unset($_POST["to_seconds"]); }
    if (!empty($_POST["to_month"])) { $to_month = $_POST["to_month"]; } else { unset($_POST["to_month"]); }
    if (!empty($_POST["to_day"])) { $to_day = $_POST["to_day"]; } else { unset($_POST["to_day"]); }
    if (!empty($_POST["to_year"])) { $to_year = $_POST["to_year"]; } else { unset($_POST["to_year"]); }
    
    $time = mktime($to_hours,$to_minutes,$to_seconds,$to_month,$to_day,$to_year) - mktime($from_hours,$from_minutes,$from_seconds,$from_month,$from_day,$from_year);
    
    	if (!empty($time)) {
    		echo 
    		"От $from_month/$from_day/$from_year $from_hours:$from_minutes:$from_seconds
    		<br>До $to_month/$to_day/$to_year $to_hours:$to_minutes:$to_seconds
    		<br>Секунд: $time
    		<br>Минут: ",$time/60,"
    		<br>Часов: ",$time/60/60,"
    		<br>Дней: ",$time/60/60/24,"
    		<br>Недель: ",$time/60/60/24/365*12*4,"
    		<br>Месяцев: ",$time/60/60/24/365*12,"
    		<br>Лет: ",$time/60/60/24/365;
    	}
    	else {
    		echo "<h2>Введите данные для расчета</h2>";
    	}
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Сколько времени пройдет от и до</title>
    </head>
    <body>
    <p>Сколько времени от:</p>
    <form method="post" target="_blank" action="date.php">
    	<input type="text" name="from_year">	Год<br>
    	<input type="text" name="from_month">	Месяц<br>
    	<input type="text" name="from_day">	День<br>
    	<input type="text" name="from_hours">	Час<br>
    	<input type="text" name="from_minutes">	Минут<br>
    	<input type="text" name="from_seconds">	Секунд<br>
    <p>Сколько времени до:</p>
    	<input type="text" name="to_year">	Год<br>
    	<input type="text" name="to_month">	Месяц<br>
    	<input type="text" name="to_day">	День<br>
    	<input type="text" name="to_hours">	Час<br>
    	<input type="text" name="to_minutes">	Минут<br>
    	<input type="text" name="to_seconds">	Секунд<br>
    	<input type="submit" value="Рассчитать">
    </form>
    <p>* Заполнять все поля не объязательно.</p>
    </body>
    </html>

    Скрипт расчета времени от и до.
    Как бы улучшить этот говнокод на php?

    Arthur, 11 Марта 2014

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

    +24

    1. 1
    ((x<0) && (y < 0)) ? ({x =-x; y=-y;}) : (((x < 0) || (y < 0)) ? ({x+=0.5; y+=0.5;}) : ( (!(((x > 2.0) || (x < 0.5)) && ( (y > 2.0) || (y < 0.5) ))) ? : ({x/=10;y/=10;}) ) );

    простейшее задание на условия...

    mccloud, 10 Марта 2014

    Комментарии (20)
  4. Assembler / Говнокод #15415

    +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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    global _start
    
    section .text
    
    _start:
    
    	mov	eax, 0b10010100101100110111110110111110
    	;  эти битики будут выведены на печать
    	
    	mov	ecx, 0b00011000000110000001100000011000
    	; Четыре недозаполненных ascii кодов символов '0' или '1', в который из флага переноса заталкивается битик 0 или 1
    
    	%rep 8
    	mov	ebx, ecx
    	%rep    3
    		shr	eax, 1 ; Захавываем битик в флаг переноса
    		rcl	ebx, 1 ; Запихиваем из флага переноса в недозаполненные ascii коды
    		rol	ebx, 7 ; Проматываем на следующий кусок
    	%endrep
    	shr	eax, 1
    	rcl	ebx, 1 ; На последней стадии все то же самое, только проматывать уже не надо
    
    	push ebx ; Теперь все битики всунуты, пихнем содержимое регистра в стек
    	%endrep
    
    
        
    	mov	eax, 04h ; write()
    	mov	ebx, 01h ; stdout
    	mov	ecx, esp ; распечатаем из стека
    	mov	edx, 32  ; 32 символа
    	int	80h
    	
    	mov	eax, 01h ; exit()
    	xor	ebx, ebx ; errno
    	int	80h

    NASM Linux x86
    Суть - вывести содержимое регистра в двоичной системе счисления
    Можно было вместо этой мути использовать CMOVC ( Move if carry (CF=1) ) или еще что-нибудь такое придумать, есть же еще BT, BTS, глаза разбегаются
    ...вообще хрен его знает, какой-то упоротый этот x86 ассемблер, надо бы AVR осваивать, там регистров побольше

    j123123, 10 Марта 2014

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

    +156

    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
    //CSS Анимация 1 
    function hideConv(){
    	//добавляем класс содержащий св-ва конца анмиации
    	$("#mail").addClass("animated200ms");
    	$("#mail").css("opacity","0");	
    	//определяем объект анимации
    	var elem=document.getElementById("mail");
    	//вешаем прослушиватель завершения анимации
    	elem.addEventListener('transitionend', function(event) {
    		event.stopImmediatePropagation();
    		//ф-ия выполняемая после завершения анимации 1
    		showConv();
    	},false);	
    }
    
    //CSS Анимация 2 
      function showConv(){
    	
    	//копируем содержимое объекта анимации
    	var m = $("#mail").html();
    	//удаляем объект анимации на ***
    	$("#mail").remove();
    	//вставляем его снова *** 
    	$(".сontacts").append("<div id='mail' class='animated200ms' style='opacity: 0;'></div>");
    	$("#mail").append(m);
    	
    	
    	//не можем отловить событие завершения анимации 2 - делаем таймаут и надеемся что анимация успела выполнится 
    	$("#mail").css("opacity",0);
    	tv = setTimeout(function()
    	{
    		$("#mail").css("opacity",1);
    	},500);
    	
    	
    	//не можем отловить событие завершения анимации 3 - делаем таймаут и надеемся что анимация успела выполнится 
    	time_var = setTimeout(function()
    	{
    		$("#mail").removeClass("animated200ms");
    		openMail();
    	}, 3500);
      }

    Задача: выполнить цепочку анимации на CSS: анимация-1, анимация-2, анимация-3. Каждая следующая анимация должна запускаться по завершению предыдущей. Смотрим и улыбаемся.
    Работу выполнил фрилансер: https://www.fl.ru/users/nDc/ за 900руб.

    agency-it, 10 Марта 2014

    Комментарии (10)
  6. Python / Говнокод #15411

    −87

    1. 1
    from time import time as time

    В своё время поймал себя на писанине такого кода на Python for s60

    SanchO-SEK, 10 Марта 2014

    Комментарии (11)
  7. Си / Говнокод #15406

    +142

    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
    static char months [] = "JanFebMarAprMayJunJulAugSepOctNovDecGlk";
    static char dows [] = "SunMonTueWedThuFriSatEar";
    
    
    int dd [] =
    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    void gen_http_date (char date_buffer[29], int time) {
      int day, mon, year, hour, min, sec, xd, i, dow;
      if (time < 0) time = 0;
      sec = time % 60;
      time /= 60;
      min = time % 60;
      time /= 60;
      hour = time % 24;
      time /= 24;
      dow = (time + 4) % 7;
      xd = time % (365 * 3 + 366);
      time /= (365 * 3 + 366);
      year = time * 4 + 1970;
      if (xd >= 365) {
        year++;
        xd -= 365;
        if (xd >= 365) {
          year++;
          xd -= 365;
          if (xd >= 366) {
            year++;
            xd -= 366;
          }
        }
      }
      if (year & 3) {
        dd[1] = 28;
      } else {
        dd[1] = 29;
      }
    
      for (i = 0; i < 12; i++) {
        if (xd < dd[i]) {
          break;
        }
        xd -= dd[i];
      }
    
      day = xd + 1;
      mon = i;
      assert (day >= 1 && day <= 31 && mon >=0 && mon <= 11 &&
          year >= 1970 && year <= 2039);
    
      sprintf (date_buffer, "%.3s, %.2d %.3s %d %.2d:%.2d:%.2d GM",
          dows + dow * 3, day, months + mon * 3, year,
          hour, min, sec);
      date_buffer[28] = 'T';
    }

    Делать имена месяцев и дни недели одной сишной строкой, чтобы потом выводить оттуда по три символа через sprintf, считая оффсет умножением на 3 т.к. имена месяцев и дней недели влазят в три символа
    https://github.com/vk-com/kphp-kdb/blob/ce1ac4fbde2d3b546936ad07d6a748958f6d2198/net/net-http-server.c#L664

    http://roem.ru/2013/07/20/kphp76561/
    >ВКонтактовские "олимпиадники"-чемпионы ACM разработали крайне интересную высоконагруженным сайтам технологию.

    Хреновые какие-то олимпиадники попались, раз неосилили http://ideone.com/IfvBgi

    j123123, 09 Марта 2014

    Комментарии (81)
  8. ActionScript / Говнокод #15403

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    var player:c2Player = world.getPlayer();
    var block:c2Block = world.getBlock(player);
    
    player.x = (player.xpos - block.xpos)*(player.angle + block.angle * Math.cos(player.angle/180*Math.PI)*(10-10+1-1+0);

    Оригинальная и полезная формула.

    Bletraut, 09 Марта 2014

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

    +123

    1. 1
    Mage::run();

    С этого места начинается боль и мучения.

    DrugMan, 09 Марта 2014

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

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php
    
     $dataProvider = new CActiveDataProvider('User', array(
                'criteria'=>array(
                    'condition' => 'id = ' . $id,
                ),
            ));
    
    $regdata = $dataProvider->getData();
    if (is_array($regdata)) $regdata = current($regdata);
    //....
    $this->redirect(Yii::app()->createUrl('user/profile'));

    Как не стоит писать на Yii

    JiLiZART, 09 Марта 2014

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