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

    +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
    using (var s = _session.OpenSession())
    	using (var tr = s.BeginTransaction())
    	{
    		if (!s.IsConnected)
    		{
    			s.SaveOrUpdate(factor);
    			tr.Commit();
    			s.Close();
    			return true;
    		}
    		else
    		{
    			s.Close();
    			return false;
    		}
    	}

    Maps, 09 Июня 2012

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

    +90

    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
    function Vincenty(Lat1, Lon1, Lat2, Lon2: Extended): Extended;
    const  // Параметры эллипсоида:
    a = 6378245.0;
    f = 1 / 298.3;
    b = (1 - f) * a;
    EPS = 0.5E-30;
    var
    APARAM, BPARAM, CPARAM, OMEGA, TanU1, TanU2,
    Lambda, LambdaPrev, SinL, CosL, USQR, U1, U2,
    SinU1, CosU1, SinU2, CosU2, SinSQSigma, CosSigma,
    TanSigma, Sigma, SinAlpha, Cos2SigmaM, DSigma : Extended;
    begin
    lon1 := lon1 * (PI / 180); 
    lat1 := lat1 * (PI / 180);
    lon2 := lon2 * (PI / 180); 
    lat2 := lat2 * (PI / 180); //Пересчет значений координат в радианы
    
    TanU1 := (1 - f) * Tan(lat1); 
    TanU2 := (1 - f) * Tan(lat2);
    U1 := ArcTan(TanU1);  
    U2 := ArcTan(TanU2);
    SinCos(U1, SinU1, CosU1); 
    SinCos(U2, SinU2, CosU2);
    OMEGA := lon2 - lon1; 
    lambda := OMEGA;
    
    repeat //Начало цикла итерации
    
    LambdaPrev:= lambda;
    SinCos(lambda, SinL, CosL);
    SinSQSigma := (CosU2 * SinL * CosU2 * SinL) +
      (CosU1 * SinU2 - SinU1 * CosU2 * CosL) *
      (CosU1 * SinU2 - SinU1 * CosU2 * CosL);
    
    CosSigma := SinU1 * SinU2 + CosU1 * CosU2 * CosL;
    TanSigma:= Sqrt(SinSQSigma) / CosSigma;
    
    if TanSigma > 0  then Sigma := ArcTan(TanSigma)
      else Sigma := ArcTan(TanSigma) + Pi;
    
    if SinSQSigma = 0  then SinAlpha := 0
       else SinAlpha := CosU1 * CosU2 * SinL / Sqrt(SinSQSigma);
    
    if (Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))) = 0  then Cos2SigmaM := 0
      else Cos2SigmaM:= CosSigma - (2 * SinU1 * SinU2 / (Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))));
    
    CPARAM:= (f / 16) * Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha)) *
      (4 + f * (4 - 3 * Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))));
    
    lambda := OMEGA + (1 - CPARAM) * f * SinAlpha * (ArcCos(CosSigma) +
      CPARAM * Sin(ArcCos(CosSigma)) * (Cos2SigmaM + CPARAM * CosSigma *
      (-1 + 2 * Cos2SigmaM * Cos2SigmaM)));
    
    until Abs(lambda - LambdaPrev) < EPS; // Конец цикла итерации
    
    USQR:= Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha)) *(a * a - b * b) / (b * b);
    APARAM := 1 + (USQR / 16384) * (4096 + USQR * (-768 + USQR * (320 - 175 * USQR)));
    
    BPARAM := (USQR / 1024) * (256 + USQR * (-128 + USQR * (74 - 47 * USQR)));
    DSigma := BPARAM * SQRT(SinSQSigma) * (Cos2SigmaM + BPARAM / 4 *
    (CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM) - BPARAM / 6 * Cos2SigmaM *
    (-3 + 4 * SinSQSigma) * (-3 + 4 * Cos2SigmaM * Cos2SigmaM)));
    
    Result := b * APARAM * (Sigma - DSigma);
    end; 
    
    { ©Drkb::04255 }

    Алгоритм расчёта километража между двумя точками на земной поверхности методом Винсенти, найден в drkb3.0. Там же весь этот ГК уместился в одной строчке:

    distance=sqrt(pow((lon1 - lon2)*111*COS(lat2/57.295781), 2) + pow((lat1) - lat)*111, 2));

    , чудноо... :)

    Alegun, 09 Июня 2012

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

    −42

    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
    #include <iostream>
    
    using namespace std;
    int main()
     {
    for(int i = 0x1; 0x1 <= i; i++)
     {
    int a = 0x5;
    int b = 0xa;
     cin >> i;
    if(b || a)
     {
     a += 0x5;
     cout << "\n ";
     cout << "первое условие: ";
     cout << "\n ";
     cout << "переменная a = " << a;
     cout << "\n ";
     cout << "переменная b = " << --b + 0x5 - 0x9;
     cout << "\n";
    goto var;
     }
    else
     {
     var:
     cout << "\n ";
    cout << "второе условие: ";
     a = (0xa - 0x5);
     cout << "\n ";
     cout << "переменная a = " << a;
     cout << "\n ";
     cout << "переменная b = " << ++b;
     cout << "\n";
     }
    break;
     }
    
     system("pause");
    return 0;
     }

    Попросил чела решить классическую задачку - обменять значениями две переменные, не используя третьей

    telhar, 08 Июня 2012

    Комментарии (52)
  4. 1C / Говнокод #10757

    −125

    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
    // Преобразовывает геокоординаты из одной СК в другую
    //
    // КоординатыТочки 			- Структура	- координаты
    //
    // ПараметрыПреобразования	- Структура - параметры преобразования из одной системы коорднат в другую
    //
    // ВысотаТочки 				- Число		- выстоа точки над уровнем моря
    //
    // Точность					- Число		- точность возвращаемых координат
    //
    // Возвращаемое значение:
    //   Структура	- координаты
    //
    Функция ПреобразоватьКоординаты(КоординатыТочки, ПараметрыПреобразования, ВысотаТочки = 0, Точность = 6) Экспорт
    
    	ПП = ПараметрыПреобразования;
    	
    	ШиротаВГрадусах 	= КоординатыТочки.Широта;
    	ДолготаВГрадусах 	= КоординатыТочки.Долгота; 
    	
    	ЧислоПи = 3.14159265358979;
    	ЧислоУгловыхСекундВРадиане = 206264.8062;
    	
    	КвадратЭксцентриситетаИсходногоЭллипсоида 	= 2 * ПП.СжатиеИсходногоЭллипсоида - Pow(ПП.СжатиеИсходногоЭллипсоида , 2);
    	КвадратЭксцентриситетаКонечногоЭллипсоида 	= 2 * ПП.СжатиеКонечногоЭллипсоида - Pow(ПП.СжатиеКонечногоЭллипсоида , 2);
    	
    	СреднееБольшаяПолуось 				= (ПП.БольшаяПолуосьИсходногоЭллипсоида + ПП.БольшаяПолуосьКонечногоЭллипсоида) / 2;
    	СреднееКвадратЭксцентриситета 		= (КвадратЭксцентриситетаИсходногоЭллипсоида + КвадратЭксцентриситетаКонечногоЭллипсоида) / 2;
    	РазностьБольшихПолуосей 			= ПП.БольшаяПолуосьКонечногоЭллипсоида - ПП.БольшаяПолуосьИсходногоЭллипсоида;
    	РазностьКвадратовЭксцентриситетов 	= КвадратЭксцентриситетаКонечногоЭллипсоида - КвадратЭксцентриситетаИсходногоЭллипсоида;
    	
    	ШиротаВРадианах 	= ШиротаВГрадусах * ЧислоПи / 180;
    	ДолготаВРадианах 	= ДолготаВГрадусах * ЧислоПи / 180;
    	РадиусКривизныМеридианногоСечения 	= СреднееБольшаяПолуось * (1 - СреднееКвадратЭксцентриситета) 
    	/ Pow(1 - СреднееКвадратЭксцентриситета * Pow(Sin(ШиротаВРадианах) , 2) , 1.5);
    	РадиусКривизныПервогоВертикала 		= СреднееБольшаяПолуось * Pow(1 - СреднееКвадратЭксцентриситета 
    	* Pow(Sin(ШиротаВРадианах) , 2) , -0.5);
    
    	СмещениеШиротыВСекундах 	= ЧислоУгловыхСекундВРадиане / (РадиусКривизныМеридианногоСечения + ВысотаТочки) 
    	* (РадиусКривизныПервогоВертикала / СреднееБольшаяПолуось * СреднееКвадратЭксцентриситета * Sin(ШиротаВРадианах) 
    	* Cos(ШиротаВРадианах) * РазностьБольшихПолуосей + (Pow(РадиусКривизныПервогоВертикала , 2) / Pow(СреднееБольшаяПолуось , 2) + 1) 
    	* РадиусКривизныПервогоВертикала * Sin(ШиротаВРадианах) * Cos(ШиротаВРадианах) * РазностьКвадратовЭксцентриситетов / 2 
    	- (ПП.ЛинейноеСмещениеОсьАбсцисс * Cos(ДолготаВРадианах) + ПП.ЛинейноеСмещениеОсьОрдинат * Sin(ДолготаВРадианах)) 
    	* Sin(ШиротаВРадианах) + ПП.ЛинейноеСмещениеОсьАппликат * Cos(ШиротаВРадианах)) 
    	- ПП.УгловоеСмещениеОсьАбсцисс * Sin(ДолготаВРадианах) * (1 + СреднееКвадратЭксцентриситета * Cos(2 * ШиротаВРадианах)) 
    	+ ПП.УгловоеСмещениеОсьОрдинат * Cos(ДолготаВРадианах) * (1 + СреднееКвадратЭксцентриситета * Cos(2 * ШиротаВРадианах)) 
    	- ЧислоУгловыхСекундВРадиане * ПП.ДифференциальноеРазличиеМасштабов * СреднееКвадратЭксцентриситета * Sin(ШиротаВРадианах) 
    	* Cos(ШиротаВРадианах);
    	
    	СмещениеДолготыВСекундах 	= ЧислоУгловыхСекундВРадиане / ((РадиусКривизныПервогоВертикала + ВысотаТочки) 
    	* Cos(ШиротаВРадианах)) * (-ПП.ЛинейноеСмещениеОсьАбсцисс * Sin(ДолготаВРадианах) 
    	+ ПП.ЛинейноеСмещениеОсьОрдинат * Cos(ДолготаВРадианах)) + Tan(ШиротаВРадианах) * (1 - СреднееКвадратЭксцентриситета) 
    	* (ПП.УгловоеСмещениеОсьАбсцисс * Cos(ДолготаВРадианах) + ПП.УгловоеСмещениеОсьОрдинат * Sin(ДолготаВРадианах)) 
    	- ПП.УгловоеСмещениеОсьАппликат;
    
    	СмещениеВысоты 				= -СреднееБольшаяПолуось / РадиусКривизныПервогоВертикала * РазностьБольшихПолуосей 
    	+ РадиусКривизныПервогоВертикала * Pow(Sin(ШиротаВРадианах) , 2) * РазностьКвадратовЭксцентриситетов / 2 
    	+ (ПП.ЛинейноеСмещениеОсьАбсцисс * Cos(ДолготаВРадианах) + ПП.ЛинейноеСмещениеОсьОрдинат * Sin(ДолготаВРадианах)) 
    	* Cos(ШиротаВРадианах) + ПП.ЛинейноеСмещениеОсьАппликат * Sin(ШиротаВРадианах) 
    	- РадиусКривизныПервогоВертикала * СреднееКвадратЭксцентриситета * Sin(ШиротаВРадианах) * Cos(ШиротаВРадианах) 
    	* (ПП.УгловоеСмещениеОсьАбсцисс / ЧислоУгловыхСекундВРадиане * Sin(ДолготаВРадианах) 
    	- ПП.УгловоеСмещениеОсьОрдинат / ЧислоУгловыхСекундВРадиане * Cos(ДолготаВРадианах)) 
    	+ (Pow(СреднееБольшаяПолуось , 2) / РадиусКривизныПервогоВертикала + ВысотаТочки) * ПП.ДифференциальноеРазличиеМасштабов;
    	
    	Возврат Новый Структура("Широта,Долгота,Высота", Окр(ШиротаВГрадусах + СмещениеШиротыВСекундах / 3600, Точность), Окр(ДолготаВГрадусах + СмещениеДолготыВСекундах / 3600, Точность), Окр(ВысотаТочки + СмещениеВысоты,3));
    	
    КонецФункции

    Как ни странно, но работает)))

    TamerlanDE, 08 Июня 2012

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

    +153

    1. 1
    http://pastebin.com/KNAhNqJC

    В связи с тем что толстота освоила новую тактику, выпущена очередная версия говнофильтра™.

    * поддержка скрытия постов. Увы, выкинуть пост из выдачи совсем не получится, так что при флуд-атаках будут пустые страницы.
    * альтернативный "мягкий" метод скрытия комментариев - белое на белом.
    * переписано на jQuery, раз уж оно есть на уютненьком ГК.

    Как обычно, заточено под Firefox+GreaseMonkey.

    Vindicar, 08 Июня 2012

    Комментарии (166)
  6. Java / Говнокод #10721

    +102

    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
    public void set...(...){
      ...
      throw INVALID_PARAM;
    }
    public void set...(...){
      ...
      throw INVALID_PARAM;
    }
    public void set...(...){
      ...
      throw INVALID_PARAM;
    }
    
    ...
    private final static Exception INVALID_PARAM=new RuntimeException("Incorrect value!");

    3.14159265, 08 Июня 2012

    Комментарии (70)
  7. JavaScript / Говнокод #10630

    +148

    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
    var isScheduledRadio = $('#ContentPlaceHolder1_FormView1_ctl04_ctl00___IsScheduled_RadioButtonList1_0')[0],
                    isSitnGoRadio = $('#ContentPlaceHolder1_FormView1_ctl04_ctl00___IsScheduled_RadioButtonList1_1')[0],
                    startDateTextBox = $('#ContentPlaceHolder1_FormView1_ctl04_ctl07___StartDate_TextBox1')[0],
                    minPlayersTextBox = $('#ContentPlaceHolder1_FormView1_ctl04_ctl14___MinPlayers_TextBox1')[0],
                    maxPlayersTextBox = $('#ContentPlaceHolder1_FormView1_ctl04_ctl15___MaxPlayers_TextBox1')[0],
                    maxPlayersRequiredValidator = $('#ContentPlaceHolder1_FormView1_ctl04_ctl15___MaxPlayers_RequiredFieldValidator1')[0],
                    maxPlayersRow = $('#ContentPlaceHolder1_FormView1_ctl04_ctl15___MaxPlayers_TextBox1')
                        .parent()
                        .parent()[0],
                    endDateTextBox = $('#ContentPlaceHolder1_FormView1_ctl04_ctl08___EndDate_TextBox1')[0],
                    endDateRequiredValidator = $('#ContentPlaceHolder1_FormView1_ctl04_ctl08___EndDate_RequiredFieldValidator1')[0],
                    endDateRow = $('#ContentPlaceHolder1_FormView1_ctl04_ctl08___EndDate_TextBox1')
                        .parent()
                        .parent()[0],

    Увидел такой код с сорцах ASP.Net страницы

    krikz, 08 Июня 2012

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

    +65

    1. 1
    $new_array = explode('.sep.', implode('.sep', $old_array));

    Полезная функция с http://www.dzone.com/snippets/re-create-array-index

    Anon8yXubeVu, 08 Июня 2012

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

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // Handle Ctrl-1 ... Ctrl-9 keypresses
    if (!event.isSpecialKey() && event.isControlKey()) {
    	final int code = event.getKeyCode();
    	
    	if (code >= '1' && code <= '9') {
    		// Technically, the keyCode is not the ASCII code and should not
    		// be treated as such. Stupid JavaScript events. However, it
    		// *just so happens* that for number keys these codes match their
    		// ASCII codes. Luckily for us.

    someone, 08 Июня 2012

    Комментарии (3)
  10. JavaScript / Говнокод #10627

    +158

    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
    function check_email(_email)
    {
      var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789 ";
      var i = 0, j = 0;
      var match = false;
    
      if (_email.length == 0) {
        return false;
      }
    
      for (i = 0; i < _email.length; i++)
      {
        match = false;
        for (j = 0; j < letters.length; j++)
        {
          if (_email.charAt(i) == letters.charAt(j))
          {
            match = true;
            break;
          }
        }
    
        if (!match)
        {
          if (_email.charAt(i) == '.') {
            match = true;
          }
        }
    
        if(!match) {
          break;
        }
      }
     
      if (i >= _email.length) {
        return false;
      }
     
      if (_email.charAt(i++) != '@') {
        return false;
      }
    
      var dotpassed = false;
    
      while (i < _email.length)
      {
        var match = false;
        for (j = 0; j < letters.length; j++)
        {
          if (_email.charAt(i) == letters.charAt(j))
          {
            match = true;
            break;
          }
        }
     
      if (!match)
      {
        if (_email.charAt(i) == '.')
        {
          dotpassed = true;
          match = true;
        }
      }
    
      if (!match) return false;
      i++;
      }
     if (dotpassed) return true;
     return false;
    }

    в недрах http://astro.smsonline.ru/

    Timon, 08 Июня 2012

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