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

    +117

    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
    if (!authorized)
    {
        // No, "I'm a teapot" is not what we really want, but the BuildMaster security module will
        // replace it with a 401 (which we actually want)
        context.Response.StatusCode = 418;
        context.Response.Write("Not authorized");
        context.Response.AddHeader("WWW-Authenticate", "Basic realm=\"BuildMaster URL Trigger\"");
        context.ApplicationInstance.CompleteRequest();
        return;
    }
    
    ...
    
    context.EndRequest += (s,e) =>
    {
        HttpApplication app = (HttpApplication)s;
        if (app.Context.Response.StatusCode == 418)
            app.Context.Response.StatusCode = 401;
    }

    http://blog.inedo.com/2010/10/12/http-418-im-a-teapot-finally-a-%E2%80%9Clegitimate%E2%80%9D-use/

    Костыль для обхода "шибко умного" поведения ASP.NET Forms Authentication, который меняет код 401 на 302-перенаправление на форму логина. А разработчику нужен именно 401.

    someone, 04 Июля 2013

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

    +130

    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 object Clone()
    {
    	using (MemoryStream stream = new MemoryStream())
    	{
    		BinaryFormatter formatter = new BinaryFormatter();
    		formatter.Serialize(stream, this);
    		stream.Position = 0;
    		ColLink result = (ColLink)formatter.Deserialize(stream);
    		result.Id = IdentityManager.GetId();
    		result.GUID = Guid.NewGuid();
    		result.setEdited();
    		result.setCreated();
    		return result;
    	}
    }

    Клонирование

    dormendo, 04 Июля 2013

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

    +110

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public void UpdateCollection()
    {
        object l = new object();
        lock (l)
        {
            // Обновляем коллекцию
        }
    }

    Эксклюзивная блокировка в действии

    dormendo, 03 Июля 2013

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

    +126

    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
    try
    {
                    var ticketInfo = 
                        WebServicesRepository.XLoginInstance.XLoginTicketHandler(ticket.Ticket);
    
                    if (!(ticketInfo.Errors.Length > 0))
                        FormsAuthenticationUtility.SetAuthCookie(ticketInfo.UserID, ticketInfo.UserLogin, ticketInfo.UserPassword, ticketInfo.Email, false);
    
                    var profile =
                        AccountRepository.GetUserProfile(ticketInfo.Email, ticketInfo.UserPassword) ?? null;
                    var authForm =
                        new AuthenticateForm()
                        {
                            Login = profile.Login,
                            Password = profile.Password,
                            IsPersistent = true
                        };
                    AccountRepository.SignIn(authForm, ref errors);
                }
                catch(Exception e) 
                {
                    log.Error("Автоматическая авторизация", e); 
                };

    Наговнокодил на Asp.net )

    sladkijBubaleh, 02 Июля 2013

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    protected Boolean GetStatus(VinRequestStatusId statusId, Int16 id)
    {
    	if(statusId == VinRequestStatusId.CarDataNeeded && id == 0)
    		return true;
    	if(statusId == VinRequestStatusId.WaitingClientAnswer && id == 1)
    		return true;
    	return false;
    }

    Разработчику гуя лень было лезть в DAL. Наложил прямо на форме.

    TauSigma, 01 Июля 2013

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

    +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
    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
    public static string[] GetLogicalDrives()
    {
    	// System.Environment.GetLogicalDrives()
    	new EnvironmentPermission(PermissionState.Unrestricted).Demand();
    	// System.IO.Directory.GetLogicalDrives()
    	new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
    
    	int logicalDrives = Win32Native.GetLogicalDrives();
    	if (logicalDrives == 0)
    	{
    		__Error.WinIOError();
    	}
    	uint num = (uint)logicalDrives;
    	int num2 = 0;
    	while (num != 0u)
    	{
    		if ((num & 1u) != 0u)
    		{
    			num2++;
    		}
    		num >>= 1;
    	}
    	string[] array = new string[num2];
    	char[] array2 = new char[]
    	{
    		'A',
    		':',
    		'\\'
    	};
    	num = (uint)logicalDrives;
    	num2 = 0;
    	while (num != 0u)
    	{
    		if ((num & 1u) != 0u)
    		{
    			array[num2++] = new string(array2);
    		}
    		num >>= 1;
    		char[] expr_6E_cp_0 = array2;
    		int expr_6E_cp_1 = 0;
    		expr_6E_cp_0[expr_6E_cp_1] += '\u0001';
    	}
    	return array;
    }

    Копался сегодня в дебрях .NET'а и нашёл 2 метода получения списка дисков:
    System.Environment.GetLogicalDrives() и System.IO.Directory.GetLogicalDrives()
    Различается код только первой срокой запроса разрешений.

    Если один метод устарел-бы, то можно было его форварднуть через атрибут TypeForwardedTo.
    Или хотя-бы объединить код вынеся запрос разрешений.

    Оба метода доступны ещё с .NET 1.1. Но вот класс DriveInfo, который появился только в .NET 2.0 использует метод Directory.GetLogicalDrives()

    Это такая "фича" с копипастом кода или тут есть какой-то сакральный смысл?

    TauSigma, 25 Июня 2013

    Комментарии (13)
  7. C# / Говнокод #13229

    +133

    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
    private bool IsSubscriptionFree()
    {
        try
        {
            if (AccountManager.CurrentManager.CurrentSubscription != null)
            {
                if (AccountManager.CurrentManager.CurrentSubscription.IsValid)
                {
                    if (AccountManager.CurrentManager.CurrentSubscription.Name.ToLower().Contains("free") ||
                        AccountManager.CurrentManager.CurrentSubscription.Name.ToLower().Contains("trial")
                    )
                    {
                        return true;
                    }
                }
                return false;
            }
            return false;
        }
        catch (Exception)
        {
            return false;
        }
    }

    Eugene, 25 Июня 2013

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

    +140

    1. 1
    2. 2
    3. 3
    innotracOrder.OrderShipTo = new PostOrderBatchRequestOrderBatchCustomerOrderOrderShipTo[] { innotracShipTo };
                var innotracPayment = new PostOrderBatchRequestOrderBatchCustomerOrderPayment();
                var innotracCreditCard = new PostOrderBatchRequestOrderBatchCustomerOrderPaymentCreditCard();

    Код древних ацтеков

    startrack, 21 Июня 2013

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

    +129

    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
    static string BuildPostData(IDictionary<string, string> d)
    {
            var s = "";
            for (var i = 0; i < d.Count; i++)
            {
                 var item = d.ElementAt(i);
                 var key = item.Key;
                 var val = item.Value;
    
                 s += String.Format("{0}={1}", key, HttpUtility.UrlEncode(val));
    
                 if (i != d.Count - 1)
                     s += "&";
            }
            return s;
    }

    Встретил вот такое.... переписал кодом ниже. Меньше мусора и работает намного быстрее.
    static string BuildPostData(IEnumerable<KeyValuePair<s tring, string>> d)
    {
    return string.Join("&", d.Select(i => string.Format(CultureProvider.Common, "{0}={1}", i.Key, HttpUtility.UrlEncode(i.Value))));
    }

    indigo_projects, 19 Июня 2013

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

    +134

    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
    while (true)
    {
     try
     {
      MapControlStatic.Remove(MapControlStatic.First(o => o.Value.thisControl == c).Key);
     }
     catch
     {
       break;
     }
    }
    
    while (true)
    {
     try
     {
      MapControlStatic.Remove(MapControlStatic.First(o => o.Value.Childs.Contains(c)).Key);
     }
     catch
     {
       break;
     }
    }

    taburetka, 17 Июня 2013

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