1. Python / Говнокод #26464

    0

    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
    Первой модуль Definition_h содержит переменную с именем хоста
    
    if "COMPUTERNAME" in os.environ:
        UNAME = os.environ["COMPUTERNAME"].upper()
    else:
        UNAME = commands.getoutput("hostname").strip().upper()
        
    Второй модуль содержит функцию поведение которой зависит от имени хоста
    
    def func():
        if Definition_h.UNAME == "HKCFF-AS0301" :
            tab["CODE_INTERBQUE"] = self._supplementaryDetails[5:8]
         else :
            tab["CODE_OPE_BQE"] = self._supplementaryDetails[5:8]

    извращенное сознание

    gaal, 04 Марта 2020

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Вы напишите
    x != x
    или
    import math
    math.isnan(x)
    ?

    3_dar, 03 Марта 2020

    Комментарии (74)
  3. Python / Говнокод #26459

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    import nacl
    from nacl.signing import VerifyKey
    from nacl.encoding import HexEncoder
    
    
    v = VerifyKey('c328dd78deb171f38ed6a6d7ff6f55a2f84fa75f1aca4d544beec00c6c882dbe', encoder=HexEncoder)
    v.verify('ed23a4dab9aea504c74df88818e665cacbc98a258214d48b0be5491b7fae47b1ded7bba07be43286c60fa5e570fa4d2be12afc5a307be0703a9303402873a60761646d696e4067636f64652e7370616365', encoder=HexEncoder)
    # b'[email protected]'

    gost, 29 Февраля 2020

    Комментарии (198)
  4. Python / Говнокод #26444

    +4

    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
    def generate_set(max_size, base_images, samples_per_image=100):
        assert len(base_images) == CHARS_NUM
        input_vec_len = max_size[0] * max_size[1]
        output_vec_len = CHARS_NUM
        set_size = samples_per_image * CHARS_NUM
        
        x_set = np.empty(shape=(set_size, input_vec_len))
        y_set = np.empty(shape=(set_size, output_vec_len))
    
        sample_num = 0
        for c, img in base_images.items():
            for _ in range(samples_per_image):
                x_set[sample_num] = generate_distorted_sample(img)
                y_set[sample_num] = char_to_onehot(c)
                sample_num += 1
        # LOL
        rng_state = np.random.get_state()
        np.random.shuffle(x_set)
        np.random.set_state(rng_state)
        np.random.shuffle(y_set)
        return x_set, y_set

    ТУРЕЛЬ: 1-1 сорцовый кобенный генератор по мотивам: https://govnokod.ru/26434#comment527875.
    https://github.com/gost-gk/turel
    Принцимп мухи: берём символы русского алфамита с цифрами/пуньктуацией, генерируем из них слегка искажённые картинки, тренируем элементарную модельку —

    optimizer = keras.optimizers.Adagrad(learning_rate=0.02)
    model = Sequential()
    model.add(Dense(units=CHARS_NUM * 2, activation='relu', input_dim=input_vec_len))
    model.add(Dense(units=CHARS_NUM, activation='softmax'))
    model.compile(loss='categorical_crossentropy',
    optimizer=optimizer,
    metrics=['accuracy'])

    — и пропускаем через неё входную сорцовую психозу. Настоящий «OCR»!
    Благодаря тому, что на английских символах модель не обучалась, при распознавании сорцов получается кобенный эффект.

    Моделька обучается очень быстро, десятка эпох (примерно по секунде на эпоху на моём корыте) достаточно для 97-98% точности распознавания искажённых символов.

    gost, 21 Февраля 2020

    Комментарии (156)
  5. Python / Говнокод #26412

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    # coding: inlinec
    from inlinec import inlinec
    
    @inlinec
    def test():
        #include<stdio.h>
        void test() {
            printf("Hello, world");
        }

    https://www.opennet.ru/opennews/art.shtml?num=52306 - Inlinec - новый способ использования Си-кода в Python-скриптах

    Сишные вставки в питоне

    j123123, 04 Февраля 2020

    Комментарии (204)
  6. Python / Говнокод #26402

    −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
    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
    95. 95
    96. 96
    97. 97
    g = {'А', 'Е', 'Ё', 'И', 'У', 'О', 'Я', 'Ы', 'Э', 'Ю'}
    s = input().split()
    last = -1
    start = -1
    first = 0
    f = 0
    GL = 0
    gl = 0
    cnt = 0
    el = s[0]
    if len(s) == 1:
        el = s[0]
        for i in range(len(el)):
            if el[i].isupper() and el[i] not in g:
                print('ошибка')
                exit()
            if el[i].isupper() and f:
                print('ошибка')
                exit()
            if el[i].upper() in g:
                gl += 1
                GL += 1
            if el[i].isupper():
                start = gl
                f = 1
        if gl and not f:
            print('ошибка')
            exit()
        if start == -1:
            print('не стихи')
            exit()
        if (start == 2 and gl == 3) \
                or (start == 1 and gl == 2) \
                or (start == 2 and gl == 2):
            print('недостаточно информации')
            exit()
    last = -1
    start = -1
    first = 0
    GL = 0
    f = 0
    gl = 0
    cnt = 0
    el = s[0]
    while start == -1 and first < len(s):
        el = s[first]
        first += 1
        for i in range(len(el)):
            if el[i].isupper() and el[i] not in g:
                print('ошибка')
                exit()
            if el[i].isupper() and f:
                print('ошибка')
                exit()
            if el[i].upper() in g:
                gl += 1
                GL += 1
            if el[i].isupper():
                start = gl
                gl = 0
                f = 1
        if gl and not f:
            print('ошибка')
            exit()
    if start == -1:
        print('не стихи')
        exit()
    cnt = gl
    for k in range(first, len(s)):
        el = s[k]
        f = 0
        gl = 0
        cnt = cnt
        for i in range(len(el)):
            if el[i].upper() in g:
                cnt += 1
                gl += 1
                GL += 1
            if el[i].isupper() and el[i] not in g:
                print('ошибка')
                exit()
            if el[i].isupper() and f:
                print('ошибка')
                exit()
            if el[i].isupper():
                if last == -1:
                    last = cnt
                    cnt = 0
                elif cnt != last:
                    print('не стихи')
                    exit()
                else:
                    cnt = 0
                f = 1
        if gl and not f:
            print('ошибка')
            exit()

    if GL == 1:
    print('не стихи')
    exit()
    if start > 3 or last > 3 or cnt > 2:
    print('не стихи')
    exit()
    if start == 1:
    if last == 2 and cnt < last:
    print('хорей')
    elif (last == 3 or last == -1) \
    and cnt < 3:
    print('дактиль')
    else:
    print('не стихи')
    elif start == 2:
    if (last == 2 and cnt < last) \
    or last == -1:
    print('ямб')
    elif last == 3:
    print('амфибрахий')
    else:
    print('не стихи')
    elif start == 3 \
    and (last == 3 or last == -1):
    print('анапест')
    else:
    print('не стихи')

    kodic, 31 Января 2020

    Комментарии (3)
  7. Python / Говнокод #26382

    −1

    1. 1
    2. 2
    3. 3
    https://twitter.com/indygreg/status/1218643088928698368
    
    > If you care about low-latency processes (CLIs, frequently-called scripts in build systems, etc), you may want to avoid Python.

    пацаны, оказывается питон не стоит использовать для реалтаймовых приложений, вы знали?

    Fike, 25 Января 2020

    Комментарии (5)
  8. Python / Говнокод #26379

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    # Python2
    
    import sys
    print sys.stderr, "Pol chasa ne mog ponyat kakoko huya nichego ne vivoditsya"

    3_dar, 23 Января 2020

    Комментарии (20)
  9. Python / Говнокод #26374

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    _RE_DESCRIPTION_TAG_OPEN = re.compile(r'<p\s+class="description">'.encode('utf-8'))
    _RE_DESCRIPTION_TAG_CLOSE = re.compile(r'</p>\s*<p\s+class="author">'.encode('utf-8'))
    def replace_description_tag(content, new_tag):
        content = _RE_DESCRIPTION_TAG_OPEN .sub(f'<{new_tag} class="description">'.encode('utf-8'), content)
        return    _RE_DESCRIPTION_TAG_CLOSE.sub(f'</{new_tag}><p class="author">'.encode('utf-8'), content)

    Парсить HTML регулярками — нельзя. Но если HTML невалидный — то можно!

    А дело в том, что ГК генерирует говно, которое пришлось фиксить таким вот диким образом, см. https://govnokod.ru/26373#comment522056.

    gost, 21 Января 2020

    Комментарии (163)
  10. Python / Говнокод #26356

    +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
    #  Пример #1
    class FastClass:
    
        def do_stuff(self):
            temp = self.value  # это ускорит цикл
            for i in range(10000):
                ...  # Выполняем тут некие операции с `temp`
    
    #  Пример #2
    import random
    
    def fast_function():
        r = random.random
        for i in range(10000):
            print(r())  # здесь вызов `r()` быстрее, чем был бы вызов random.random()

    Забавно, что в статье под названием «Разработка чрезвычайно быстрых программ на Python» (https://habr.com/ru/company/ruvds/blog/483678) этот самый «Python» оказался обосран (ненамеренно) куда качественнее, чем в недавно обсуждённом высере (https://govnokod.ru/26050#comment517858).

    Неужели конпелятор/интерпретатор «Питона» настолько туп, что не может самостоятельно провести вот эти вот микрооптимизации?

    gost, 16 Января 2020

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