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

    +105

    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
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    
    
    namespace GisClient
    {
        class EntryPoint
        {
            static void Main()
            {
                TcpClient TcpCli = new TcpClient("127.0.0.1", 15800);
                NetworkStream ns = TcpCli.GetStream();
                
                PacketStructure obj = new PacketStructure();
                obj.CommandOptions = 0x80; //What's this shit??? 0x80 , what's Encoding??? What 0x80 equals to?
    
                obj.Write2Net(ns);
                obj.ReadFromNet(ns);
            }
        }
    
        class PacketStructure
        {
            UInt32 PacketId = 0x35534947;
            Guid UserId = new Guid();
            
            public byte CommandOptions = 0;
            UInt32 CommandSize = 0;
    
            byte[] Reserved = new byte[3];
    
    
            public void Write2BufferStream(MemoryStream ms)
            {
                //PacketId || Length - 4 || Type - UInt32
                ms.Write(BitConverter.GetBytes(PacketId), 0, 4);
                //UserId || Length - 16 || Type - byte[16]
                ms.Write(UserId.ToByteArray(), 0, 16);
                //Command Options || Length - 1 || byte
                ms.Write(BitConverter.GetBytes(CommandOptions), 0, 1);
                //Command Size || Length - 4 || Int32
                ms.Write(BitConverter.GetBytes(CommandSize), 0, 4);
                //Reserved space || Length - 3 || byte[3]
                ms.Write(Reserved, 0, 3);
                //CRC32 - control summary
                ms.Write(BitConverter.GetBytes(CRC32.BytesCrc(ms.ToArray())), 0, 4);
            }
    
            public void Write2Net(NetworkStream ns)
            {
                MemoryStream ms = new MemoryStream();
    
                Write2BufferStream(ms);
    
                byte[] A = ms.ToArray();
                ns.Write(A, 0, (int)ns.Length);
            }
    
            public void ReadFromNet(NetworkStream ns)
            {
                byte[] B = new byte[32];
    
                ns.Read(B, 0, (int)ns.Length);
    
                PacketId = BitConverter.ToUInt32(B, 0); //??????? lolwhat?????!!!!!111
    
                byte[] C = new byte[16];
    
                for (int i = 0; i < 16; i++)
                {
                    C[i] = C[i + 4];
                }
    
                foreach (int i in C)
                {
                    Console.WriteLine(i);
                    Console.ReadLine();
                }
    
                UserId = new Guid(C);
    
                CommandOptions = B[20]; // Why no BitConverter?????!!!!!
    
                CommandSize = BitConverter.ToUInt32(B, 21); // The end of CommandSize IS NOT SET!!!!1111
    
                for (int i = 0; i < 3; i++) Reserved[i] = B[i + 25]; // A[0] = Packet[0 + 25] IF i = 0 THEN i++
    
                Console.ReadLine();
            }
    
        }
    }

    Код с работы, вот так вот мы отслыаем и принимаем пакеты по TCP.
    Комменатрии особенно доставляют удовольствие :)

    sergylens, 12 Июля 2010

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

    +119

    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
    private static int inv_mod(int x, int y) 
    {
        int q = 0;
        int u = x;
        int v = y;
        int a = 0;
        int c = 1;
        int t = 0;
    
        do 
        {
            q = v/u;
    
            t = c;
            c = a-q*c;
            a = t;
    
            t = u;
            u = v-q*u;
            v = t;
        }
        while( u != 0 );
    
        a = a%y;
        if( a < 0 ) a = y+a;
    
        return a;
    }

    Кусок кода из Microsoft Enterprise Library 5.0 - Hands On Labs: Logging Application Block

    asilmacc, 11 Июля 2010

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

    +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
    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
    static int ReadEvent (byte [] source, int off, int size, out InotifyEvent evt)
    {
        evt = new InotifyEvent ();
        if (size <= 0 || off > size - 16) {
            return -1;
        }
    
        int len;
        if (BitConverter.IsLittleEndian) {
            evt.WatchDescriptor = source [off] + (source [off + 1] << 8) +
                        (source [off + 2] << 16) + (source [off + 3] << 24);
            evt.Mask = (InotifyMask) (source [off + 4] + (source [off + 5] << 8) +
                        (source [off + 6] << 16) + (source [off + 7] << 24));
            // Ignore Cookie -> +4
            len = source [off + 12] + (source [off + 13] << 8) +
                (source [off + 14] << 16) + (source [off + 15] << 24);
        } else {
            evt.WatchDescriptor = source [off + 3] + (source [off + 2] << 8) +
                        (source [off + 1] << 16) + (source [off] << 24);
            evt.Mask = (InotifyMask) (source [off + 7] + (source [off + 6] << 8) +
                        (source [off + 5] << 16) + (source [off + 4] << 24));
            // Ignore Cookie -> +4
            len = source [off + 15] + (source [off + 14] << 8) +
                (source [off + 13] << 16) + (source [off + 12] << 24);
        }
    
        if (len > 0) {
            if (off > size - 16 - len)
                return -1;
            string name = Encoding.UTF8.GetString (source, off + 16, len);
            evt.Name = name.Trim ('\0');
        } else {
            evt.Name = null;
        }
    
        return 16 + len;
    }

    Mono, обёртка вокруг INotify (вокруг папки INotify создаёт поток (файл?), который нужно с помощью read читать в буфер, и в буфере будет лежать объект-событие в говносериализованной форме).

    Давно столько магических чисел в одном месте не видел o_O

    Можно ли в C# решить элегантнее?
    Аналог всего этого кода на Си: struct inotify_event *event = ( struct inotify_event*) &buffer[i]

    cfdev, 11 Июля 2010

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

    +110

    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
    void BubbleSort(dynamic arr)
    {
        for (int i = arr.Length - 1; i > 0; i--)
        {
            for (int j = 0; j < i; j++)
            {
                if (arr[j] > arr[j + 1])
                {
                    int t = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = t;
                }
            }
        }
    }

    Обобщенное программирование (:
    Видел на одно форуме в теме operator constraint

    HIMen, 11 Июля 2010

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

    +108

    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
    class Matrix
    {
        double[,] matrix;
        int rows, columns;
    
        // Не вызывается до закрытия приложения
        ~Matrix()
        {
            Console.WriteLine("Finalize");
        }
    
        public Matrix(int sizeA, int sizeB)
        {
            rows = sizeA;
            columns = sizeB;
            matrix = new double[sizeA, sizeB];
        }
    
        // Индексатор для установки/получения элементов внутреннего массива
        public double this[int i, int j]
        {
            set { matrix[i,j] = value; }
            get { return matrix[i,j]; }
        }
    
        // Возвращает число строк в матрице
        public int Rows
        {
            get { return rows; }
        }
    
        // Возвращает число столбцов в матрице
        public int Columns
        {
            get { return rows; }
        }
    
    }

    Нашёл в статье из MSDN'а

    FMB, 10 Июля 2010

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

    +118

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void isCollideWith(gObj obj, ref bool xCollision, ref bool yCollision)
    {
    	xCollision = (obj.bounds.Top <= this.bounds.Center.Y && this.bounds.Center.Y <= obj.bounds.Bottom) &&
        		     (obj.bounds.Top > this.bounds.Top && obj.bounds.Top < this.bounds.Bottom) ||
    		     (obj.bounds.Bottom > this.bounds.Top && obj.bounds.Bottom < this.bounds.Bottom);
    	yCollision = (obj.bounds.Left <= this.bounds.Center.X && this.bounds.Center.X <= obj.bounds.Right) &&
    		     (obj.bounds.Left > this.bounds.Left && obj.bounds.Left < this.bounds.Right) ||
    		     (obj.bounds.Right > this.bounds.Left && obj.bounds.Right < this.bounds.Right);
    }

    Вот так я проверяю произошло ли столкновения двух(obj и this) прямоугольных объектов.

    FMB, 08 Июля 2010

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

    +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
    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
    public string ChangeName(string temp)
            {
                if (textbox2.Checked)
                {
                    if (temp == "Алексей")
                    {
                        temp = "Лёх";
                    }
                    if (temp == "Александр")
                    {
                        temp = "Санёк";
                    }
                    if (temp == "Александра")
                    {
                        temp = "Саша";
                    }
                    if (temp == "Анатолий")
                    {
                        temp = "Толик";
                    }
                    if (temp == "Андрей")
                    {
                        temp = "Андрюх";
                    }
                    if (temp == "Антон")
                    {
                        temp = "Тоха";
                    }
                    if (temp == "Борис")
                    {
                        temp = "Борь";
                    }
                    if (temp == "Валерий")
                    {
                        temp = "Валер";
                    }
                    if (temp == "Валерия")
                    {
                        temp = "Лер";
                    }
                    if (temp == "Василий")
                    {
                        temp = "Вась";
                    }
                    if (temp == "Виктор")
                    {
                        temp = "Витёк";
                    }
                    if (temp == "Владимир")
                    {
                        temp = "Вован";
                    }
                    if (temp == "Евгений")
                    {
                        temp = "Жека";
                   }
    ....
                }
                return temp;
            }

    Склоняем имя=\

    BlincAttack, 06 Июля 2010

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

    +107

    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
    private PostsPageViewModel GetUserPosts(Guid userId, int? pageIndex)
    {
    	var posts = entitiesDB.Posts
    		.Where(post => post.UserId == userId)
    		.OrderByDescending(p => p.DateCreated)
    		.Select(post => new PostViewModel()
    		{ 
    			Contents = post.Contents, 
    			DateCreated = post.DateCreated, 
    			PostId = post.PostId, 
    			AuthorId = userId,
    			AssociatedTags = post.Tags.Select(t => new TagViewModel() { TagId = t.TagId, Contents = t.Contents }).ToList()
    		})
    		.ToPagedList(pageIndex ?? 1, 10);
    
    	PostsPageViewModel viewModel = new PostsPageViewModel()
    	{
    		Posts = posts,
    		RouteValues = new { controller = "Posts", action = "UserPosts" }
    	};
    
    	return viewModel;
    }

    Проект под ASP.NET MVC. Метод должен вернуть в вид заданную страницу постов из базы для заданного юзверя, посортить и прицепить ассоциированные с сообщением теги. Мало того, что это всё в одном операторе, так оно ещё и крашится.

    eigenein, 06 Июля 2010

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

    +116

    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
    public void Parse(string sqlScript)
    {
    	batches = new List<string>();
    	State state = State.WaitingGO;
    	StartNewBatch();
    	for(position = 0; position < sqlScript.Length; position++)
    	{
    		char c = sqlScript[position];
    		if(state == State.WaitingGO)
    		{
    			PutToBuffer(c);
    			if(IsWhiteSpace(c) || IsEndOfLineCharacter(c)) continue;
    			else if(c == 'g' || c == 'G') state = State.ReadingGO;
    			else
    			{
    				state = State.ReadingBatch;
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadingGO)
    		{
    			PutToBuffer(c);
    			if(c == 'o' || c == 'O') state = State.ReadedGO;
    			else if(IsEndOfLineCharacter(c))
    			{
    				state = State.WaitingGO;
    				FlushBuffer();
    			}
    			else
    			{
    				state = State.ReadingBatch;
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadedGO)
    		{
    			if(IsWhiteSpace(c) || IsEndOfLineCharacter(c))
    			{
    				state = State.WaitingGO;
    				FinishBatch();
    				StartNewBatch();
    			}
    			else
    			{
    				state = State.ReadingBatch;
    				PutToBuffer(c);
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadingBatch)
    		{
    			PutToBatch(c);
    			if(IsEndOfLineCharacter(c)) state = State.WaitingGO;
    		}
    	}
    	if(state != State.ReadedGO) FlushBuffer();
    	FinishBatch();
    }
    
    private enum State
    {
    	WaitingGO,
    	ReadingGO,
    	ReadedGO,
    	ReadingBatch
    }

    Требовалось распарсить string с sql-текстом на отдельные транзакции (т.е. просто разбить текст по go).
    Функции для работы с Batch-ем не привожу и так уйма говнокода

    FedorFo, 02 Июля 2010

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

    +102

    1. 1
    2. 2
    3. 3
    long First = 2* ... ;
    long Second = 2* ... ;
    long Average = (First + Second) / 2

    1.як не треба рахувати середнє арифметичне.
    2.БАЯН.

    O_O, 02 Июля 2010

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