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

    +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
    from bs4 import BeautifulSoup
    import requests
    
    user = "**********"
    r = requests.get('https://www.last.fm/user/' + user)
    soup = BeautifulSoup(r.content, 'html.parser')
    page = soup.prettify()
    
    #Top artists
    print(
    page[int(page.find('’s top artists: ') + len('’s top artists: ')):int(page.find('. Get your own music profile at Last.fm')):]
    )
    
    #Top track
    print(
    ''.join(i if i != "+" else " " for i in (page[int(page.find('data-analytics-action="FeaturedTrackTrackName" href="/music/') + len('data-analytics-action="FeaturedTrackTrackName" href="/music/')):int(page.find('/_/', int(page.find('data-analytics-action="FeaturedTrackTrackName" href="/music/') + len('data-analytics-action="FeaturedTrackTrackName" href="/music/')))):] + " - " + page[int(page.find('/_/')) + 3:page.find('"', int(page.find('/_/'))):]))
    )

    Сбор с lastfm любимых исполнителей и любимого трека

    Запостил: G-Chist, 28 Мая 2021

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

    • Унылый код, унылая задача, и программист тоже наверняка очень унылый

      но за 16-ю строчку нужно конечно отрезать руки, тут спорить не ьбуду
      Ответить
    • https://habr.com/ru/company/skillfactory/blog/559010/
      > Что не так с современным преподаванием информатики
      > Python вместо знаков препинания или ключевых слов (в Паскале такими словами являются «begin» и «end») использует отступы для обозначения выполнения блока. Программы, написанные в одну строку или с другими нарушениями в структуре, не смогут быть выполненными в Python. Такая особенность позволит сократить размер кода и увеличить читаемость программы. Синтаксис Python приучит школьников писать «красивый» код, что улучшит написание и понимание кода.
      Ответить
      • Python обладает динамической типизацией. Это означает, что переменная связывается с типом во время присваивания значения, а значит, нет необходимости заранее объявлять переменную. Это упрощает понимание типов данных и разрешает путаницу в различных длинах целочисленных и вещественных, строковых и символьных типах, а также сокращает размер кода (таблица ниже).
        Ответить
        • bat файлы не используют понятие "типизации", это упрощает понимание типов данных и разрешает путаницу в различных длинах целочисленных и вещественных, строковых и символьных типах, а также сокращает размер кода (таблица ниже).

          ----------

          Снова и снова убеждаюсь, что учить школьников нужно на паскале, а первокурсников на чистой сишечке
          Ответить
          • Была бы живая норм реализация паскаляя на линукс. Он вообще до юникода-то дожил хотя бы?

            Жалко, пиздатый язык.
            Ответить
      • прыщебейсик
        Ответить
      • > Как раз учусь сейчас в вузе, и нам программирование объясняют на примере всех этих паскалей и пр.


        > Проблема в том, что чтобы установить себе IDE для этих устаревших языков, нужно пройти семь кругов > ада.
        Лолчто? ABC.NET

        > Найти IDE под них можно только на торрентах, и у этих IDE совершенно нет community.
        Лолчто, в вузе не дают IDE?

        >Невозможно старшему поколению привить любовь к современной разработке с её IDE, фреймворками, контейнерами

        БЛЯДЬ
        Ответить
        • Чувствую себя старшим поколением ;(
          Ответить
          • Ты разве не пользуешься IDE и докером?:)

            Кстати, bp.exe / tp.exe -- самая настоящая IDE, синенькая которая. На тот момент вообще самая крутая наверное из всех существующих.

            Интерактивный дебаг с брейкпоинтом и watch листом блядь!! В 1992-м году!!
            Ответить
            • Пользуюсь, конечно. И фреймворки юзаю если это требуется по задаче. Но там ведь написано про любовь, а не про ёблю за деньги...
              Ответить
          • Борманд, ты всегда молод (когда тебе не три тысячи лет)
            Ответить
        • Баба права, въебал ей плюс. У нас в вузе препод заставлял делать дабы в «DOS Box». Было прикольно, конечно. Но мне кажется это из-за того, что он 20 лет назад давал лабы в «DOS», и ему нет необходимости переходить на что-то другое. Один раз он спросил сколько байт в «int», я ему доказывал что 4, а он мне, что 2. Он был прав, но мог бы хотя бы сказать, что это зависит от.
          Ответить
          • Раньше int старались сделать примерно равным размеру регистра, так что на 16-ти битной сишечке под дос он был 2, а на 32-х битной на винде уже стал 4

            Но int вовсе не обязан иметь такой размер. Всё, что мы знаем про int, это что он больше чара, и минимум 2.
            Ответить
            • В free pascal если я не ошибаюсь int по соглашению это алиас либо smallint либо longint, в первом случае он равен word только знаковый, во втором это наш любимый знаковый инт в четыре байта на 32х битных системах и выше. А на 16 бит он
              Ответить
            • А на 16 бит он не зависел от ворда? И smallint не было?
              Ответить
              • Я про сишку говорил. Про паскаль я не очень помню уже

                > не зависел от ворда?
                Что ты называешь вордом, кстати? Размер регистра?
                Появился он действительно так, и имел размер 16 бит
                Но потом МС всё спутала
                Ответить
                • Ты давно вуз окончил?
                  Ответить
                • Word это целочисленный тип в паскале, он равен одному машинному слову, что бы это не значило. Обычно он собственно равен разрядности системы, но не знаю испортилась ли эта закономерность в реализациях для х64

                  Если я правильно понимаю word должен покрывать пространство адресации памяти полностью.
                  Ответить
                  • Ну ок)

                    У MS просто всё с этим типом крайне плохо
                    DWORD32
                    DWORD64

                    ну ты понял
                    Ответить
          • .model medium
            Ответить
          • Лол
            Ответить
          • Мы тоже делали лабы в "DOS Box". Но это были лабы по асму в реальном режиме, так что мне не ня что жаловаться ( ̄ω ̄).

            А дебажили в debug.com, да.
            Ответить
            • https://debug.com

              Bad mosquitoes spread disease. Good mosquitoes can stop them.
              Debug is a group of scientists and engineers developing technology to raise and release sterile mosquitoes to eliminate the ones that carry disease.
              Ответить
              • a 100

                какую-то хуиту придумали, кастрировать и выпускать надо буквально тонны комаров
                и они быстро передохнут и начинай сначала
                а еще они не приносят денге
                Ответить
            • Судя по хабру кажется, что если сейчас начать учить людей реальному асму, то такая вонь подымица: зачем нам асм? Давайте учите нас в VSCode делать сайты на Angular
              Ответить
              • > реальному асму

                А действительно? Ты ведь его уже и не запустишь без виртуалки и/или ёбли с флешкой и настройками фирмвари.

                Учить его просто потому что он простой и в нём мало команд? Ну такое. Лучше уж тогда какую-нибудь ардуину взять: там и асм проще и какое-никакое общение с внешним миром.

                А реалмодным асмом сейчас только пугать, имхо.
                Ответить
                • >Ты ведь его уже и не запустишь без виртуалки и/или ёбли с флешкой и настройками фирмвари.

                  DOSBox


                  > Учить его просто потому что он простой и в нём мало команд? Н

                  Да. Ну и еще потому, что он позволяет понять откуда есть пошли сегменты, например.
                  И прерывания.

                  >Лучше уж тогда какую-нибудь ардуину взять: там и асм проще и какое-никакое общение с внешним миром.

                  Может, и так. Но поможет ли это потом тебе узнать современный асм?
                  А это может понадобиться, если хочешь что-то дебажить
                  Ответить
                  • > поможет ли это потом тебе узнать современный асм

                    А реалмодный асм в этом как поможет, лол? Он настолько же далёк от amd64 и современных ОС, насколько и сраная avr'ка. А регистры, инструкции и прерывания ты на любом проце освоишь.

                    > сегменты

                    Которые ты никогда не увидишь, даже как системный программист.
                    Ответить
                    • >А реалмодный асм в этом как поможет, лол?

                      Ну вообще говоря да, поможет. Многие регистры остались, просто увеличились и получили доп букву. Многие инструкции остались..

                      >Которые ты никогда не увидишь,
                      Ну не совсем так, для разделения user/kernel ты можешь их встретить.
                      Ответить
                      • > для разделения user/kernel

                        Это настолько нишевая хуйня, что тех, кому это нужно в работе, можно по пальцам пересчитать...

                        Ну и я как-то не совсем понимаю, как костыльные "сегменты" из реалмода, которые тупо умножаются на 16, помогут понять разделение привилегий. Никак?

                        > Многие регистры остались

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

                        От знания имён регистров только вред будет, имхо. Потому что конпеляторы их давным-давно не юзают "по назначению".
                        Ответить
                        • >Это настолько нишевая хуйня, что тех, кому это нужно в работе, можно по пальцам пересчитать...


                          Если мы готовим программиста, а не мастера по написанию вебсайтов, то наверное мы должны научить его как работает user mode и kernel mode?

                          Или нет?

                          > Ну и я как-то не совсем понимаю,
                          Ну типа ты поймешь сегменты, потом поймешь как их используют в защищенном режиме

                          >Ага, а соглашения о вызовах другие. Сисколлы по-другому реализованы. А
                          Эмм... А какие в реальном режиме сисколы? Прерывания биоса и доса разе что;))

                          Если ты о том, что вместо INT теперь явная инструкция, то ок. Но в реальном-то сисколов не было

                          >От знания имён регистров только вред будет, имхо.

                          Ну не знаю)


                          Ок, а как бы учил ты?
                          Ответить
                          • > сисколов не было

                            А int 10h и int 21h это не сисколлы типа? :)

                            > как бы учил ты

                            Х.з., на примере какой-нибудь ардуины. Имхо, студентам будет интереснее покрутить какой-нибудь сервопривод, чем дрочить мёртвую латынь в чёрной консольке.

                            А концепции, ради которых студентам и даётся асм (инструкции, регистры, прерывания, стек, вот это всё) изучить можно на любом проце, имхо.
                            Ответить
                            • >А int 10h и int 21h это не сисколлы типа? :)


                              MAKAKA>Прерывания биоса и доса разе что;))

                              Я считаю что нет, не сисколы. Сискол всё таки идет в kernel space, и ограничвает множество того, что может понаделать юзер.

                              Впрочем, это не точно)


                              Ну ладно, я согласен, что "крутить" настоящее железо интереснее
                              Ответить
                              • > Сискол всё таки идет в kernel space

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

                                А изоляция и сейчас далеко не во всех осях есть, что ж им теперь без сисколлов жить?
                                Ответить
                                • Как ты отличаешь сискол от обычной библиотеки?
                                  Вот я запустил petuh.exe, он повесил обработчик прерывания номер 42 и по вызову его печатает на принтере хуй

                                  Я теперь сискол?
                                  Ответить
                                  • > Я теперь сискол?

                                    Скорее ioctl для драйвера рисования хуёв, лол. Это же не часть оси.

                                    З.Ы. Х.з., я не люблю слишком уж формализовывать термины.
                                    Ответить
                                    • По какому принципу делается выбор между новым сисколом или драйвером с кучей ioctl мне тоже не всегда понятно, кстати
                                      Ответить
                                      • > выбор между новым сисколом или драйвером

                                        В микроядрах выбор очевиден, лол.

                                        В монолитках -- х.з., сисколл это обычно что-то прям общее, полезное большинству софта. А иоктл -- более нишевое, нужное конкретным прогам.
                                        Ответить
                                        • В идеальных микроядрах нет никаких ioctl, а есть IPC к процессу, представляющему драйвер:)
                                          Ответить
                                  • поздравляем, вы теперь сысоп
                                    Ответить
                        • зы: вообще есть такая ментальная ловушка: Если я что-то знаю, и это знание мне как-то помогло, то мне кажется, что и всем нужно получить такое же знание

                          Но может быть это и не так. Может, в 2021-м году учить 16-тибитный асм так же не нужно, как мне не нужно было изучать PDP-11 чтобы изучить юникс
                          Ответить
                          • > не нужно было изучать PDP-11

                            По инструкциям PDP-11, кстати, хорошо видно откуда появились все эти *i++ = *j++ в няшной.
                            Ответить
                            • куд ю плиз элаборейт?
                              Ответить
                              • Ну посмотри как там инструкции выглядят, сразу понятно будет.
                                Ответить
                                • Ты про (Rn)+ ?

                                  Ну вот видишь, как полезно знать "мёртвую латынь"

                                  Не зря филологи древнерусский и старославянский учат
                                  Ответить
                    • Так, у меня куча вопросов.

                      Что вы называете реальным асмом?

                      О каких сегментах речь?

                      Ну и линканите, как это все завести на досбоксе попробовать то. Не знаю что загуглить. Просто асм под дос?
                      Ответить
                      • > Просто асм под дос?

                        Ну да, или под биос даже.

                        Tags: 8086, real mode, 16-bit.
                        Ответить
                        • >или под биос даже.
                          или даже под железо напрямую:)
                          Ответить
                          • > под железо напрямую

                            Оно не документировано, к сожалению. Банально память включить и мосты активировать не сможешь. Разве что старую материнку на блошином рынке найти...
                            Ответить
                            • Мы же говорим про DosBox, а там железо виртуальное.

                              Вполне можно помигать лампочками на клавиатуре, повесить свой обработчик клавиатуры, или связать таймер с писи спикером выдавив из него противный писк:)

                              Почти всё, что пишет Журден должно боль-мень работать с досбоксом.

                              Наверное и с VGA можно поебаться, если вдруг есть ненужный го д времени
                              Ответить
                              • > DosBox

                                Ну это как резиновую тян вместо тиндера юзать, имхо...
                                Ответить
                                • Ну а что делать, если современные "тян" закрыты толстым слоем абстракций
                                  Ответить
                              • журден!
                                Ответить
                                • Тоже всплакнул, да?
                                  Ответить
                                  • скорее орнул, это же какие-то совки зачем-то хрустели французской булкой
                                    и даже название изуродовали в самых лучших традициях перевратчиков на расеянскую мову
                                    Ответить
                      • > Что вы называете реальным асмом?
                        Асемблер под реальный (16-ти битный) режим IBMPC.

                        >О каких сегментах речь?
                        О сегментной адресации реального режима. Физический адрес (который поступал на контроллер памяти) складывался из адреса сегмента и смещения.
                        Оба регистра 16-ти битные.
                        Шина адреса изначально была 20 бит, так что адрес немного "заворачивался".

                        Указатели в ту пору могли быть "ближними" (содержать только смещение), "дальними" (и смещение и регистр) и еще всякими другими.

                        Модель памяти тоже была разная: можно было указать все сегменты на один адрес, и получить всю память размером с один сегмент

                        А можно было иметь разные сегменты для кода, стека итд.

                        В 32-х битном режиме это всё отменили, сегменты остались только для разделения на user и kernel mode. В 64-х битном все остальные использованя и вовсе запретили.

                        >как это все завести на досбоксе попробовать то
                        MASM
                        http://old-dos.ru/files/file_122.html

                        TASM
                        http://old-dos.ru/index.php?page=files&mode=files&do=show& id=120


                        Книги:
                        Кип Ирвин
                        https://vk.com/wall-51126445_18046

                        Юров
                        https://www.ozon.ru/context/detail/id/17981300/

                        Обе легко гуглятся.
                        Ответить
                        • Спасибо

                          А, помню, телегу про смещение в старой книге по посцалю, тогда ещё не вкурил, нахуя это. На современных системах это просто бесполезные названия бля двух половин одного числа.
                          Ответить
                          • В защищенном режиме начиная с 32-х разрядного да, это практически не нужно.

                            Туда завезли страницы, и они депрейкетнули сегменты (ну кроме упомянутого выше разделения на кернел и юзер)

                            А жаль, интересная была идея.
                            Ответить
                • Превет
                  Ответить
                • > штеудный ассеблер
                  > простой
                  > мало команд
                  wat?
                  Ответить
                  • В реальном режиме боль-мень нормальный
                    ну можно наверное и в z80 тогда уже копнуть))
                    Ответить
                    • чего нормальный процессор то не взять?
                      где не надо зубрить какие регистры друзья, а какие оппозиция
                      Ответить
            • А мы делали лабы на асме в асмовставках в VisualStudio по книжкам, написанным для «DOS», поэтому оттуда можно было только задания брать (Т _ T)
              Ответить
              • Какой хардкор )))
                Ответить
                • Да и багор тоже.
                  Ответить
                • малось похоже на багор, потому что я не понимаю как можно асмовставить код реального асма в студию
                  Ответить
                  • В достаточно древнюю студию наверняка можно. Версия 1.52 еще умела в 16-бит, но тогда эта хуита называлась не вижуалстудия, а "Microsoft Visual C++"
                    Ответить
                    • Там был 32-х битный ASM.
                      Ответить
                      • 16-битный инлайн ASM есть в компиляторе Digital Mars. Например, вот
                        https://github.com/DigitalMars/dmc/blob/9478d25a677f70dbe4fc0ed317cc5a5e5050ef8b/src/COMPAT16/MSCHKSTK.C
                        https://github.com/DigitalMars/dmc/blob/9478d25a677f70dbe4fc0ed317cc5a5e5050ef8b/src/core/DISKFREE.C
                        https://github.com/DigitalMars/dmc/blob/9478d25a677f70dbe4fc0ed317cc5a5e5050ef8b/src/DOS16/DOSVECT.C


                        И в Watcom C/C++ тоже вроде есть
                        Ответить
                        • Ну они и сишку под 16 бит умеют?
                          Ответить
                          • типа можно смело писать в изюме, что умею кросскопуляцию

                            инлайн это все равно не настоящий ассеблер, а игрушечный костылик, типа как програмист на трубоп аскале
                            Ответить
                            • чото не настоящий

                              мы имбедили всякую хуиту чуть ли не в турбопаскале еще.
                              Ответить
                              • вот тема для срачика, где более ненастоящие инлайны

                                в этих ваших вставлялках даже стрюков нет, я уж не говорю о параметрах, флоу-контроле и прочем необходимом для написания полноценных программ
                                Ответить
                                • В gcc нястоящий ассемблер.
                                  Ответить
                                  • Причём из-за кучи инфы, которую ему надо скормить, он может бесшовно въебать эту вставку в свой код. И даже накопипастить или выкинуть её если ты не запретил.
                                    Ответить
                                    • CheckRAMPresent PROC NEAR STDCALL PUBLIC \
                                                       USES EAX ECX EBX DI ES,
                                                         LinBufferBase: DWORD,
                                                         BufferSize:    DWORD
                                      
                                                     LOCAL SMAPBuffer: SMAPOutput,
                                                         RAMBank:      DWORD,
                                                         RAMBankEnd:   DWORD

                                      рандомная паста
                                      Ответить
                      • Тогда как вам помогала книжка про dos?
                        Ответить
                        • - принципы
                          - задания

                          Дальше пили сам по аналогии. Хотя в том же Юрове было и 32 бита.
                          Ответить
                          • Было
                            И у Ирвина было

                            Да только это уже тогда не про дос.

                            Когда ты нуб, тебе трудно понять где у тебя INT 21h, а где нужно дернуть функцию из win32api соблюдя колконвешнешн


                            Так что если ты не Борм крис касперски, то книжка про дос не особо-то и поможет кмк
                            Ответить
                            • Если они вставки ебашили, то весь обвес со вводом/выводом можно было сделать на стороне няшной. А на асме чисто само "вычислительное ядро".

                              А mov, add и т.п. на всех процах почти одинаково выглядят, можно по аналогии подобрать подходящее.
                              Ответить
                      • > книжкам, написанным для «DOS»
                        > Там был 32-х битный ASM
                        watt?
                        Ответить
        • >Лолчто, в вузе не дают IDE?

          нет не дают
          и кад не дают
          и интерпрайзговно не дают
          Ответить
          • Странно, учитывая что многие компании дают вузам софт бесплатно

            А где же студенты их берут?
            Ответить
            • на торенте

              или из 7гб архива с готовыми лабами и крякнутым софтом который передается из поколения в поколение уже 20 лет
              Ответить
              • Мы просто из машзала копировали или друг у друга...

                Официально никто ничего не выдавал, видимо предполагалось, что мы всё там на месте сделаем и сдадим (особенно курсачи и дипломы, лол).
                Ответить
              • Какой багор ))
                Ответить
          • как-то грустно у тебя было

            у нас был MSDN AA, а до того, как мы с ним познакомились, то преподы советовали бесплатные IDE типа той, что шла в комплекте с тогдашним MinGW

            борланд паскаль наверное был какой-то спёртый, но это софт из Юрского периода

            и CAD у нас тоже был, причём написанный прямо в моём же вузе
            Ответить
      • > 3. Лаконичный и изящный код.

        > Одно из очевидных достоинств языка. Python — компактность программного кода. Например, решение задачи — поменять местами значения двух переменных — на языке Паскаль решается в три оператора, в Python — в одну строку (таблица ниже):

        > Сравнение синтаксиса переприсвоения переменных в Паскаль и Python

        > Паскаль
        c := a;
        a := b;
        b := c;

        >Python
        a, b = b, a

        Да, прямо вот чувствуется серьезность подхода, как он этот паскаль уделал! Вы не можете обменять две переменные в одну строчку в паскале - паскаль сосет!

        В сишке у меня тоже есть уже написанный где-то макрос SWAP(), который отлично решает эту задачу в одну строчку, но приводить это как аргумент крутизны сишки над каким-то другим языком... как-то глупо.
        Ответить
        • > a, b = b, a

          Да говно какое-то, зачем-то по 2 раза повторяются имена...

          Даже в крестах это выглядит лучше и понятнее: std::swap(a, b).
          Ответить
          • оно еще небось умеет круто свапить для каких нить векторов не копируя туда-сюда?
            Ответить
            • Ну да, если мувается, то будет свапаться без оверхеда.
              Ответить
              • там вроде была еще какая-то спецификация для листов или векторов, которая даже до 11 делала магию

                Пусть v1 хранит свои данные в куче, и v2 их там хранит.
                Они обменялись ссылками, и все.
                Ответить
          • std::swap() для битфилдов не работает, так что SWAP()-макросня лучше.
            Ответить

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