1. C++ / Говнокод #3269

    +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
    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
    void __fastcall TMainForm::TimerCheckForPowerOffTimeTimer(TObject *Sender)
    {
       // Обновление текущего времени/дня недели
       eDayOfToday->Text = FormatDateTime("dddd", Now() );
       DateTimePickerCurrentTime->DateTime = Now();
    
       static already = false; // процесс выключения начался
       if( !CheckBox1->Checked ) already = false;
       if( CheckBox1->Checked && !already ) // первое срабатываение таймера по времени
       {
          AnsiString TimeString = TimeToStr(TTime::CurrentTime());
          bool  TimeToPowerOff = false;
    
          if( cbAllDay->Checked )
          {
             TimeToPowerOff = ( TimeToStr(DateTimePickerAllday->Time) == TimeString );
          }
          else
          {
             switch( DayOfWeek( Now() ) )
             {
                case SUNDAY:
                {
                   if( cbSunday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerSunday->Time) == TimeString );
                   }
                   break;
                }
                case MONDAY:
                {
                   if( cbMonday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerMonday->Time) == TimeString );
                   }
                   break;
                }
                case TUESDAY:
                {
                   if( cbTuesday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerTuesday->Time) == TimeString );
                   }
                   break;
                }
                case WEDNESDAY:
                {
                   if( cbWednesday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerWednesday->Time) == TimeString );
                   }
                   break;
                }
                case THURSDAY:
                {
                   if( cbThursday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerThursday->Time) == TimeString );
                   }
                   break;
                }
                case FRIDAY:
                {
                   if( cbFriday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerFriday->Time) == TimeString );
                   }
                   break;
                }
                case SATURDAY:
                {
                   if( cbSaturday->Checked )
                   {
                      TimeToPowerOff = ( TimeToStr(DateTimePickerSaturday->Time) == TimeString );
                   }
                   break;
                }
             } // switch
          } // else cbAllDay->Checked
    
          if( TimeToPowerOff )
          {
             already=true;
             SetPermission();
             ShutDownPC();
          }
       } // первое срабатывание
    }

    Вырезка из программы для выключения питания компа. Данная функция вызывается по таймеру, раз в 900 мс :)
    Совпадение времен проверяется сравнением их строкового представления. Ну и в довесок, однообразный код в switch().

    absolut, 19 Мая 2010

    Комментарии (0)
  2. ActionScript / Говнокод #3268

    −87

    1. 1
    if(_smcWindowContent._smcShowOnStartup.contains(_smcWindowContent._smcShowOnStartup._sbtShowHelpOn))_smcWindowContent._smcShowOnStartup.removeChild(_smcWindowContent._smcShowOnStartup._sbtShowHelpOn);

    (c) Tom Wrasseller Flash Lead of Arkadium Games

    dimas_art, 19 Мая 2010

    Комментарии (2)
  3. Pascal / Говнокод #3267

    +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
    function fnGetWeekDay:integer;
    //функция fnGetWeekDay возвращает день недели
    var
      CurDate: date;
      dd,mm,yy: word;
      cent, month, iRes : integer;
    Begin
      CurDate = CurrentDate;
      DecodeDate(CurDate,yy,mm,dd);
      month = mm;
      if mm < 3 then mm = mm + 10
      else mm = mm - 2;
      if mm > 10 then yy = yy - 1;
      cent = yy div 100;
      yy = yy mod 100;
      iRes = ((2.6*mm-0.2) div 1) + dd + yy + (yy div 4) + (cent div 4) - 2*cent;
      iRes = ((iRes+777) mod 7);
      if (month == 5) or (month == 7) or (month == 10) or (month == 12) then iRes = iRes - 1;
      if iRes == -1 then result = 6
      else if iRes == 0 then result = 7
      else result = iRes;
    End; //  fnGetWeekDay

    Это не совсем Delphi. Это нечто с крайне похожим синтаксисом.
    Почему нельзя было использовать (CurrentDate - <какое-нибудь воскресенье>) mod 7 я не знаю.

    rat, 19 Мая 2010

    Комментарии (21)
  4. JavaScript / Говнокод #3266

    +170

    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
    var selectControl = document.getElementById("list_tt_DropDownList_PerRaz");
    	switch (tr.cells[13].innerText)
    	{
    	    case "1":
    	        selectControl.options[0].selected = "selected";
    	        break;
    	    case "2":
    	        selectControl.options[1].selected = "selected";
    	        break;
    	    case "3":
    	        selectControl.options[2].selected = "selected";
    	        break;
    	    case "4":
    	        selectControl.options[3].selected = "selected";
    	        break;
    	    case "5":
    	        selectControl.options[4].selected = "selected";
    	        break;
    	}

    такой вот милый switch

    alex_donetsk, 19 Мая 2010

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

    +74

    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
    List<String> runningVmIds = new ArrayList<String>( );
        for ( VmInfo runVm : request.getVms( ) ) {
          runningVmIds.add( runVm.getInstanceId( ) );
        }
        for ( String vmId : VmInstances.getInstance( ).getKeys( ) ) {
          if ( runningVmIds.contains( vmId ) ) {
            continue;
          }
          VmInstance vm = null;
          try {
            vm = VmInstances.getInstance( ).lookup( vmId );
            long splitTime = vm.getSplitTime( );
            if ( splitTime > SHUT_DOWN_TIME ) {
              VmInstances.getInstance( ).disable( vm.getName( ) );
              vm.resetStopWatch( );
              vm.setState( VmState.TERMINATED );
              vm.setReason( INSTANCE_EXPIRED );
              SystemState.cleanUp( vm );
            }
          } catch ( NoSuchElementException e ) {}
        }
        
        List<String> knownVmIds = new ArrayList<String>( );
        knownVmIds.addAll( VmInstances.getInstance( ).getKeys( ) );
        if ( knownVmIds.removeAll( runningVmIds ) ) {//<-- active registered vms not reported in describe
          for ( String vmId : knownVmIds ) {
            VmInstance vm = null;
            try {
              vm = VmInstances.getInstance( ).lookup( vmId );
              long splitTime = vm.getSplitTime( );
              if ( splitTime > SHUT_DOWN_TIME ) {
                VmInstances.getInstance( ).disable( vm.getName( ) );
                vm.resetStopWatch( );
                vm.setState( VmState.TERMINATED );
                vm.setReason( INSTANCE_EXPIRED );
                SystemState.cleanUp( vm );
              }
            } catch ( NoSuchElementException e ) {
              /* should never happen, just pulled the key set, if it does ignore it */
            }
          }
        }

    Я, наверно, тупой и ещё мало кофе с утра выпил, но мне кажется, что один из циклов тут явно лишний...

    raorn, 19 Мая 2010

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

    −125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    while (my $t = $tix->RT::SearchBuilder::Next) {  # BLOODY HACK
            my $when = $t->ResolvedObj->Unix - $t->CreatedObj->Unix;
            next unless $when > 0; # Doubly bloody hack
            my $max = (60*60*24*2) / 1800;
            my $x = int($when / 1800);
            $counts[$x > $max ? $max : $x]++;
        }

    Нашел в коде RTx Statistics - расширения для CRM Request Tracker: http://wiki.bestpractical.com/view/RT3StatisticsPackage

    del, 19 Мая 2010

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

    +132

    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
    DWORD WINAPI readPort( LPVOID lpParam )
    {
            while (1)
            {
                    if (brkListen)
                            break;
    
            if (((Param*)(void*)lpParam)->port)
                    if (fgetc(((Param*)(void*)lpParam)->port)!=EOF);
                            ((Param*)(void*)lpParam)->count++;
            }
    
            return 0;
    }

    Кусок программы подсчёта импульсов с оптопорта. Мало того что так делать плохо, так ещё один косяк есть. RS232 ниже 64 бод в винде не держит. так и не выяснил в физике это дело или в оси. Под RTEMS 6.04 64 бод на ура считалось.

    ursus, 19 Мая 2010

    Комментарии (9)
  8. bash / Говнокод #3262

    −132

    1. 1
    yes | rm -r /

    Так красивее :)

    Tanger, 18 Мая 2010

    Комментарии (31)
  9. C# / Говнокод #3261

    +113

    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
    private static void assertNoReflection()
    {
        foreach (StackFrame stackFrame in new StackTrace().GetFrames())
        {
            if (stackFrame.GetMethod().DeclaringType.Namespace == "System.Reflection")
            {
                throw new MethodAccessException();
            }
        }
    }
    
    internal static string GetKey()
    {
        assertNoReflection();
    
    // ...
    }

    Вот так вот приходится говнить, потому что в дотнете рефлексией можно спокойно вызывать internal- и private- методы.
    assertNoReflection(); проверяет, что вверх по стеку вызовов никто не балуется рефлексией.
    После assertNoReflection(); из нативной длл получаем обфусцированную (вручную, лол) строку, которая далее с помощью запутанных алгоритмов (некоторые параметры для "расшифровки" опять берутся из нативной длл) приводит её в вид пароля (для доступа к запароленному архиву).
    Софт не прямо уж суперсекретный, просто нужно скрыть ресурсы хотя бы для приличия. Пароль через подключение к серверу не катит.
    Ко всему этому оно собрано в одно exe моновским mkbundle'ом (рефлектор не может открыть!) и поверх upx'ом. В общем, большое количество кулхацкеров отсекается (должны знать ассемблер и MSIL).
    Чувствую, что говнорешение, но не могу придумать что-то более умное. Обфускаторы тоже не очень катят, ибо плохо дружат с моно.

    cfdev, 18 Мая 2010

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

    +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
    /* TODO: make this into something smarter than a linked list */
    typedef struct bunchOfInstances_t {
        ncInstance * instance;
        int count; /* only valid on first node */
        struct bunchOfInstances_t * next;
    } bunchOfInstances;
    
    ncInstance * get_instance (bunchOfInstances **headp)
    {
        static bunchOfInstances * current = NULL;
        
        /* advance static variable, wrapping to head if at the end */
        if ( current == NULL ) current = * headp;
        else current = current->next;
        
        /* return the new value, if any */
        if ( current == NULL ) return NULL;
        else return current->instance;
    }

    raorn, 18 Мая 2010

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