Задать вопрос
  • Как подключиться к Wifi на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе работать с Wifi на С++ нужно будет только в одном случае - когда ты разработчик драйвера Wifi устройства.

    В остальных случаях - ты пишешь обычные приложения на С++ которые используют сокеты TCP/UDP, которые (сокеты) в свою очередь работают через стек технологий ОС для кидания пакетов в Wifi интерфейсы в соотвествии с правилами таблиц маршрутов.
    Ответ написан
    2 комментария
  • Где искать svg всех городов, районов, областей, стран?

    hint000
    @hint000
    у админа три руки
    CityCat4, почти согласен
    Я бы начал с 2gis или Яндекс-Карт.
    Только не 2gis или Яндекс, а OSM (OpenStreetMap), ибо Open - ничего не спрятано, вот они все исходные данные, вот оно описание формата, легче уж некуда.
    https://www.openstreetmap.org/#map=12/42.8768/74.6013
    https://wiki.openstreetmap.org/wiki/RU:Tag:boundar...
    Ответ написан
    2 комментария
  • Странная не последовательная работа функции в tkinter python?

    @oxidizerby Автор вопроса
    Подошло решение от @Vindicar
    Только немного изменил в моём случае лучше использовать root.update()
    Изменил функцию так:
    def run():
        print(1)
        label1['text'] = 'Но он меняется после sleep и print(2) и print(3)'
        root.update() # Вот эта строка решает проблему!
        print(2)
        sleep(5) # Для наглядности
        print(3)
    Ответ написан
    Комментировать
  • Как мне применить список из функции в другой функции?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А в чем, собственно, проблема? Передайте это значение в функцию в качестве аргумента, или вон вы глобальной переменной уже пользуетесь, можете и тут наговнокодить так же.
    Вы не объясняете что конкретно у вас не получается. В чем вопрос? Предоставляете довольно объемный код, который, судя по вопросу, написали не вы и чего хотите? Чтобы вам краткий, но исчерпывающий курс по программированию с нуля тут изложили? На какой-то другой ответ в вопросе просто недостаточно информации.

    А бесплатных курсов и репетиторов тут нет.
    Ответ написан
    2 комментария
  • Почему ничего не выводится хотя ошибок нет?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Да вы задрали. Всё он выводит. Программа сразу закрывается, потому что она не обязана ждать. Она ЗАВЕРШИЛАСЬ!
    input() после print напиши и не закроется, пока не нажмешь что-то
    Ответ написан
    1 комментарий
  • Возникла ошибка Type Error в Python при изучении классов. Где и что в коде не правильно?

    Maksim_64
    @Maksim_64
    Data Analyst
    потерял скобки при создании экземпляра класса. deck = Deck(), Я скопировал, твой код и запустил у себя, там следом еще ошибка, вот в этой строе
    elf.cards[i], self.cards[j] = self.cards[j], self.cards[i]
    говорит list index out of range по всей видимости вот в этой строке j = random.randint(i, num_cards-1) Нужно, добавить -1, что я и сделал тогда все работает.
    Ответ написан
    1 комментарий
  • AttributeError: 'NoneType' object has no attribute 'get_text'. Как решить?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В вашем коде не так - это отсутствие проверок на возвращаемые значения. Любой из селекторов может не найти требуемых элементов и вернуть None, а у None никаких методов нет, включая метод get_text.
    Ответ написан
    2 комментария
  • Как мне исправить ошибку KeyError: 18?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Хорошо бы понять, откуда в class_id попадает невалидное значение ключа?
    1. Если такого быть не должно, надо искать причину.
    2. Если такое возможно, надо обрабатывать это исключение через try/except KeyError, либо предварительно валидизировать значение class_id
    Ответ написан
    Комментировать
  • Экстренное завершение работы чат бота Telegram. Как решить проблему?

    nki
    @nki
    bezkart.ru готовая система лояльности
    т.к программирую всего 2 дня

    Тогда вам не с бота надо начинать, а уверенно знать язык и его основные конструкции. Успеете еще ботов написать.
    Ответ написан
    2 комментария
  • Как возвратить курсор на 2 символа назад в консоли?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Комментировать
  • Как корректно отобразить данные из ini файла?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Ini - стандартизированный формат. Для работы с ним есть готовые инструменты
    https://docs.python.org/3/library/configparser.html
    Ответ написан
    Комментировать
  • Как код с графическим интерфейсом на основе PyQt6 собрать в .exe?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PyQt
    Седой и строгий
    Безотносительно того, как это делается, стоит иметь ввиду, что это незаконно. Лицензия опенсорсного Qt не позволяет включать библиотеку в исполняемый файл, будь то хоть статическая линковка, хоть упаковка.
    Ответ написан
    Комментировать
  • Как правильно подходить к возвращаемым типам функциях php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Хорошие вопросы.
    Разумеется, увеличивать количество запросов к БД ради красивой типизации - это абсолютно не вариант.

    Как можно увидеть, в приведенной цитате написано не однозначно, а "скорее всего".
    И поэтому надо конечно стараться, чтобы функция возвращала какое-то одно значение, но не делать этого любой ценой. Поэтому getUserDataFromDatabase вполне может возвращать array|false, а getUserIdFromDatabase - int|false, хотя я бы с ней не заморочивался, первой вполне достаточно. А userIsPresentInDb вообще не нужна, вместо неё можно использовать одну их предыдущих.

    Другое дело, что нужного результата можно добиться и другим способом.
    Ведь вполне можно вернуть пустой массив. И таким образом формально соблюсти типизацию.

    return $result ?: []; // дёшево и сердито

    Но это будет всё равно не очень красиво. В одной стороны - да, для проверки, вернула ли функция непустое значение, такой вариант вполне сгодится. Но с другой стороны все равно как-то неаккуратненько. Ведь мы на самом деле ждём не абы какой массив, а вполне определённый, с конкретным набором полей. То есть, если эта функция вернет массив вида [0, 42, 100500], то это будет явно не то, что нам нужно, но при этом типизация и слова поперёк не скажет.

    Если думать от типизации, то функция getUserDataFromDatabase, возвращающая какой-то абстрактный массив - это нонсенс, бессмыслица. Эта функция должна возвращать юзера. Поэтому в идеале надо придумать способ указать, что функция возвращает не абстрактный, а конкретный массив определенного формата. Тем более, что такой способ как раз есть, ведь типизованный массив - это же объект! И для данного случая даже специальный паттерн есть - ValueObject (хотя в случае с пользователем лучше будет все-таки делать полноценный класс, содержащий не только данные, но и методы, например auth(), который сравнивает хэш пароля с введенным).

    Соответственно, в идеале функция должна возвращать объект, представляющий пользователя.

    И уже в этом объекте поле id может либо либо быть нулём, либо иметь какое-то положительное значение. Или даже объект может содержать отдельное свойство, заполнен/не заполнен.

    И вот в этом случае типизация заиграет совсем новыми красками, и будет использоваться на 100%
    function getUserFromDb( int $userId ) : UserObject {
            return $result ? UserObject::fillFromArray($result) : new UserObject();
    };
    $user = getUserFromDb();
    if (!$user->id) {
        // нинашли :'(
    }


    Но опять же, как пишет ниже Сергей delphinpro, зависит от задачи.
    И решив проблему правильной типизации значения, которое функция вернет, если нашла пользователя, можно вернуться к вопросу о том, что возвращать, если функция ничего не нашла. И в этом случае вполне подходящим вариантом будет вернуть null
    function getUserFromDb( int $userId ) : ?UserObject {
        return $result ? UserObject::fillFromArray($result) : null;
    };
    
    if ($user = getUserFromDb()) {
        // нашли :)
    }
    Ответ написан
    6 комментариев
  • Почему boolean использует больше памяти чем byte?

    mayton2019
    @mayton2019
    Bigdata Engineer
    С точки зрения ассемблера - удобнее делать операции над целым числом (DWORD) 32bit. Он - же int.
    В масштабах современной памяти - безразлично выделять 1 байт или 4 байта. Все равно
    другие структуры больше захватят тысячекратно. А простота компилируемого кода - здесь важнее.

    Вот поэтому компилляторы и собирают boolean в int. А язык С++ позволяет проводить аналогии
    между int и boolean. В зависимости от контекста число может быть как числом так и логической
    величиной. (Тесная связь с ассемблером да).

    А если речь допустим идет о массиве boolean - тогда смысл в экономии есть. В Java например
    такой массив действительно будет использовать биты внутри байта.

    В базах данных например (Oracle) вообще нет булевого типа с точки зрения хранения. Там предлагают
    символьный тип 'Y' или 'N'. Это связано с дисковыми структурами хранения данных в datarow.

    Поэтому sizeof(булевый тип) будет всегда парадоксом в разных системах программирования и языках.
    Как компиллятору удобнее так и соберет.
    Ответ написан
    Комментировать
  • Почему пустой tuple занимает больше памяти, чем tuple с None?

    В случае b у тебя не tuple, а просто None.
    Чтобы получился tuple из одного элемента - нужно добавить запятую
    b = (None,)
    b.__sizeof__() # 32
    Ответ написан
    1 комментарий
  • Как обрабатывать такие исключения в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Никак, потому что это, во-первых, не исключения, а во-вторых, эти сбои происходят не в питонячьем коде.
    Ответ написан
    2 комментария
  • Как правильно вывести массив из бд и перебрать его?

    Mi11er
    @Mi11er
    A human...
    Вопрос конечно детский
    У вас в массиве лежит объект , в объекте ключи и значения

    Значит первая итерация , по объектам
    Вторая уже по ключам.

    Код напишите сами.
    Ответ написан
    Комментировать
  • Как исправить ошибку с регулярными выражениями?

    @o5a
    Если пытались исключить все символы из набора, то надо было их заключить в квадратные скобки.
    text = re.sub('[–—!"#$%&()*,-./:;<=>@[\\]^_`{|}~\t\n\xa0–\ufeff]', '', str(text))

    А в изначальном виде у вас написан не набор символов, а последовательный шаблон поиска.
    Лучше почитайте хотя бы основы регулярных выражений, поймете ошибку.
    Но помимо этого Вы что-то странное делаете: из списка формируете строку зачем-то str(text) и из нее удаляете символы. Вы не умеет работать со списками? Для чего это было нужно?
    Ответ написан
    Комментировать
  • (вопрос от полного чайника) Как писать код, который будет работать с внешним сайтом?

    @rPman
    У тебя тут сразу несколько технологий и задач, достаточно сложных и сильно друг от друга отличающихся:
    1. сбор данных с сайта
    целая вселенная - это и реверсинженеринг сайта, и борьба против автоматизированных сборщиков (в зависимости от того как заморочился с этим владелец сайта)
    Настоятельно рекомендую сразу работать с сайтом из браузера, техник много, от простого открытия сайта в обычном браузере с инжектом твоего javascript (например расширение tempermonkey), который будет ходить по сайту, до запуска безголового браузера и управление им из своей программы с помощью selenium, а там кликать кнопки и собирать данные, отправляя их тебе на сервер или сохраняя в локальной базе браузера - localStorage/indexeddb/...
    2. обработка данных
    тесно связана со сбором, данные нужно не просто собрать но и привести к машиночитаемому виду (бывают ситуации когда данные создаются людьми без определенного формата, в этом случае совсем туго), так же это тесно перекликается с технологиями борьбы владельцев сайтов с автоматическими собирателями данных
    Совет, вместе с текстовыми данными собирай информацию о расположении, гораздо проще догадываться о назначении данных, если знаешь их относительную позицию.
    3. анализ данных и поиск закономерностей плюс визуализация
    это не только нейронные сети, алгоритмов тьма, разбираться хотя бы на уровне что это и в каких ситуациях применять, придется... и самое главное результата может и не получиться но узнаешь ты только потом
    работа творческая, и готовых решений скорее всего нет (хотя спасибо, за последние лет 10 собран такой пласт библиотек для работы, один tenserflow и torch чего стоит. Загляни на weka, это огромный сет библиотек и алгоритмов (java) как источник информации об этих алгоритмах
    Ответ написан
    1 комментарий
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария