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

    +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
    #!/usr/bin/env python3
    # -*- coding: UTF8 -*-
    from datetime import date
    from os import environ, mkdir, system
    from os.path import dirname, exists, join as path_join
    from time import time
    
    
    def check_verbose():
        return environ.get("DEBUG") in ("true", "True", "TRUE", True, "yes", "Yes", "YES")
    
    
    class Timer:
        def __init__(self):
            """
            Объект добавляет в начале текста временные метки
            """
            self.start_epoch = self.last_call = time()
    
        @staticmethod
        def __fully_scope(timer: int or str) -> str:
            """
            Преобразует однозначные значения в двузначные.
            :param timer: Время
            :return: Двузначное значение
            """
            if len(str(timer)) == 2:
                return str(timer)
            elif len(str(timer)) == 1:
                return "0" + str(timer)
            elif len(str(timer)) <= 0:
                return "00"
            elif len(str(timer)) >= 2:
                return str(timer)[:2]
    
        def __formatter(self, timestep: float) -> str:
            """
            Форматирует время
                :return: время hh:mm:ss
            """
            _hours = int(timestep // 3600), int(timestep % 3600)
            _minute = int(_hours[1] // 60), int(_hours[1] % 60)
    
            _current_epoch = f"{self.__fully_scope(_minute[0])}:{self.__fully_scope(_minute[1])}"
            if _hours[0] > 0:
                _current_epoch = f"{_hours[0]}:" + _current_epoch
            return _current_epoch
    
        def __call__(self, fix_call: bool = True) -> str:
            """
            Считает время с начала сценария + с последнего шага
                :return: время hh:mm:ss(+hh:mm:ss)
            """
            current_epoch = self.__formatter(time() - self.start_epoch)
            timedelta_epoch = self.__formatter(time() - self.last_call)
            if fix_call:
                self.last_call = time()
    
            return f"{current_epoch}(+{timedelta_epoch})"
    
        def __bool__(self):
            return True
    
    
    class Logger:
        def __init__(self, name: str):
            self.start_time = time()
            self.name = name.upper()
            self.timer = Timer()
            self.log_file = path_join(environ["RESULT_DIR"], name, f"{name}_{date.today().isoformat()}.log")
    
        def check_file(self):
            if not exists(self.log_file):
                if not exists(dirname(self.log_file)):
                    mkdir(dirname(self.log_file))
                system(f"echo {date.today().isoformat()}> {self.log_file}")
    
        def save_log(self, msg: str):
            self.check_file()
            with open(self.log_file, "a+") as _log_file:
                _log_file.write(msg + "\n")
    
        def massage(self, msg: str):
            print(f"{self.timer()}::{self.name}::{msg}")
            self.check_file()
            self.save_log(f"{self.timer()}::{self.name}::{msg}")
    
        def multi_msg(self, level: str, msg: any):
            if isinstance(msg, (str, int, float, bool)):
                self.massage(f"{level.upper()}::{msg}")
            elif isinstance(msg, (tuple, list, set)):
                for _msg in msg:
                    self.multi_msg(level, _msg)
            elif isinstance(msg, dict):
                for _msg_key in msg:

    Ну собственно самописный логгер, потому что "библиатечный логгер переусложнен НИНАДА!"

    Запостил: dicklover, 19 Октября 2022

    Комментарии (50) RSS

    • > environ.get("DEBUG") in ("true", "True", "TRUE", True, "yes", "Yes", "YES")
      Слабовато. Где остальные вариации регистра?
      Ответить
      • а так же 1, on, On, ON, и не забываем про поддержку локализации: Ja, так..
        Ответить
        • Oui, ja.
          Ответить
          • Si
            Ответить
            • google: Dean Reed „Wir sagen ja“.

              https://youtu.be/NudOhlvBuws
              Ответить
              • we zeggen ja по местному будет
                или даже точнеее наверное wij а не we, потому что так эмоциональнее

                Уи это по французски
                Си это ипанский
                Йа это нидеры и немцы
                А похожий на кваканье звук я не знаю: это въетнамский?


                ps: ахуеть, я кажется рассылшал слово "фраген" -- вопрос
                Ответить
                • Я сдался и нагуглил текст:

                  Ihr jungen Leute hier,
                  ihr jungen Leute hört,
                  wir sind in dieser Stadt
                  bei Freunden eingekehrt.
                  Ob schwarz, ob gelb, ob weiß,
                  spielt keine Rolle hier,
                  hier geht es um den Menschen,
                  und der sind wir.
                  Und sollte man uns fragen,
                  ob wir die Feinde kennen,
                  dann woll'n wir sie gemeinsam
                  bei ihrem Namen nennen.

                  Daß ihre Schlösser zittern,
                  von diesem Wind, der weht,
                  weil unsre Antwort in eine Richtung geht.

                  Refrain:
                  We'll say
                  da, da, da, da, da,
                  We'll say
                  ja, ja, ja, ja, ja
                  We'll say
                  oui, oui, oui, oui, oui,
                  We'll say
                  si, si, si, si, si,
                  We'll say
                  yes, yes, yes, yes, yes,
                  We'll say
                  wang, wang, wang, wang, wang,
                  so come on,
                  everybody sing along.

                  Und wenn die Unterdrücker
                  erheben ihr Geschrei,
                  voll Lüge und Verlockung,
                  nach Mord und Polizei,
                  dann lachen wir und recken
                  die Fäuste hoch und hier,
                  hier geht es um den Menschen,
                  und der sind wir.
                  Und sollte man uns fragen,
                  wird sich der Kampf denn lohnen,
                  geh', Freund, kein Muskel lohnt sich,
                  wenn wir ihn immer schonen.
                  Und alle Niederlagen,
                  die kriegen uns nicht klein
                  und lassen uns nur immer klüger sein.

                  Refrain:
                  We'll say
                  da, da, da, da, da...

                  Wir stampfen unsre Füße
                  im Rhythmus der Musik,
                  wir klatschen unsre Hände
                  als Vorschuß auf den Sieg.
                  Wir seh'n den Sieg begreifbar,
                  wir seh'n den Sieg schon hier -
                  hier geht es um den Menschen,
                  und der sind wir.
                  So soll es also werden,
                  gebor'n das neue Leben.
                  Wir werden ihm die Augen
                  und eine Nase geben,
                  und wenn ihr wollt, entwerfen
                  wir heut' schon sein Gesicht
                  und heißen soll es Frieden und anders nicht!

                  Так и не понял, на каком языке посоеднее слово. Мне кажется, что запись «wang» — пиздёж.
                  Ответить
                  • Wang as a noun means The penis...

                    всё, что мне удалось нагуглить
                    Ответить
                    • Попросим гуглопереводчик перевести всё на нидерландский и посмотрим, что получится:

                      Uw jonge mensen hier
                      Je hoort jonge mensen
                      We zijn in deze stad
                      Gebeurde met vrienden.
                      Of zwart, of geel, of wit,
                      Maakt hier niet uit
                      Dit gaat over mensen
                      En wij zijn.
                      En moet u het ons vragen
                      of we de vijanden kennen
                      Dan willen we ze samen
                      Naam in uw naam.

                      Dat hun lokken trillen,
                      Van deze wind die waait,
                      Omdat ons antwoord in één richting gaat.

                      Nalaten:
                      Goed gezegd
                      daar, daar, daar, daar,
                      Goed gezegd
                      Ja, ja, ja, ja, ja, ja
                      Goed gezegd
                      OUI, OUI, OUI, OUI, OUI,
                      Goed gezegd
                      SI, SI, SI, SI, SI,
                      Goed gezegd
                      Ja ja ja ja ja,
                      Goed gezegd
                      Wang, Wang, Wang, Wang, Wang,
                      dus kom op,
                      Iedereen zingt mee.

                      En als de onderdrukkers
                      hun geschreeuw verhogen
                      Volledige leugen en verleiding,
                      Na moord en politie,
                      Dan lachen we en strekken we uit
                      de vuisten en hier,
                      Dit gaat over mensen
                      En wij zijn.
                      En moet u het ons vragen
                      Het gevecht zal de moeite waard zijn
                      ga, vriend, geen spier is het waard,
                      Als we hem altijd beschermen.
                      En alle nederlagen,
                      Ze krijgen ons niet klein
                      En laat ons gewoon slimmer zijn.

                      Nalaten:
                      Goed gezegd
                      Daar, daar, daar, daar ...

                      We stempelen onze voeten
                      In het ritme van muziek,
                      We klappen in onze handen
                      Als een vooruitgang voor de overwinning.
                      We zien de overwinning begrijpelijk,
                      We zien de overwinning hier -
                      Dit gaat over mensen
                      En wij zijn.
                      Dus het zou moeten zijn
                      geboren het nieuwe leven.
                      We zullen zijn ogen hebben
                      en geef een neus
                      En als u wilt ontwerpen
                      We zijn al zijn gezicht vandaag
                      En het zou vrede moeten betekenen en anders niet!
                      Ответить
                      • ну это просто

                        > Uw jonge mensen hier
                        Твои молодые люди тут

                        > Je hoort jonge mensen
                        Ты слышишь молодых людей

                        > We zijn in deze stad
                        Мы в этом городе

                        > Gebeurde met vrienden.
                        Хебюрде (не знаю слова) с друзьями

                        >Goed gezegd
                        Хорошо сказано
                        Ответить
                        • Перевёл он коряво. Немецкий оригинал:

                          Ihr jungen Leute hier,
                          Вы, молодые люди, здесь

                          ihr jungen Leute hört,
                          Вы, молодые люди, слушаете

                          wir sind in dieser Stadt
                          мы в этом городе

                          bei Freunden eingekehrt.
                          с друзьями остановились (встретились)
                          Ответить
                          • Это может я коряво перевёл

                            Но Uw это все таки Ваш а не "вы"
                            Вы это Jullie

                            Потом, если вы слушаете (вы -- множественное число) то horen, а не hoort.
                            Ответить
                          • P.S. В немецком есть оборот, когда сразу за местоимением следует существительное (возможно, с определением). При переводе на русский это существительное выделяют как обращение.

                            Wir Programmisten = мы, программисты, ...

                            Гугл не умеет переводить такие обороты.
                            Ответить
                            • we, jonge mensen
                              Хуй хнает, можно ли так сказать тут
                              Ответить
                    • > Wang as a noun means The penis...

                      А помнишь, была гляделка фотографий Wang Imaging, которую написал Чен Вон, а Микрософт её переименовал в Microsoft Imaging и включил в Windows 98?
                      Ответить
                      • Не помню, если честно
                        Помню только Raymond Chen, и он охуенный
                        Ответить
                        • Я имя перепутал. Ан Вон.

                          https://en.m.wikipedia.org/wiki/Imaging_for_Windows

                          Программа ещё какое-то время носила имя Kodak Imaging.
                          Ответить
                          • в то время юзал acdsee вроде
                            Ответить
                            • Да все юзали что-то стороннее. Imaging был глючным и мало форматов поддерживал.
                              Ответить
                • «Да» по-вьетнамски похоже не то на «дун», не то на «дон»:

                  https://ru.forvo.com/word/%C4%91%C3%BAng/#vi

                  https://en.m.wiktionary.org/wiki/%C4%91%C3%BAng
                  Ответить
                  • Vâng вполне себе похоже (спроси гугл транслейта)

                    Догадаться было не сложно
                    Во-первых въетнамиские слова состоят из коротких слогов
                    Вьет-Нам
                    Хо-ши-мин
                    Сай-гон

                    Во-вторых ну не мог чувак из советского лагеря в разгар холодной войны не затронуть самую больную для американцев тему)
                    Ответить
                    • Да, vâng — внезапно тоже вариант.

                      https://en.wiktionary.org/wiki/vâng
                      Ответить
                  • https://ru.forvo.com/word/v%C3%A2ng/#V%C3%A2ng
                    Ответить
                    • Похоже, что у вьетнамцев ни одна гласная не читается, как у нас.

                      vâng читается как [vəŋ˧], а đúng — как [ʔɗʊwŋ͡m˧˦] (последний значок в скобках — высота тона).
                      Ответить
              • This video is only available to Music Premium members

                Ты там охуел совсем?
                Ответить
            • Слова oui и ja, кстати, написаны на доске, на которой ещё есть алфавит, цифры и слова yes и no.
              Ответить
        • В латышском есть ja и jā. Одно из них означает да, другое — если. И я не могу запомнить, что из них что.

          А в испанском есть sí и si. Ты не поверишь, тоже да и если.

          Мне страшно представить ЯП, в котором ифы переведены на испанский или на латышский.
          Ответить
          • в нидерландском есть een (неопределённый артикль) и één (один)
            Нахуя завезли диакритическое говно в довольно стройный язык -- я не ебу.

            До кучи есть еще и ё: Serviё, Belgiё. А Украина будет Oekraïne (это не i, это хуйня с двумя точками типа украинского йи). Тащат в язык всякое оверинженирное ради трех случаев блядь
            Ответить
            • Две точки в нидерландском спизжено из французского, где оно используется для разделения гласных в словах типа эгоизм и героизм, иначе oi будет читаться как уа в слове тротуар.

              Французы сначала придумали ебанутую орфографию, потом придумали костыли, чтобы пофиксить чтение.

              А ударение — это на испанский манер, где ставят ударение в односложных словах, чтобы различать омонимы. Тоже костыль.
              Ответить
              • С французами помоему всё было хуже. Так какой-то кардинал сказал: "мы пишем на великом языке -- на латыни"
                Ему возвразили: "но народ совершенно не так говорит же"
                Кардинал послал нахуй всех, и с тех пор французы пишут одно, а читают совершенно другое (потому что править писанину под произношение пейзантов это зашквар. Всем похуй как говорит Жак-простак, мы пишем на лытыни, и ниибет!)

                Со временем письменный и устный язык разошлись настолько, что пришлось вводить палочки и черточки чтобы хоть как-то соотносить написанное с произносимым

                С тех пор там помойка в языке
                Ответить
            • geïmporteerd

              Оказывается, они ещё так приставку от корня отделяют. Ну типа как у нас твёрдый знак в слове «подъезд».
              Ответить
        • А хули вы смеётесь?
          https://github.com/catboost/catboost/blob/dc34c09a686bd3b56fad6649a4b4ea252cb9b203/util/string/type_ut.cpp
          Ответить
          • UNIT_ASSERT(!IsTrue("fooblya"));
            Ответить
          • ва можно написить "dast is fantastisch"?

            А зачем вы стертора на работу взяли?
            https://github.com/catboost/catboost/blob/dc34c09a686bd3b56fad6649a4b4ea252cb9b203/util/string/builder_ut.cpp#L9
            Ответить
          • Вот это забавно
            https://github.com/catboost/catboost/blob/master/util/generic/map.h

            Это чтобы как в скриптушне писать
            if (! users) {
             //пользователей нет
            } else {
              users["A"]..
            }
            Ответить
            • https://github.com/catboost/catboost/blob/8836f3faf1c8c1bfbfd1f963be2f6e92d7f361bc/util/generic/maybe.h#L67

              "TAssignableFromMaybeSomehow".

              И эти люди смеютяся на джаваёбами

              Это типа наметушили ассеты чтобы проверять одной строчкой кто там куда во что ассайнбл и копбл?
              Ответить
        • Мозговой штурм.

          Азербайджанский: hə.
          Казахский: иә.
          Турецкий: evet.
          Узбекский: ha.
          Татарский: Әйе.
          Башкирский: эйе.
          Туркменский: hawa.
          Киргизский: ооба.

          Монгольский: тийм.

          Таджикский: ҳа.

          Русский, болгарский, македонский, сербско-хорватский, словенский: да.
          Польский: tak.
          Чешский: ano.
          Словацкий: áno.

          Латышский: jā.
          Литовский: taip.

          Финский: kyllä.
          Эстонский: jah.
          Венгерский: igen.
          Марийский (луговой): да.

          Испанский: sí.
          Итальянский: sì.
          Португальский: sim.
          Французский: oui.
          Румынский: da.

          Английский: yes.
          Немецкий, нидерландский, датский, шведский, норвежские: ja.
          Исландский: já.
          Люксембургский: jo.

          Бретонский: ya.
          Валлийский: ydw.
          Ирландский: tá.
          Шотландский (гэльский): tha.

          Индонезийский, малайский, яванский: ya.

          Греческий: ναι (читается как «не», какой греческой багор).

          Баскский: bai.

          Албанский: po.

          Китайский (путунхуа): shì.
          Японский: hai.
          Корейский: ye.

          Зулусский: yebo.
          Луганда: yee.
          Руанда: yego.
          Сесото: ee.
          Суахили: ndiyo.
          Тсонга: ina.
          Ответить
          • >Греческий: ναι (читается как «не», какой греческой багор).
            А "нет" будет "охи". g: день охи
            Ответить
            • Похоже, грекам нравится это слово. Они и сейчас протестуют против транзита оружия через их страну. Не так, как российская молодёжь, пишущая на стене «Хуй вобле», а реально поезда останавливали. Натовцам пришлось искать другие маршруты, в обход Греции.
              Ответить
        • Только для английского:

          Dialect or archaic forms: arr, ay, aye, yea, yassuh
          Nautical, military, telecommunications: affirmative
          Colloquial or slang forms: ya, yah, yeah, yeh, yep, yeppers, yup, yuppers, yus, ahuh, mhm, uh huh.

          https://en.wiktionary.org/wiki/Thesaurus:yes

          Оттуда же: indeed.
          Ответить
      • Ну а как тебе:
        def __fully_scope(timer: int or str) -> str:
        """
        Преобразует однозначные значения в двузначные.
        :param timer: Время
        :return: Двузначное значение
        """
        if len(str(timer)) == 2:
        return str(timer)
        elif len(str(timer)) == 1:
        return "0" + str(timer)
        elif len(str(timer)) <= 0:
        return "00"
        elif len(str(timer)) >= 2:
        return str(timer)[:2]

        Бля, стриновый формат конечно зря вообще придумали
        Ответить
    • Неасинхронно.
      Ответить
    • > int or str
      > any
      Когда где-то слышал, что тайп хинты – это круто, но дальше не вникал.
      Ответить
      • Даёшь ли ты своему ребенку церукал, Stallman?
        Ответить

    Добавить комментарий