1. Лучший говнокод

    В номинации:
    За время:
  2. Python / Говнокод #27865

    +2

    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
    def export_to_csv(model, fields=None, related_models=[]):
        def export(request):
            meta = model._meta
            queryset = model.objects.all()
            
            if fields is not None:
                field_names = fields
            elif 'Shops' in related_models and 'Spots' in related_models:
                field_names = [field.name for field in Shops._meta.fields] +\
                    [field.name for field in Spots._meta.fields]
            elif 'Products' in related_models and 'Spots' in related_models:
                field_names = [field.name for field in Products._meta.fields] +\
                    [field.name for field in Spots._meta.fields]
            else:
                field_names = []
                for field in meta.fields:
                    if not field.name in FORBIDDEN_FIELDS:
                        field_names.append(field.name)
    
            response = HttpResponse(content_type='text/csv')
            response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta)
            response.write(u'\ufeff'.encode('utf8'))
    
            writer = csv.writer(response, delimiter=',', lineterminator='\n', quoting=csv.QUOTE_ALL, dialect='excel')
            writer.writerow(field_names)
    
            if len(related_models) == 0:
                for obj in queryset:
                    row = writer.writerow([getattr(obj, field) for field in field_names])
    
            elif 'Shops' in related_models and 'Spots' in related_models:
                shops_fields = [field.name for field in Shops._meta.fields]
                contact_fields = [field.name for field in Spots._meta.fields]
    
                for obj in queryset:
                    row = []
    
                    if obj.Shops is not None:
                        row += [getattr(obj.Shops, field) for field in shops_fields]
                    else:
                        row += ['' for field in shops_fields]
    
                    if obj.Contact is not None:
                        row += [getattr(obj.Contact, field) for field in contact_fields]
                    else:
                        row += ['' for field in contact_fields]
    
                    writer.writerow(row)
                
            elif 'Products' in related_models and 'Spots' in related_models:
                products_fields = [field.name for field in Products._meta.fields]
                contact_fields = [field.name for field in Spots._meta.fields]
                
                for obj in queryset:
                    row = []
                    
                    if obj.Products is not None:
                        row += [getattr(obj.Products, field) for field in products_fields]
                    else:
                        row += ['' for field in products_fields]
    
                    if obj.Contact is not None:
                        row += [getattr(obj.Contact, field) for field in contact_fields]
                    else:
                        row += ['' for field in contact_fields]
                    
                    writer.writerow(row)
    
            return response
    
        return export

    В юности нагородила вот такую портянку для экспорта в csv связных между собой таблиц. Связка данных на уровне DAO-шки (в терминологии Джанго - Managers)? Пфф... Только инжект if-else с копипастой связки данных, только хардкор!

    JaneBurt, 11 Декабря 2021

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

    +138

    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
    В этой статье я расскажу как сделать дополнительный поток в программе.
    
    Приступим.
    
    1. Создаём форму
    2. Кидаем на форму кнопку со вкладки Standart
    3. Кидаем на форму Memo со вкладки Standart
    
    Переходим в код и после
    
    private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    Пишем следующие:
     
    TVANSThread=class(TThread) 
      Private
        Protected
          Procedure Execute; override;
      Public
        Constructor Create(CreateSuspended: boolean);
      end;
    
    
    Далее кликаем по строчке Constructor Create(CreateSuspended: boolean); и жмём сочентание клавиш Ctrl+Shift+C
    
    После чего должно появится следующие:
    
    
    constructor TVANSThread.Create(CreateSuspended: boolean);
    begin
    
    end;
    
    В эту процедуру вписываем следующею строчку:
    
    inherited Create(CreateSuspended);
    
    Прокрутим чуть ниже и увидим процедуру TVANSThread.Execute;
    Она выглядит так:
    
    procedure TVANSThread.Execute;
    begin
    
    end;
    
    В неё вписываем следующий код:
    
    for i:=0 to 10000 do Form1.Memo1.Lines.Add(IntToStr(i))
    
    И не забываем о переменных:
    
    var i:integer;
    
    Далее кликаем по кнопке и вписываем следующий код:
    
    TVANSThread.Create(false);

    Анальный урок.
    Автор - анальный учитель с сайта www.vans-soft.ru/

    Stertor, 04 Июля 2013

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

    +163

    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 SomeMethod(void) {
      const int a, b;
     // ...
      struct {
        const int a, &b;
        lambda(const int a, const int &b) : a(a), b(b) {}
        // весь огород ради operator()
        const int operator()(const int x) { return SomeCalculation(a, b, x); }
      } lambda(a, b);
     //... 
      someContainer.SomeGroupOperation(lambda);
      a++; b++;
      someContainer.SomeGroupOperation(lambda);
    //  ...
    };

    Быстрее бы мы перевели все проекты в нашем отделе под новый стандарт С++0х, а то огородная реализация лямбд по всему проекту уже надоела.

    Говногость, 16 Июня 2010

    Комментарии (330)
  5. ActionScript / Говнокод #17911

    −91

    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 l:uint = 0;
    			var product:Vector.<IProduct> = new Vector.<IProduct>;
    			if (programmers.length > designers.length)
    			{
    				l = designers.length;
    			}
    			else if (programmers.length < designers.length)
    			{
    				l = programmers.length;
    			}
    			else
    			{
    				l = programmers.length;
    			}

    nightrain912, 02 Апреля 2015

    Комментарии (329)
  6. PHP / Говнокод #17915

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    $res = $link->query("SELECT * FROM BetaTesters WHERE email='".$_POST['email']."'");
        if($row = mysqli_fetch_array($res))
        {
         $result['message'] = "<p>Емейл уж используется!</p>";

    skydev, 02 Апреля 2015

    Комментарии (328)
  7. Куча / Говнокод #27844

    +1

    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
    * https://github.com/nwchemgit/nwchem/blob/8ac6bc6856d50954029cad01a751006851682398/src/nwpw/pspw/lib/psi/psi.F#L324
    
          subroutine psi_sort_f_orb()
          implicit none
    #include "errquit.fh"
    
    #include "bafdecls.fh"
    #include "psi.fh"
    
          logical value
          integer i,j,ii,jj,ms
          integer r1(2)
          real*8  ei,ej
    
          value = BA_push_get(mt_dcpl,npack1,'r1',r1(2),r1(1))
          if (.not. value) call errquit(
         >     'psi_sort_f_orb: out of stack memory',0,MA_ERR)
    
          do ms=1,ispin
    
            !*** Bubble sort ***
            do ii=1,ne(ms)
             do jj=ii+1,ne(ms)
               i = ii + (ms-1)*ne(1)
               j = jj + (ms-1)*ne(1)
               ei = dbl_mb(eig(1)+i-1)
               ej = dbl_mb(eig(1)+j-1)
    
               !*** swap ***
               if (ej.lt.ei) then
                 dbl_mb(eig(1)+i-1) = ej
                 dbl_mb(eig(1)+j-1) = ei
                 call Pack_c_Copy(1,dcpl_mb(psi1(1)+(i-1)*npack1),
         >                          dcpl_mb(r1(1)))
                 call Pack_c_Copy(1,dcpl_mb(psi1(1)+(j-1)*npack1),
         >                          dcpl_mb(psi1(1)+(i-1)*npack1))
                 call Pack_c_Copy(1,dcpl_mb(r1(1)),
         >                          dcpl_mb(psi1(1)+(j-1)*npack1))
               end if
    
             end do
            end do
    
          end do
    
          value = BA_pop_stack(r1(2))
          if (.not. value) call errquit(
         >     'psi_sort_f_orb: popping stack memory',1, MA_ERR)
          return
          end

    Сортировка пузырьком на фортране из пакета квантовохимических вычислений "NWChem"

    j123123, 30 Ноября 2021

    Комментарии (326)
  8. Куча / Говнокод #24868

    −12

    1. 1
    Политота #5

    #1: https://govnokod.ru/15804 http://govnokod.xyz/_15804/ (не открывается)
    #2: https://govnokod.ru/19910 http://govnokod.xyz/_19910/
    #3: https://govnokod.ru/23643 http://govnokod.xyz/_23643/
    #4: https://govnokod.ru/24822 (потер пидарас сракер) http://govnokod.xyz/_24822/

    Русня, сасай!

    syoma, 07 Октября 2018

    Комментарии (326)
  9. Си / Говнокод #13050

    +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
    void main(void)
    {
    	int a1,a2,a3,a4,a5,a6,a7,a8,a9;
    	int b1,b2,b3,b4,b5,b6,b7,b8,b9;
    	int c1,c2,c3,c4,c5,c6,c7,c8,c9;
    	int d1,d2,d3,d4,d5,d6,d7,d8,d9;
    	int e1,e2,e3,e4,e5,e6,e7,e8,e9;
    	int f1,f2,f3,f4,f5,f6,f7,f8,f9;
    	int g1,g2,g3,g4,g5,g6,g7,g8,g9;
    	int h1,h2,h3,h4,h5,h6,h7,h8,h9;
    	int i1,i2,i3,i4,i5,i6,i7,i8,i9;
    
    ....
    
    }

    Когда-то когда я еще не знала о существовании массивов.... это начало программы для решения судоку.
    В продолжении этого были определены еще 729 переменных для вариантов решения.

    Daiver, 25 Мая 2013

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Товарищи, недавно у меня была возможность покодить на арестованных сях: синтаксис в принципе 
    не очень сложный, да и возможности широкие. 
    Так вот, у меня возник вопрос: стоит ли учить си-за-решеткой в противовес Delphi 8 (идет под .NET)?
    Дело в том.  что Си для меня язык новый, а с Delphi я более менее знаком. 
    
    Хочу заранее попросить: пожалуйста, никаких споров о преимуществах языков. 
    Вопрос стоит не о том, что лучше,  а о том, сравним ли по возможностям компилятор Delphi 8 .NET с C#.

    Stertor, 01 Сентября 2013

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

    +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
    20. 20
    #include <stdio.h>
     
    typedef void(* file_handler_t)(FILE* fileHandle);
     
    void using_file(FILE* fileHandle, file_handler_t fileHandler/*a*/)
    {
        if(!fileHandle)
            return;
        fileHandler(fileHandle);
        fclose(fileHandle);
    }
     
    int main(void) {
        using_file(fopen("myfile.txt","w"),
            ({void body(FILE* fileHandle) {
                /*пишем в fileHandle;*/
            }; body;})//b
        );
            return 0;
    }

    Постю код в защиту курочки от нападок Тараса про автодестукторы. Уникальные виды куриц нужно оберегать, сохранять и защищать.
    Курочка об gnuцицизмы уже зашкварился так что будем стоять на своем до конца. Главное чтобы он свой не отстоял, а то потом не встанет.
    http://ideone.com/2zRuK0

    В позицию /*a*/ можно добавить параметр, деструктирующий объект должным образом. И соответственно оформить using_file как USING макросом, чтобы можно было деструктить объекты не только типа FILE* но и любых других. В макросе вполне при этом может понадобится гнутый typeof, но у нас и так зашквар, так что уже не важно. Так же для полной универсальности можно добавить параметр, определяющий неуспешность открытия объекта, чтобы вместо if(!fileHandle) был if(predicate(fileHandle)). Но конечно при этом лучше просто сделать 2 варианта макроса: обобщенный и с предикатом по умолчанию логическое отрицание.

    Вместо некрасивой позиции //b лучше завести макрос, эмитирующий нормальную красивую человеческую лямбду.

    LispGovno, 16 Июня 2013

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