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

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

    +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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    from selenium import webdriver
    import time
    import telegram
    
    
    def A():
        код парсера
    
    while True:
        browser = webdriver.Chrome()
        browser.maximize_window()
        browser.get('ссылка')
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[5]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[5]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[4]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[4]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[3]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[3]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[6]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[6]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
        browser.close()
        time.sleep(15)

    Вопросик с хабра)

    Safronov_alexei, 02 Июля 2020

    Комментарии (15)
  3. Си / Говнокод #26767

    +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
    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
    // https://habr.com/ru/company/oleg-bunin/blog/493242/
    // Алгоритмы быстрой обработки HTTP-строк 
    
    // .....
    
    // Как устроен парсер? Мы, как nginx, определяем массив байт и по нему
    // проверяем входные данные — это пролог функции. Здесь мы работаем
    // только с короткими сроками, используем likely, потому что branch misprediction
    // для коротких строк болезненнее, чем для длинных. Выносим этот код наверх.
    // У нас есть ограничение в 4 из-за последней строчки — мы должны написать
    // достаточно мощное условие. Если будем обрабатывать больше 4 байт, то условие
    // будет тяжелее, а код медленнее.
    
    static const unsigned char uri_a[] __attribute__((aligned(64))) = {
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            ...
            // Branch misprediction is more crucial for short strings
            if (likely(len <= 4)) {
                    switch (len) {
                    case 0:
                        return 0;
                    case 4:
                        c3 = uri_a[s[3]];
                        // fall through to process other chars
                    case 3:
                        c2 = uri_a[s[2]];
                    case 2:
                        c1 = uri_a[s[1]];
                    case 1:
                        c0 = uri_a[s[0]];
                    }
                    return (c0 & c1) == 0 ? c0 : 2 + (c2 ? c2 + c3 : 0);
            }
    
    
    // Основная петля и большой хвост. В основном цикле обработки мы делим
    // данные: если они достаточно длинные, обрабатываем по 128, 64, 32 или
    //  по 16 байт. Имеет смысл обрабатывать по 128: мы параллельно используем
    // несколько каналов процессора (несколько pipeline) и суперскалярность процессора.
    
    for ( ; unlikely(s + 128 <= end); s += 128) {
            n = match_symbols_mask128_c(__C.URI_BM, s);
            if (n < 128)
                    return s - (unsigned char *)str + n;
    }
    
    if (unlikely(s + 64 <= end)) {
            n = match_symbols_mask64_c(__C.URI_BM, s);
            if (n < 64)
                    return s - (unsigned char *)str + n;
            s += 64;
    }
    
    if (unlikely(s + 32 <= end)) {
            n = match_symbols_mask32_c(__C.URI_BM, s);
            if (n < 32)
                    return s - (unsigned char *)str + n;
            s += 32;
    }
    
    if (unlikely(s + 16 <= end)) {
            n = match_symbols_mask16_c(__C.URI_BM128, s);
            if (n < 16)
                    return s - (unsigned char *)str + n;
            s += 16;
    }

    ... пиздец. Там еще в той статье пишут, что CloudFlare через AVX2 какое-то говно оптимизируют в говнопаринге http запросов.

    Поэтому я за бинарную сериализацию, без всей этой хуйни человекочитаемой

    j123123, 23 Июня 2020

    Комментарии (314)
  4. JavaScript / Говнокод #26759

    +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
    function(t) {
        switch (t) {
            case 1:
                return g.emailNotConfirmed;
            case 2:
                return g.showCaptcha;
            case 3:
                return g.authFailed;
            case 4:
                return g.makeRedirect;
            case 5:
                return g.reload;
            case 6:
                return g.mobileActivationRequired;
            case 7:
                return g.showMessage;
            case 8:
                return g.showError;
            case 9:
                return g.votesPayment;
            case 10:
                return g.zeroZone;
            case 11:
            case 12:
                return Object(g.mobileValidationRequired)(t);
            case 13:
                return g.evalCode;
            case 14:
                return g.otpBox;
            case 15:
                return g.passwordValidationRequired;
            default:
                return Object(g.defaultHandler)(t)
        }
    }(t)

    https://vk.com/js/cmodules/bundles/common.2ce877ca4bd415d95d03.js?51fe80b96 a07a7861643

    #байтоклюйство #спичечная-экономика #олимпиадники #ebivk

    Fike, 18 Июня 2020

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

    +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
    ```rust
    impl actix_web::FromRequest for Token {
        type Error = ApiError;
        type Future = Pin<Box<dyn Future<Output = Result<Self, Self::Error>>>>;
        type Config = ();
    
        fn from_request(req: &actix_web::HttpRequest, _: &mut actix_web::dev::Payload) -> Self::Future {
            match req.extensions().get::<Option<Self>>().map(Clone::clone) {
                Some(Some(v)) => Box::pin(async { Ok(v) }),
                None | Some(None) => {
                    let header = req.headers().get("Authorization").map(Clone::clone);
    
                    Box::pin(
                        web::Data::<Pool>::extract(req)
                            .map_err(ApiError::from)
                            .and_then(move |pool| {
                                async move {
                                    let header = header.ok_or(ApiError::authorization_required())?;
    
                                    let auth = header.to_str()?;
    
                                    let uuid = Uuid::parse_str(auth)
                                        .map_err(|_| ApiError::authorization_bad_token())?;
    
                                    let (_, token) = Self::find(&uuid, pool.get_conn().await?).await?;
    
                                    let token = token.ok_or(ApiError::authorization_bad_token())?;
    
                                    Ok(token)
                                }
                            })
                            .boxed_local()
                    )
                }
            }
        }
    }

    Было принято решение создать Authorization middleware, который при каждом запросе авторизировал пользователя, если есть нужный хидер. В связи с тем, что некоторые роуты достают модель через ручной экстрактор, пришлось дописать эту хуйню (Второе условие никогда не будет выполнена вообще судя по всему).

    1rei, 18 Июня 2020

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

    +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
    interface PostRepository
    {
        public function save(Post $model);
    }
    
    class Post
    {
        protected $id;
        protected $title;
        protected $content;
    
        public function setId(int $id)
        {
            $this->id = $id;
        }
    
        public function getId(): ?int
        {
            return $this->id;
        }
    
        public function setTitle(string $title)
        {
            $this->title = $title;
        }
    
        public function getTitle(): string
        {
            return $this->title ?: '';
        }
    
        public function setContent(string $content)
        {
            $this->content = $content;
        }
    
        public function getContent(): string
        {
            return $this->content ?: '';
        }
    }

    Блядь, до чего ж отвратительный код. Говёность «PHP», тщательно и с извращённой любовью смешанная с ЙАЖАвским бойлерплейтом. Омерзительно.

    https://habr.com/ru/post/505400/
    >>> Как должны выглядеть модели?

    gost, 08 Июня 2020

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

    +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
    #ifndef CONIO_H
    #define	CONIO_H
    
    #ifdef	__cplusplus
    extern "C" {
    #endif
    
    #include <ncurses.h>
    
    #define BLUE COLOR_BLUE
    #define RED COLOR_RED
    #define WHITE COLOR_WHITE
    #define BLACK COLOR_BLACK
    #define MAGENTA COLOR_MAGENTA
    #define CYAN COLOR_CYAN
    #define GREEN COLOR_GREEN
    #define YELLOW COLOR_YELLOW
    #define LIGHTBLUE COLOR_BLUE
    #define LIGHTRED COLOR_RED
    #define LIGHTGREEN COLOR_GREEN
    
    #undef getch
    
    void init_screen(void);
    
    void gotoxy(int x,int y);
    void clrscr(void);
    void clreol(void);
    int kbhit(void);
    void textbackground(int color);
    void textcolor(int color);
    void delline(void);
    void window(int left, int top, int right, int bottom);
    int getch(void);
    int getche(void);
    int wherex(void);
    int wherey(void);
    int cputs(char*);
    char* cgets(char*);
    int cprintf(const char*, ...);
    int cscanf(const char*, ...);
    
    #ifdef	__cplusplus
    }
    #endif
    
    #endif	/* CONIO_H */

    УЕЕЕЕЕЕЕЕЕЕ!!!!!!

    ЕСТЬ КОНИО ПОД ПРЫЩИ!!!

    https://github.com/nowres/conio-for-linux

    OCETuHCKuu_nemyx, 08 Июня 2020

    Комментарии (25)
  8. Swift / Говнокод #26738

    +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
    struct Ololo: Comparable {
        let value: Int
        
        static func < (lhs: Ololo, rhs: Ololo) -> Bool {
            return lhs.value < rhs.value
        }
        
        static func < (lhs: Ololo, rhs: Ololo) -> String {
            if lhs.value < rhs.value {
                return "LESS"
            } else if lhs.value > rhs.value {
                return "MORE"
            } else {
                return "EQUAL"
            }
        }
    }
    
    let ololo1 = Ololo(value: 100)
    let ololo2 = Ololo(value: 200)
    
    let bool: Bool = ololo1 < ololo2
    let string: String = ololo1 < ololo2

    А в плюсах можно в operator> любую херь вернуть © jojaxon

    Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.

    Desktop, 06 Июня 2020

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

    +1

    1. 1
    2. 2
    https://infostart.ru/public/72175/
    1C.Net:Предприятие + DirectX = 3D-графика на формах 1С:Предприятие

    Зачем? Зачем?

    j123123, 04 Июня 2020

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

    +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
    namespace Test;
    
    /**
     * MyTest (test/mytest.zep)
     */
    class MyTest
    {
        public function someMethod()
        {
            /* Variables must be declared */
            var myArray;
            int i = 0, length;
    
            /* Create an array */
            let myArray = ["hello", 0, 100.25, false, null];
    
            /* Count the array into a 'int' variable */
            let length = count(myArray);
    
            /* Print value types */
            while i < length {
                echo typeof myArray[i], "\n";
                let i++;
            }
    
            return myArray;
        }
    }

    Язык программирования «Зефир».

    https://docs.zephir-lang.com/0.12/en/introduction

    TEH3OPHblu_nemyx, 03 Июня 2020

    Комментарии (53)
  11. C++ / Говнокод #26728

    +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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
    int perevod(char a)
    {
      switch (a)
      {
        case 'A': {return 1; break;}
        case 'B': {return 2; break;}
        case 'C': {return 3; break;}
        case 'D': {return 4; break;}
        case 'E': {return 5; break;}
        case 'F': {return 6; break;}
        case 'G': {return 7; break;}
        case 'H': {return 8; break;}
      }
        return 0;
    }
    int proverka(char a)
    {
      switch (a)
      {
        case '1': {return 1; break;}
        case '2': {return 2; break;}
        case '3': {return 3; break;}
        case '4': {return 4; break;}
        case '5': {return 5; break;}
        case '6': {return 6; break;}
        case '7': {return 7; break;}
        case '8': {return 8; break;}
      }
        return 0;
    }
    int main()
    {
        string s;
        cin >> s;
        int x1, x2, y1, y2;
        x1=perevod(s[0]);
        x2=perevod(s[3]);
        y1=proverka(s[1]);
        y2=proverka(s[4]);
        if(s.length() != 5 || x1 == 0 || x2 == 0 || y1 == 0 || y2 == 0||s[2]!='-')
        {
            cout << "ERROR";
        }
        else{
        if(abs(x2 - x1) == 1 && abs(y2 - y1) == 2 || abs(x2 - x1) == 2 && abs(y2 - y1) == 1)
        {
            cout << "YES";
        }
        else
        {
            cout << "NO";
        }
        }
        return 0;
    }

    Простенькая проверка на возможность хода конем.

    Verenick, 02 Июня 2020

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