• В чем различие == и 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 комментария
  • Почему разные значения в операторе is в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Предполагаю, что CPython при компиляции скрипта сохраняет литерал 1234 в соответствующую область памяти, а потом в переменные a и b записывает на него ссылку. В консоли же у него нет единицы компиляции, из которой можно выделить общие литералы.
    Ответ написан
    Комментировать
  • В чём разница между статическими либами и пакетами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пакет - это набор файлов, распространяемых вместе. В пакете могут быть любые файлы, не обязательно библиотеки.
    $ dpkg -L libfftw3-bin
    /.
    /usr
    /usr/bin
    /usr/bin/fftw-wisdom
    /usr/bin/fftw-wisdom-to-conf
    /usr/bin/fftwf-wisdom
    /usr/bin/fftwl-wisdom
    /usr/bin/fftwq-wisdom
    /usr/share
    /usr/share/doc
    /usr/share/doc/libfftw3-bin
    /usr/share/doc/libfftw3-bin/copyright
    /usr/share/man
    /usr/share/man/man1
    /usr/share/man/man1/fftw-wisdom-to-conf.1.gz
    /usr/share/man/man1/fftw-wisdom.1.gz
    /usr/share/man/man1/fftwf-wisdom.1.gz
    /usr/share/man/man1/fftwl-wisdom.1.gz
    /usr/share/man/man1/fftwq-wisdom.1.gz
    /usr/share/doc/libfftw3-bin/NEWS.gz
    /usr/share/doc/libfftw3-bin/README
    /usr/share/doc/libfftw3-bin/README.Debian
    /usr/share/doc/libfftw3-bin/changelog.Debian.gz
    Как видите, в пакете бинарники, доки и маны.
    $ dpkg -L libfftw3-dev
    /.
    /usr
    /usr/include
    /usr/include/fftw3.f
    /usr/include/fftw3.f03
    /usr/include/fftw3.h
    /usr/include/fftw3l.f03
    /usr/include/fftw3q.f03
    /usr/lib
    /usr/lib/x86_64-linux-gnu
    /usr/lib/x86_64-linux-gnu/libfftw3.a
    /usr/lib/x86_64-linux-gnu/libfftw3_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3f.a
    /usr/lib/x86_64-linux-gnu/libfftw3f_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3f_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3l.a
    /usr/lib/x86_64-linux-gnu/libfftw3l_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3l_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3q.a
    /usr/lib/x86_64-linux-gnu/libfftw3q_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3q_threads.a
    /usr/lib/x86_64-linux-gnu/pkgconfig
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3f.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3l.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3q.pc
    /usr/share
    /usr/share/doc
    /usr/share/doc/libfftw3-dev
    /usr/share/doc/libfftw3-dev/copyright
    /usr/lib/x86_64-linux-gnu/libfftw3.so
    /usr/lib/x86_64-linux-gnu/libfftw3_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3f.so
    /usr/lib/x86_64-linux-gnu/libfftw3f_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3l.so
    /usr/lib/x86_64-linux-gnu/libfftw3l_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3l_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3q.so
    /usr/lib/x86_64-linux-gnu/libfftw3q_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3q_threads.so
    /usr/share/doc/libfftw3-dev/NEWS.gz
    /usr/share/doc/libfftw3-dev/README
    /usr/share/doc/libfftw3-dev/README.Debian
    /usr/share/doc/libfftw3-dev/changelog.Debian.gz
    Опять же видим, что dev-пакет содержит файлы, необходимые разработчику - заголовки (.h), статические (.a) и разделяемые (.so) библиотеки.

    Библиотека - это отдельный файл для статической линковки или разделяемый (.so).
    Ответ написан
    1 комментарий
  • Как отключить контекстное меню в яндекс браузере?

    @u007
    А теперь ещё и "Настройки - Переводчик - Переводить выделенные слова и фразы".

    Так, вдруг кто тоже мучается этой проблемой.
    Ответ написан
    2 комментария
  • Как отключить контекстное меню в яндекс браузере?

    @dimkasklyar
    Настройки -> Дополнительные настройки -> Контекстное меню -> снять галочку с пункта "Показывать при выделении текста кнопки "Найти и "Копировать""
    Ответ написан
    Комментировать
  • Возможно ли использование телефонного кабеля вместо сетевого?

    @TheBigBear
    СтарОдмины мы
    много лет назад пара VDSL2 конвертеров (модемов) Planet у меня держала 30 Мбит на 600 метров на обычной полёвке (кабель такой телефонный) кинутой вдоль силовых кабелей
    А на 50 метрах 100 Мбит - легко
    Найти на Авито пару VDSL2-конвертеров сейчас несложно
    Но если объекты в прямой видимости - сейчас проще всего WiFi мост с направленными антеннами. Правильное оборудование пробивает до 11 километров, так что 40 метров - это ни о чём.
    И сразу рекомендую ставить 5 ГГц (2.4 уже основательно засран, особенно в городе)
    Ответ написан
    Комментировать
  • Как автоматизировать касания по экрану на iOS? Как подобрать пароль?

    @TheBigBear
    СтарОдмины мы
    купи 10 стилусов (или перчатки со специальной резинкой на конце)
    10 релюшек
    1 Ардуринку и камеру или датчик света
    Напиши программу последовательного опускания релюшками стилусов на экран
    с помощью камеры или датчика света отслеживай изменение экрана
    Ну или купи (или одолжи у кого-нибудь) 3Д принтер, смартфон на подвижный стол, вместо сопла приспособь емкостную резинку или стилус и напиши программку для него.
    Ответ написан
    3 комментария
  • Насколько ноутбук HONOR MagicBook X 15 совместим с Linux системами?

    @AnoMorCH
    У меня такой же ноутбук. Ubuntu 20.04 работает полгода прекрасно: артефактов нет, проблем со сном нет, все жесты на тачпаде работают, блютуз наушники и мышка работают одновременно без проблем, вай-фай выдает стабильные 250мбит/сек на SpeedTest, батарейка держит 4 часа при интенсивном пользовании. Из недостатков: не работает отпечаток пальца и пришлось отключить поворот экрана, т.к. ноутбук мог произвольно поворачиваться при переносе и не возвращаться в исходное положение (было забавно, когда на паре подошел спросить вопрос у препода, а у меня весь под перешел в книжный формат; препод потроллил за это)
    Ответ написан
    2 комментария
  • Насколько ноутбук HONOR MagicBook X 15 совместим с Linux системами?

    Zoominger
    @Zoominger Куратор тега Ноутбуки
    System Integrator
    Есть информация про 14-ый: https://www.linux.org.ru/forum/linux-hardware/15490752
    Артефакты из-за кривого свободного драйвера, такое решается установкой проприетарного драйвера.
    Иногда не просыпается после открытия крышки - это норма в Linux, заведите привычку сохранять все данные перед закрытием крышки.
    Про сканер отпечатков забудьте сразу.
    Тачпад должен работать и даже жесты кое-какие будет поддерживать.
    Могут быть проблемы с WiFi и BlueTooth, погуглите поддержку модуля.
    Ответ написан
    5 комментариев
  • Как создать новый раздел на весь диск?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    echo -e "label:mbr\nstart=1M" | sfdisk /dev/sdb
    создаст таблицу разделов mbr на диске /dev/sdb с одним разделом на весь диск у которого начальное смещение составляет 1M

    другой пример
    echo -e "label:gpt\nsize=100M\nsize=+" | sfdisk /dev/sdb

    здесь мы создаём таблицу разделов gpt и два раздела, один на 100M а второй на всё оставшееся место.

    если нужно ресайзить уже готовые разделы то глянь здесь где всё доходчиво написанно
    но а вообще смотри ман
    и кстати у sfdisk, fdisk и cfdisk общая поддержка создания сценария что иногда бывает довольно удобно, смотри (s)fdisk scripts

    п.с.
    sfdisk довольно недооценённая утилита в которую если вникнуть позволяет творить чудеса

    Диск должен быть разбит на 4 раздела. 3 я создаю из дампа sfdisk. Нужно создать еще один. Последний. На все оставшееся место.

    всё очень просто:
    echo -e "size=+" | sfdisk -N 4 /dev/sdb

    вот небольшой пример
    $ truncate -s 1G disk.img
    $ echo -e "label:mbr\nsize=100M\nsize=200M\nsize=300M" | sfdisk disk.img
    $ sfdisk --dump disk.img
    label: dos
    label-id: 0x58b01c8a
    device: disk.img
    unit: sectors
    sector-size: 512
    
    disk.img1 : start=        2048, size=      204800, type=83
    disk.img2 : start=      206848, size=      409600, type=83
    disk.img3 : start=      616448, size=      614400, type=83
    
    $ echo -e "size=+" | sfdisk -N 4 disk.img
    $ sfdisk --dump disk.img
    label: dos
    label-id: 0x58b01c8a
    device: disk.img
    unit: sectors
    sector-size: 512
    
    disk.img1 : start=        2048, size=      204800, type=83
    disk.img2 : start=      206848, size=      409600, type=83
    disk.img3 : start=      616448, size=      614400, type=83
    disk.img4 : start=     1230848, size=      866304, type=83
    Ответ написан
    3 комментария
  • Как стать пентестером (bug bounty)?

    @d-sem
    Книга, например, вот эта https://habr.com/ru/company/piter/blog/515594/
    Ответ написан
    Комментировать
  • Как узнать количество уникальных результатов random.shuffle?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Число перестановок списка длины n - это n! (факториал: n!=1*2*3*...*n). Это основы комбинаторики.

    Так что если надо просто число различных вариантов, то:

    math.factorial(len(our_list))
    Ответ написан
    Комментировать
  • Стакаются ли sqlite и тг бот?

    Vindicar
    @Vindicar
    RTFM!
    1. Что значит "одновременного вноса"? sqlite не потокобезопасна, но если ты используешь асинхронную библиотеку для телеги с дефолтной реализацией event loop, то у тебя никогда не будут выполняться 2 обработчика одновременно. Дефолтная реализация строго однопоточна, и проблем с sqlite не будет.
    2. 500 человек - это не мера нагрузки. Самая примитивная мера нагрузки - обращений к базе в единицу времени.
    А вообще более точно было бы проводить измерение времени выполнения разных частей обработчика события. Если бот потребляет значительную долю ресурсов своего хостинга и при этом проводит много времени обращаясь к БД - вот тогда стоит задуматься о смене БД. И даже тогда можно сначала посмотреть в сторону aiosqlite, чтобы не тормозить всего бота, пока запрос к БД выполняется.
    Ответ написан
    Комментировать
  • Разница между L2 и L3 vpn разница?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    l2 канал требует прямой связности. Вы должны пробросить влан из точки А в точку Б. Через других провайдеров, полстраны, на другой континент... Как вам угодно )

    l3 требует связности между двумя ip адресами, т.е. наличия маршрутизации.

    Если речь идет о нескольких провайдерах - например вам надо пробросить влан в пределах города - то вариант, что вы сможете договориться со всеми провайдерами по пути о пробросе влан по Л2 - маловероятен. А вот Л3 впн вы сможете в такой ситуации построить вообще не обращаясь к провайдерам.
    Ответ написан
    3 комментария
  • Каким инструментом лучше организовать работу с IP-камерами на Qt?

    alxndrlsn
    @alxndrlsn Автор вопроса
    Инженер
    Все встало на свои места неожиданно: слегка разочаровавшись в QCamera, а также обнаружив, что ffserver больше не поддерживается с июля 2016 года,..

    July 10th, 2016, ffserver program being dropped(с)ffmpeg.орг/индекс.html#ffserver

    ..смотрел похожие классы и через QVideoWidget вышел на QMediaPlayer, который, начиная с версии Qt 5.12.2, позволяет использовать gst-pipeline при установленном GStreamer. Иными словами, в методе QMediaPlayer::setMedia(QMediaContent) можно вставить строку QUrl, содержащую обычную команду для gstreamer:
    что-то вроде этого (просто для примера):
    player->setMedia(QUrl(gst-pipeline: rtspsrc location=rtsp://user:passwrd@StaticCameraIP:port/path ! rtph264depay !  h264parse ! omxh264dec ! nvvidconv ! video/x-raw, width=1920, height=1080, format=BGRx ! videoconvert !  ximagesink sync=false));

    Работает хорошо, однако проверял в условиях цейтнота, поэтому столкнувшись с некоторым непонятным моментом, не нашел пока: как бороться с тем, что поток открывается в совершенно новом окне, игнорируя вызванный ранее QMediaPlayer::setVideoOutput(QVideoWidget). Возможно это потому, что у меня экземпляр QMediaPlayer не является дочерним по отношению к QVideoWidget. Но главное - работает!
    Ответ написан
    Комментировать
  • Каким инструментом лучше организовать работу с IP-камерами на Qt?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Мы лет шесть назад писали похожую штуку, тогда взяли libvlc, для неё есть Qt обвязка. Работало достаточно хорошо, насколько я помню. Но вот прям стандартных средств, чтобы управлять камерами — я тогда не нашел.
    Ответ написан
    Комментировать
  • Нужно нагрузить сеть?

    Anna_Repina
    @Anna_Repina
    Хочу все знать
    Можете использовать iperf3, он будет кидать пакеты в обе стороны (если введете -bidir)
    https://habr.com/ru/post/590775/?ysclid=l7pugldmud...
    https://translated.turbopages.org/proxy_u/en-ru.ru...
    Ответ написан
    Комментировать