Задать вопрос
  • Как научиться верстать без проблем?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Студентам в начале курса говорила, кто хорошо в детстве играл в лайнс, тетрис и подобное, тот будет хорошо верстать.
    Верстка это обычная геометрия средней школы записанная с помощью тегов и раскрашеная/подвинутая стилями. Всё.
    Всякие JS и т.д. это просто следующий этап.

    План действий может быть таким:
    1. Берете/получаете макет
    2. Внимательно рассматриваете его, мысленно разбивая на блоки. Думаете что куда может/должно растягиваться или уменьшаться при изменениях экрана и увеличении/уменьшении контента.
    3. Если п.2. сразу не осилился, идете гулять или спать.
    4. Возвращаетесь к п.2.
    5. Верстаете понятные большие блоки, затем их заполняете. Разбивайте задачи более простые.

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

    А совсем без проблем не выйдет, потому что экранов много, браузеров много, хотелок у заказчиков еще больше. Хорошо, когда эти хотелки интересные :)
    Ответ написан
    12 комментариев
  • RX 7900 GRE или RTX 4070 Super?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Мой опыт такой (rx480 -> rx5700xt): какая-то у них проблема есть.
    Не знаю, то ли ПО кривое, может с железом что-то не так, или мне не повезло просто. Но с rx480, помню, полгода после покупки сталкивался с проблемой черного экрана. Чего только не делал, два бп заменил, потом само-собой как-то починилось.
    Потом с rx5700xt проблемы с температурами были. На новой карте, считай, пришлось термопасту менять - тогда только нормально заработало.

    Вот почти четыре года назад приобрёл rtx3080 на старте продаж - никаких проблем вообще. Вставил и работает.
    Ответ написан
    Комментировать
  • Как получить данные с сайта росреестра?

    Vindicar
    @Vindicar
    RTFM!
    Правило номер ноль при парсинге: при любых проблемах сохраняй на диск то, что тебе пришло в ответе от сервера.
    То, что ты видишь в браузере - это не обязательно то же самое, что браузер получил от сайта.
    То, что браузер получил от сайта - это не обязательно то же самое, что requests получит от сайта.

    В данном случае, и requests и браузер получают в ответе вот это:
    <body style="height: 100%; width:100%;">
    <div id=app style="height: 100%; width:100%;"></div>
    <script src=js/chunk-vendors.c1d200da.js></script>
    <script src=js/chunk-common.adcda62e.js></script>
    <script src=js/chunk-esri.caf28189.js></script>
    <script src=js/index.ca134891.js></script>
    </body>

    Как видишь, нужного элемента тут просто нет, потому что он создаётся динамически, через JavaScript. А BS не выполняет скрипты.

    Варианта только два:
    1. Выяснять, каким запросом сайт подтягивает данные для этого, научиться этот запрос делать самостоятельно и вытаскивать искомые данные из полученного. Медленно и трудно на подготовительном этапе, зато потом работает сравнительно быстро... если, конечно, сайт защиту от парсинга не поставит.
    2. Запускать управляемый браузер, дать ему загрузить страницу и выполнить скрипты, а потом уже искать нужные данные. Быстрое решение в плане разработки, но более медленное и ресурсоёмкое в дальнейшем использовании.
    Ответ написан
    Комментировать
  • Как получить данные с сайта росреестра?

    NeiroNx
    @NeiroNx
    Программист
    для безграмотных парсеров поиск росреестра:

    https://pkk.rosreestr.ru/api/features/?text=52.929979122449325+87.97534995053527&tolerance=2&types=[2,3,4,1,21,5,10]


    вернет он:
    {
      "total": 5,
      "results": [
        {
          "sort": 42120102004,
          "type": 2,
          "center": {
            "y": 6970386.423234693,
            "x": 9794346.776440643
          },
          "attrs": {
            "cn": "42:12:0102004",
            "id": "42:12:102004"
          },
          "extent": {
            "xmax": 9795238.11208436,
            "ymin": 6969855.0191011,
            "ymax": 6971012.594670494,
            "xmin": 9793163.65570717
          }
        },
        {
          "sort": 4212,
          "type": 3,
          "center": {
            "y": 6950818.390114815,
            "x": 9810172.497224698
          },
          "attrs": {
            "cn": "42:12",
            "id": "42:12",
            "name": "Таштагольский"
          },
          "extent": {
            "xmax": 9934125.20280487,
            "ymin": 6829546.777098134,
            "ymax": 7049761.803853536,
            "xmin": 9674999.04333556
          }
        },
        {
          "sort": 42,
          "type": 4,
          "center": {
            "y": 7328079.667631133,
            "x": 9706880.109152177
          },
          "attrs": {
            "cn": "42",
            "id": "42",
            "name": "Кемеровский"
          },
          "extent": {
            "xmax": 9952694.29980072,
            "ymin": 6829546.774971992,
            "ymax": 7726492.011682568,
            "xmin": 9401209.32240626
          }
        },
        {
          "sort": 4212010200400025,
          "type": 1,
          "center": {
            "y": 6970070.760976506,
            "x": 9793366.321078256
          },
          "attrs": {
            "address": "Кемеровская область, р-н. Таштагольский, пгт. Шерегеш, ул. Лесная, д. 3",
            "cn": "42:12:0102004:25",
            "id": "42:12:102004:25"
          },
          "extent": {
            "xmax": 9793403.39482761,
            "ymin": 6970010.120180669,
            "ymax": 6970129.685452594,
            "xmin": 9793328.57189643
          }
        },
        {
          "sort": 4212010200401338,
          "type": 5,
          "center": {
            "y": 6970067.466684912,
            "x": 9793370.470713653
          },
          "attrs": {
            "address": "Российская Федерация, Кемеровская область-Кузбасс, Таштагольский муниципальный район, Шерегешское городское поселение, пгт. Шерегеш, ул. Лесная, дом 3",
            "cn": "42:12:0102004:1338",
            "id": "42:12:102004:1338"
          },
          "extent": {
            "xmax": 9793387.58929377,
            "ymin": 6970050.160377153,
            "ymax": 6970087.472030083,
            "xmin": 9793353.0083641
          }
        }
      ]
    }

    парсится такое на раз-два.

    надеюсь пояснять про то какое поле что значит не надо?
    Ответ написан
    3 комментария
  • В чем различие == и IS в Python?

    sim3x
    @sim3x
    The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1. I suspect the behaviour of Python in this case is undefined. :-)


    https://docs.python.org/2/c-api/int.html#c.PyInt_F...

    в 3 тоже самое
    Ответ написан
    Комментировать
  • В чем различие == и IS в Python?

    @nirvimel
    Экземпляр класса - это и есть объект, а переменная это просто имя, которому сопоставлено некоторое значение. А так как в Python любое значение - это объект (экземпляр) какого-то класса, то операторы is и == всегда применяются к значениям переменных, то есть к объектам (экземплярам) класса.

    А чтобы понять различия между операторами is и == запустите этот код и посмотрите на вывод:
    class AlwaysEqual(object):
        def __eq__(self, other):
            return True
    
    instance = AlwaysEqual()
    print (instance == 42)  # True
    print (instance is 42)  # False
    print (instance is AlwaysEqual())  # False
    print (instance is instance)  # True

    Это пример класса, любой экземпляр которого всегда равен (==) всему, чему угодно.
    В то же время, экземпляр этого класса не является (is) другим экземпляром этого же класса и ничем другим кроме самого себя.
    Ответ написан
    Комментировать
  • В чем различие == и IS в Python?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    is проверяет, что переменные указывают на один и тот же объект в памяти. Но особенность в том, что, для экономии памяти, булевы типы, числа и строки могут кешироваться.
    Ответ написан
    Комментировать
  • В чем различие == и IS в Python?

    - оператор==проверяет равенство значений двух объектов
    - оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти

    Python (CPython, если быть точнее) в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны такие казусы:

    >>> str1 = 'hello'
    >>> str2 = 'hello'
    >>> str1 == str2
    True
    >>> str1 is str2
    True
    >>>


    Но стоит сделать строку длиннее и всё встаёт на свои места:

    >>> str1 = 'hello, my crazy world'
    >>> str2 = 'hello, my crazy world'
    >>> str1 == str2
    True
    >>> str1 is str2
    False
    Ответ написан
    2 комментария
  • Почему время жизни параметров берутся из дженериков?

    bingo347
    @bingo347
    Crazy on performance...
    Советую почитать вот эту статью: https://habr.com/ru/articles/515034/

    А вообще, времена жизни - это часть типа.
    Условный u32 имеет время жизни 'static
    А ссылка на u32 - &'a u32 (где 'a это диапазон от объявления исходного u32 до его последнего использования) будет иметь время жизни 'a
    Пример по сложнее, ссылка на ссылку - &'a &'b u32 - будет иметь время жизни наименьшее из 'a и 'b

    Передаётся через дженерик, так как функция должна работать с абстрактным временем жизни
    fn example<'a>(r: &'a u32) -> &'a u32 { r }
    
    fn f_a() {
        let a = 1;
        let r = example(&a);
    }
    
    fn f_b() {
        let b = 1;
        let r = example(&b);
    }
    В этом примере очевидно что переменная a в f_a будет иметь время жизни отличное от b в f_b, но example спокойно работает и с тем и с другим, то есть она является обобщённой по времени жизни, в первом случае она вернёт ссылку с временем жизни как у переменной a, во втором - как у b.

    А ещё помимо времен жизни и типов в дженериках могут быть некоторые константы:
    fn make_array<const SIZE: usize>(el: u32) -> [u32; SIZE] {
        [el; SIZE]
    }
    
    let arr = make_array::<3>(1); // [1, 1, 1]
    Ответ написан
    3 комментария
  • Ошибка Allowed memory size of 4294967296 bytes exhausted (tried to allocate 81920 bytes)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Исправить скрипт, чтобы ему для работы не требовалось 4 Gb оперативки.
    Ответ написан
    1 комментарий
  • Где хранить бесконечность записей (111 * 10^29)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это что вы такое собрались хранить?
    95*111*1029 байт ≈ 1034 байт ≈ 1022 терабайт
    Значит покупаете тысячу миллионов миллионов миллионов винчестеров на 10 Tb и получаете своё хранилище.
    Ответ написан
    12 комментариев
  • Каков план личностного развития JavaScript программиста с нуля?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Выучить русский язык. Узнать, что такое "личностное развитие" и чем оно отличается от профессионального.
    Ответ написан
    2 комментария
  • В чем нарушение синтаксиса в данном запросе? Как его исправить?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    https://dev.mysql.com/doc/refman/8.4/en/with.html
    В mysql нет синтаксиса with ... insert ...
    insert ... select допустим в виде INSERT ... WITH ... SELECT ...

    мне понравилась идея делать обширные подзапросы отдельно

    Аккуратнее, оно к очень большим приключениям.
    Ответ написан
    Комментировать
  • Как настроить вход в систему только после активации сети?

    @NortheR73
    системный инженер
    Computer Configuration -> Administrative Templates -> System -> Logon -> Always wait for the network at computer startup and logon
    Ответ написан
    1 комментарий
  • Как в линукс на звуковой карте разделить выходы колонок и наушников, для одновременного вывода разных звуков?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    В линуксах звуковая подсистема обычно строится на двух компонентах:
    1) Звуковых драйверах (ALSA или OSS). OSS драйверы практически нигде сейчас не используются. В основном везде ALSA.
    2) И, Аудио-сервера. Основных сейчас три: Pulseaudio, Pipeware и Jack.

    Pulseaudio сейчас практичеки везде. Pipewire идет на смену ему (по API и управлению практически идентичен).
    Jack ориентирован на профессиональную обработку аудио (и есть за что его хвалить).
    Так вот, микшированием, выводом в разные источники и прочей белибердой как раз и занимается аудио-сервер.

    Так что смотрите на управление выбранным и установленным в систему аудио-сервером.
    И да, у каждого аудиосервера куча модулей, для лупов, микширования, переназначения и прочего...
    Почитать можно тут - https://wiki.archlinux.org/title/PulseAudio_(%D0%A...
    Ответ написан
    24 комментария
  • Делают ли приложения на двух и более активностях в 2024?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Угу, а я еще подобных вопросов могу назадавать.
    Пишут ли приложения меньше 100 мегабайт в ХХХХ году ?
    Жива ли ява или котлин ее совсем вытеснил.
    Не пора ли забыть про лайоты и генерить интерфейс через код. (бррр до сих YII2 с отвращением вспоминаю)

    Одна активность и куча фрагментов - это имхо следствие удобного для простых случаев сеймества классов Navigate.
    Но в более сложных приложениях там тоже не все так замечательно.
    Например в приложении магнита на главном экране три контейнера, в которых меняются фрагменты. Хотя может уже переписали.

    Нет серебряной пули. А в этом году их еще новых завезли.
    Ответ написан
    1 комментарий
  • Есть ли кроссплатформенное решение для ассоциации кастомной схемы URI со своим приложением?

    fenrir1121
    @fenrir1121
    Начни с документации
    На питоне не видел, но случайно сталкивался с решением на расте. В src лежит 3 файла с понятной логикой для каждой системы, вероятно получится переписать под себя или использовать через PyO3
    Ответ написан
    Комментировать
  • Взаимодействие методов внутри класса?

    Maksim_64
    @Maksim_64
    Data Analyst
    далее создал 2 бойца (боец 1 и боец 2) и присвоил им класс fighter

    Ты создал два экземпляра класса fighter (в python принято давать имена классам с заглавной буквы) fighter-> Fighter.

    далее я бойцом 1 применил метод удар на бойца 2
    Это тебе так захотелось, в описании метода класса 'udar' об этом нет слова. Твой класс умеет бить только собственный экземпляр точнее имеет намерение ударить себя (так как атрибут здоровья не обновляется)

    Нужно передавать экземпляр другого класса, в общем измененная версия твоего кода
    class fighter:
        def __init__(self,name=None,hp=None,dmg=None,):
            self.name = name
            self.hp = hp
            self.dmg = dmg
    
    
        # def udar(self,hp,dmg):
        #     print("Наносит урон с руки")
        #     rep = self.hp - self.dmg
        #     return "Осталось здоровья: " + rep
    
        def udar(self,other):
            print(self.name + " наносит урон с руки" 'c уроном ' + str(self.dmg))
            other.hp = other.hp - self.dmg
            return "У " + other.name + " осталось здоровья: " + str(other.hp)
    boec = fighter("вася",200,22)
    boec2 = fighter("bob",100,19)
    boec.udar(boec2)
    Ответ написан
    8 комментариев