1. Куча / Говнокод #20870

    +352

    1. 1
    15000 гет!

    Багровые войны гетам не помеха.

    15k_user_get, 19 Августа 2016

    Комментарии (157)
  2. Python / Говнокод #20869

    +1345

    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
    # Далее перечислены все флаги, с помощью которых выбирается то или иное поведение различных копий сайтов.
    #
    # INSTANCE_SPECIFIC_DJANGO_DEBUG
    #     В какое значение установить DEBUG переменную Джанго (желтые страницы с ошибками 500).
    #     True - показывать желтые страницы (для копий программистов)
    #     False - не показывать (вместо этого показаь 500.html шаблон) - для боевой копии
    #
    # INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC
    #     Надо ли в Урл Паттернс Джанги добавить media и static и обслуживать их Джангой
    #     True - да, используется для копии сайта программистов
    #     False - нет, используется для демонстрационной и боевой копии
    #     (там nginx обрабатывает статику и STATIC_URL в этом случае будет такой чтобы указывать на nginx)
    
    # Все копии программистов. Что значает эта секция см. комменты чуть выше.
    if INSTANCE_ROOT.startswith('/var/www/elin_800'):
        INSTANCE_SPECIFIC_DJANGO_DEBUG = True
        INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC = True
    
    # Демонстрационная копия. Что значает эта секция см. комменты чуть выше.
    elif INSTANCE_ROOT == '/var/www/dev.example.ru':
        INSTANCE_SPECIFIC_DJANGO_DEBUG = False
        INSTANCE_SPECIFIC_DJANGO_DEBUG_STATIC = False

    Файл настроек джанги, доставшийся мне от аутсорсера

    defaultvoice, 19 Августа 2016

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

    +2009

    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
    KeyFactory keyFactory = new KeyFactory();
    KeyObj keyObj = keyFactory.getKeyObj(wParam);
    keyObj.doStuff();
    
    
    class VK_F11 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class VK_F12 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class KeyFactory {
       public KeyObj getKeyObj(int param) {
          switch(param) {
             case VK_F11:
                return new VK_F11();
             case VK_F12:
                return new VK_F12();
          }
          throw new KeyNotFoundException("Key " + param + " was not found!");
       }
    }

    Казалось бы, что может быть проще работы с GPIO?

    CYB3R, 19 Августа 2016

    Комментарии (4)
  4. Java / Говнокод #20866

    +2591

    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
    KeyFactory keyFactory = new KeyFactory();
    KeyObj keyObj = keyFactory.getKeyObj(wParam);
    keyObj.doStuff();
    
    
    class VK_F11 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class VK_F12 extends KeyObj {
       boolean val;
       public void doStuff() {
          val = !val;
       }
    }
    
    class KeyFactory {
       public KeyObj getKeyObj(int param) {
          switch(param) {
             case VK_F11:
                return new VK_F11();
             case VK_F12:
                return new VK_F12();
          }
          throw new KeyNotFoundException("Key " + param + " was not found!");
       }
    }

    Казалось бы, что может быть проще работы с GPIO?

    CYB3R, 19 Августа 2016

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

    +1514

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    [151] ns-flow-pair-entry(n,c) ::= ns-flow-pair-yaml-key-entry(n,c)
                                    | c-ns-flow-map-empty-key-entry(n,c)
                                    | c-ns-flow-pair-json-key-entry(n,c)
    [152] ns-flow-pair-yaml-key-entry(n,c) ::= ns-s-implicit-yaml-key(flow-key)
                                               c-ns-flow-map-separate-value(n,c)
    [153] c-ns-flow-pair-json-key-entry(n,c) ::= c-s-implicit-json-key(flow-key)
                                                 c-ns-flow-map-adjacent-value(n,c)
    [154] ns-s-implicit-yaml-key(c) ::= ns-flow-yaml-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */
    [155] c-s-implicit-json-key(c) ::= c-flow-json-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */

    If the “?” indicator is omitted, parsing needs to see past the implicit key to recognize it as such. To limit the amount of lookahead required, the “:” indicator must appear at most 1024 Unicode characters beyond the start of the key. In addition, the key is restricted to a single line.

    Note that YAML allows arbitrary nodes to be used as keys. In particular, a key may be a sequence or a mapping. Thus, without the above restrictions, practical one-pass parsing would have been impossible to implement.


    Столкнулся, значит, с проблемой. ЙАМЛ парсер для Го не может распарсить даже примеры из спецификации.
    Заглянул в исходники - ад и погибель. Копипаста сишного кода из libyaml с косметическими изменениями. Функции по 200+ строк с кучей ифов, регулярками и т.п. Решил заглянуть в спецификацию в надежде, что может можно самому как-то... в спецификации - ад и погибель. Копипаста с грамматическими ошибками, и тьма их. Ну а как дошел до этого места, так сразу и понял, что тут уже делать больше нечего.

    wvxvw, 19 Августа 2016

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

    +452

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    const CHANGE_TYPE_ADD        = 'add';//add elem in groups
        const CHANGE_TYPE_CHANGE    = 'change';//add elem
        const CHANGE_TYPE_RECHANGE    = 'rechange';//edit elem
        const CHANGE_TYPE_EDIT        = 'edit';//delete element from groups
        const CHANGE_TYPE_DEL        = 'del';//delete element

    Кручу-верчу, запутать хочу

    _dk, 19 Августа 2016

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

    −256

    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
    var handler = new HttpClientHandler
    {
        Proxy = usingProxy ? new WebProxy(proxyURI) : null,
        UseProxy = usingProxy,
        UseCookies = true,
        CookieContainer = new CookieContainer()
    };
    
    if (session != null)
    {
        handler.CookieContainer.Add(new Uri(URL), new Cookie("PHPSESSID", session));
    }
    
    using (var client = new HttpClient(handler))
    {
        var content = new FormUrlEncodedContent(postParams);
        var responseTask = client.PostAsync(url, content);
        responseTask.Wait();
    
        var responseStringTask = responseTask.Result.Content.ReadAsStringAsync();
        responseStringTask.Wait();
    
        var cookies = handler.CookieContainer.GetCookies(new Uri(URL));
        session = cookies["PHPSESSID"].Value;
    
        return responseStringTask.Result;
    }

    Синхронный асинхронный код.

    Antibagor_100, 19 Августа 2016

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

    −320

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    string Char2Hex(char ch)
    {
    	StringWriter w = new StringWriter();
    	w.Write("\\u{0:x4}", (int)ch);
    	return w.ToString();
    }

    d_fomenok, 19 Августа 2016

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

    +366

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    var organizations =
                test.ExtensionInformation.Cast<object>()
                .Select(ext => ext as GenericPair<string, string>)
                .Where(pair => pair.first == "{$idSenderOrganization}")
                .Where(pair =>
                           {
                               int o_O;
                               return int.TryParse(pair.second, out o_O);
                           })
                .Select(_ => int.Parse(_.second));

    laMer007, 19 Августа 2016

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

    +262

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define e if
    #define h while
    #define s return
    #define v NULL
    #define r else
    #define u case
    #define C switch
    #define D for
    #define L0 typedef
    #define L int
    L0 char S;L0 S*Z;L0 Z*U;L0 double N;
    L0 struct Q{L Z;union{N b;S c;}M;struct Q*w;struct Q*q;}Q;
    Q*K(L w){Q*n=(Q*)malloc(sizeof(Q));e(v==n)exit(1);n->Z=w;s n;}
    void A(Z g,U t){h(' '==*g)g++;*t=g;}
    Q*V(Z g,U t){Q*n=K(2);n->M.b=strtod(g,t);s n;}
    Q*I(Z g,U t){e('+'!=*g)s v;Q*n=K(1);n->M.c='+';++*t;s n;}
    Q*W(Z g,U t){e('x'!=*g)s v;Q*n=K(20);g++;e(*g<'0'||*g>'9'){n->M.b=1;*t=g;}r{n->M.b=strtod(g,t);e(*t==g)n->M.b=1;}s n;}
    Q*J(Z g,U t){Q*n,*p=v;h(*g){A(g,&g);Q*l=V(g,&g);A(g,&g);Q*m=W(g,&g);Q*o;e(v==m)o=l;r{o=K(1);o->M.c='*';o->w=l;o->q=m;}e(v==p)n=o;r{p->w=n;p->q=o;n=p;}A(g,&g);p=I(g,&g);e(v==p){*t=g;s n;}}}
    Q**E(Z g){L n=1,i;Z t=g;h(*t){e(';'==*t)n++;t++;}Q**R=(Q**)malloc((n+1)*sizeof(Q*));e(v==R)s v;D(i=0;i<n;++i){R[i]=J(g,&g);e(*g!=';'&&*g!=0)s v;e(v==R[i])s v;g++;}R[n]=v;s R;}
    N P(Q*I,N a){C(I->Z){u 1:C(I->M.c){u '+':s P(I->w,a)+P(I->q,a);u '*':s P(I->w,a)*P(I->q,a);u '/':s P(I->w,a)/P(I->q,a);u '-':s P(I->w,a)-P(I->q,a);}u 2:s I->M.b;u 20:s pow(a,I->M.b);}}
    N O(Q*I){N x=0,y=1,z=2,Z=P(I,x),X=P(I, y),H=P(I,z),j=1e-10;L i;D(i=0;i<100&&fabs(z-y)>j&&fabs(x-y)>j&&fabs(X)>j;i++){e(Z*X<0){z=y;H=X;}r e(H*X<0){x=y;Z=X;}r{N d=z-x;x=x-d;z=z+d;Z=P(I,x);X=P(I,y);}y=(z+x)/2;X=P(I,y);}s y;}
    Z B(Q**A){L n=0,i,j,d=0;D(;A[n]!=v;n++);Z M=(Z)malloc(n*10+1);e(v==M)s v;D(i=0;A[i]!=v;i++)D(j=0;j<10;j++){
      M[i*10+j-d]=(S)fmod(12.51*O(A[i])+j*17,256);
    e(!M[i*10+j-d])d++;}M[n*10-d]=0;s M;}
    L T(Z g,Z M){Z k=M;h(*g){*g++^=*k++;e(!*k)k=M;}s(0);}
    L main(void){
        Q**n=E("2.0x5+6.2x2+7;0.3x6.1+6x5+1");
        L i;
        Z k=B(n);
        S w[]={-91,-35,97,113,89,37,113,32,28,-10,124,67,93,32,123,70,63,-19,-71,-123,-114,45,109,64,96,57,13,7,-91,0};
        T(w,k);
        printf("%s\n",w);
    }

    Nastenka1998, 19 Августа 2016

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