Задать вопрос
  • Почему пустой tuple занимает больше памяти, чем tuple с None?

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

    fenrir1121
    @fenrir1121
    Начни с документации
    Потому что если попросить chatGPT написать код, который "генерит qr и добавляет на него изображение" он сделает все точно по ТЗ, не обращая внимания на то, что изображение перекрыло половину qr.
    Бред на входе -> бред на выходе, все честно.
    Ответ написан
    1 комментарий
  • Хостинги с поддержкой websocket которые могут работать с Django Channels?

    Mi11er
    @Mi11er
    A human...
    vds.selectel.ru за 200 рублев в месяц ( а тарификация по часам), тебе дадут выделенную ВМ, делай шо хош
    Ответ написан
    Комментировать
  • Vcc и Vdd, Vss и Vee как распознать где плюс, а где минус на схемах?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Всё элементарно просто. Набираете в поисковой строке Гугла такой текст - 1602 datasheet. Гугл выдаёт вам почти 4000000 ответов. Выбираете тот, который нравится. Мне понравился вот этот - https://www.openhacks.com/uploadsproductos/eone-16...
    Третья страница этого даташита содержит исчерпывающий и (главное!) точный ответ на ваш вопрос:
    646bc37a97154080252001.jpeg
    Точно так же поступайте и в дальнейшем - тем самым вы сохраните наше время для действительно интересных и важных вопросов (вместо того, чтобы быть при вас личным поисковым оператором), заодно и научитесь гуглить. Возможно, не сразу, возможно с тысячной попытки, но таки научитесь.
    Ответ написан
    2 комментария
  • Каким образом можно создать виртуальную сетевую папку в ubuntu?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Все просто.
    1) Делаете VPN (OpenVPN или WireGuard) между серверами
    2) Ставите на сервер дома NFS-сервер, и расшариваете папочку, пусть будет /mnt/share
    3) На удаленном сервере монтируете в какой нибудь каталог mount -t nfs /mnt/share 192.168.XXX.XXX:/mnt/share
    Ответ написан
    Комментировать
  • Два IP на одном домене. Как настроить переадресацию?

    Это разруливается не через DNS, а через балансировщик.
    У тебя будет, получается, три узла: Основной, Резервный, и Балансер.
    В DNS ты прописываешь балансер (через A/AAA или CNAME - не важно).
    Все запросы от клиентов идут на Балансер и он их пересылает на основной.
    В случае сбоя, Балансер каким-то образом выясняет состояние основного узла (может прямо запрашивать периодически какой-нибудь GET /health или смотреть на ответы, которые он даёт клиентам), и перераспределяет запросы на Резервный в случае, когда был выявлен сбой, и наоборот - в случае сбоя Резервного можно попробовать перенаправить запросы снова на Основной (тут уже как настроишь).

    Попытаться обойтись без балансера можно, но тогда ты столкнёшся с той ситуацией, с которой ты столкнулся:

    При коннекте к www.site1.ru провайдеры через раз подключаются к правильному айпи, то к основному, то к резервному.
    Соответственно где то на сайт заходит, где то нет так как конектится ко 2 айпи который в текущий момент сервер не использует.

    И уйти от этого не получиться, тк это не баг, а фича - DNS сервер провайдера будет кэшировть информацию о записях в твоём домене, чтобы не нагружать твой сервер лишними запросами и быстрее отдавать ответ своим абонентам, при этом при кэшировании может учитываться тот TTL, который ты сам указал.
    + Кэширование может, и скорее всего будет в том числе и на стороне конечного клиента.

    Придирки к терминологии

    Не существует "DNS регистраторов". Есть просто регистраторы, которые говорят что домен принадлежит тебе и позволяют назначить dns-сервера, которые будут этот домен обслуживать.
    И есть отдельно dns-хостинги, где ты можешь прописать различие записи в рамках домена.
    Ответ написан
    5 комментариев
  • Чем можно заменить сжатый воздух при продувки от пыли?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не сочтите за дерзость. Идете в аптеку, и ....
    Правильно!
    Покупаете самую большую клизму!
    А лучше три.

    Сила кулака, и никакого мошенничества. И для здоровья полезно :)
    Носик можно немного подрезать, если отверстие маловато.

    ЗЫ. Можно конечно не клизму, а "резиновую грушу для продувки техники", но это все та же клизма, только в 2-5 раз дороже.
    Ответ написан
    Комментировать
  • Как работает htmlspecialchars()?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну уж для такой-то простой функции должно быть достаточно написанного на странице документации.
    И, в частности, про ENT_QUOTES ;)

    Эта функция заменяет спецсимволы, которые являются управляющими в контексте HTML, на безобидные HTML-сущности. Вот и всё.
    Чисто визуально управляющие символы будут выглядеть так же, как и должны, но в коде не будут представлять ни малейшей опасности.

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

    <?php $name = "' onclick='alert(\"pwned!\")"; ?>
    <input value="<?=htmlspecialchars($name) ?>"> Не важно. Весь текст так и заключен в двойные кавычки
    <input value='<?=htmlspecialchars($name) ?>'> Важно. Закрыли одинарную, вписываем, что хотим

    Во втором случае этот код отрендерится, как
    <input value='' onclick='alert(&quot;pwned!&quot;)'>
    (но при этом &quot; отрендерятся в двойные кавычки, и в onclick будет уже валидный яваскрипт
    alert("pwned!")

    А с взведенным флагом ENT_QUOTES мы получим
    <input value='&#039; onclick=&#039;alert(&quot;pwned!&quot;)'>

    И хотя значение внутри атрибута отрендерится, как ' onclick='alert("pwned!"), но оно все целиком будет внутри атрибута value.

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

    К счастью, РНР уже позаботился о вас и ваших друзьях. Начиная с версии 8.1, флаг ENT_QUOTES ставится по умолчанию. И приведенный выше пример будет работать только на устаревших версиях. Так что ручное добавление уже уходит в область легаси-практик.

    Чтобы не ломать пальцы, каждый раз набирая всё это htmlspecialchars ENT_QUOTES, толковые джуны всегда пишут пользовательскую функцию-макрос, типа
    function esc($var) {
        return htmlspecialchars($var, ENT_QUOTES);
    }

    Правда, надолго с этой функцией не задерживаются, потому что она годится только при обучении. А любой проект сложнее, чем домашняя страничка про любимого котика, в обязательном порядке уже должен для вывода использовать специальный шаблонизатор, например Twig. Где весь вывод идет с помощью специального оператора, который уже по умолчанию экранирует HTML
    <input value="{{$name}}"> Не важно. Все уже проэкранировано до нас

    Важно помнить, что это экранирование работает только в контексте HTML.
    Если выводим данные внутри кода яваскрипт, то htmlspecialchars поможет как мертвому припарки. И в этом случае надо использовать json_encode.

    Ну и разумеется, надо не забывать комбинировать все варианты экранирования.
    Например, код яваскрипт, который пишется в атрибут HTML тега, надо весь целиком экранировать c с помощью htmlspecialchars. А данные для этого кода - c с помощью json_encode:
    <button onclick="<?= htmlspecialchars("window.open(".json_encode($name).")", ENT_QUOTES) ?>">
    Ответ написан
    3 комментария
  • Для тех кто пользовался сборками флибустина, стоит ли ставить сборку 10ltsc? Что по стабильности? Как долго пользовались?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ищите сборку MSDN. Автор Microsoft.
    Наименьшее число багов хотя и встречаются
    Ответ написан
    1 комментарий
  • Почему все называют TypeScript компилируемым языком программирования?

    1. Если душнить, то никто не называет TypeScript компилируемым языком.
    Вот например что написано на официальном сайте на самом верху:

    TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.


    2. У typescript есть компилятор tsc - его называют компилятором, потому что он по определению им является.

    Но стоп, компиляция - это процесс перевода "человеческого" кода в машинный код.

    Нет. Даже если брать определение из википедии, то будет:

    In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language).

    Никакой речи о "машинном коде" нет, как видишь)

    А если совсем душнить, то языки не делятся на компилируемые и интерпретируемые - это детали реализации.
    В теории для любого языка можно написать компилятор/транслятор или интерпретатор (и так действительно делают)

    При этом ещё существует какая-то путанница в терминологии:
    1. В русскоязычной литературе действительно принято компилятором называть такой транслятор, который транслирует код с языка высокого уровня в машинный или ассемблер.
    (интересно, в каком тогда месте у таких авторов лежат компиляторы, которые компилируют в какой-нибудь промежуточный язык)
    Получается, что компиляторы - это подмножество трансляторов.

    2. В англоязычном интернете transpiler наоборот являются подмножеством compiler.
    Compiler - такая программа, которая преобразует код с одного языка на другой, причём из одного файла может получиться N файлов.
    А tanspiler - это такая программа, которая берёт исходный код на одном языке, и преобразует его в исходный код на другом языке, причём 1 файл преобразуется ровно в 1 файл.

    Получается, что tsc - это транслятор/транспайлер, а причислять их к компиляторам или нет - это дискуссионный вопрос.
    Ответ написан
    2 комментария
  • Какое программное обеспечение должно быть в сети?

    @Drno
    в чем вопрос то? перечислить ПО надо? так то это скорее на ТЗ для заказчика похоже))

    роутер - pfSense
    свитчи - микротик
    Управление юзерами - Ubuntu server + ldap (либо готовый "комбайн" Zentyal)
    на ПК для юзеров - Linux Mint
    Видеонаблюдение - сервер на Zoneminder + POE свитчи (либо платно Hikvision \ Trassir)
    СКУД - IronLogic
    Мониторинг - Zabbix
    Ответ написан
    5 комментариев
  • Можно ли TCP ускорить при помощи TCP via UDP tunnel?

    Нельзя, потому что пинг зависит от маршрута (грубо говоря расстояния до сервера) и времени обработки пакетов на каждом промежуточном устройстве.

    Завернув TCP в какой-то туннель, оставив тот же маршрут, или даже удлинив его - ты только увеличишь пинг.

    есть какой-то TCP Fast Open но как его задействовать для туннеля\iptables?

    Никак. TCP Fast open должен быть поддержан на уровне приложения. Если сервер не готов к tcp fast open, то в любом случае придётся в какой-то точке обойтись без него.

    Есть методы уменьшения пинга у TCP?

    Обозначим твой компьютер буквой A, а сервер игры буквой B.
    В некоторых ситуациях может быть так, что твой провайдер имеет какой-то странный/ненадёжный/не самый хороший, короче, медленный маршрут из A в B.

    Тогда мы можем попробовать найти такой узел C, до которого у твоего провайдера будет оптимальный маршрут, и из этого узла C в B будет тоже более оптимальный маршрут, чем из A в B.

    Но это достаточно редкая ситуация (мне кажется), тк должно совпасть несколько вещей:
    1. Крайне неэффективный маршрут из A в B (на самом деле не редкая вещь. Например есть Ростелеком, который пакеты из Москвы в Европу шлёт через Азию)
    2. Должен быть такой узел C, который находится в таком ДЦ, у которого есть прямое подключение к твоему провайдеру и прямое подключение к провайдеру, у которого есть маршрут в B (на самом деле тоже не редкость, тк у многих хороших ДЦ есть как минимум два подключения к разным магистральным провайдерам)
    3. Выигрыш от добавления узла C должен превышать оверхед от использования туннелей.

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

    @Drno
    Ничего менять ненадо. Все эти темы бесполезны и только мешают обычно.
    Выставьте как предлагают наилучшие быстродействие
    Ответ написан
    Комментировать
  • Как сделать минималистичную тему для слабого пк?

    AmanitaRubescens
    @AmanitaRubescens
    Шалтай-болтай
    Startisback - рублей 100 лицензия.
    StartAllBack - если нет 100 рублей.
    Ставим SSD, докидываем память.

    Еще можно попробовать
    spoiler
    644b6f01b17b1580779754.png
    Ответ написан
    Комментировать
  • Зачем переназначать переменные в задаче 70. Climbing Stairs?

    Alex_Geer
    @Alex_Geer
    System Engineer
    В этой части кода происходит обновление значений переменных prev1 и prev2, чтобы они соответствовали текущей итерации цикла.

    Переменная current вычисляется путем сложения значений prev1 и prev2. Затем, чтобы подготовиться к следующей итерации цикла, значение prev1 обновляется, чтобы оно равнялось предыдущему значению prev2, а значение prev2 обновляется, чтобы оно равнялось текущему значению current.

    Это делается потому, что для вычисления количества способов подняться по лестнице из n ступенек нам нужно знать только количество способов для n-1 ступеньки и n-2 ступеньки. Поэтому мы можем обновлять значения prev1 и prev2 на каждой итерации цикла, чтобы сохранить только два последних значения и использовать их для вычисления следующего значения.
    Ответ написан
    1 комментарий
  • Как реализовать отображение чертежей в winForms?

    @rPman
    Вне зависимости от использования библиотек или фреймворка общая идея ускорения вывода большого количества примитивов или просто сложные объекты, есть разные подходы:
    * кешировать результат, в твоем случае можно в памяти создать битмап и отрисовывать в него, тогда при перемещении окна просмотра в него перерисовывать объекты не понадобится
    недостаток - при большом размере холста (в пикселах) будут повышенные требования к оперативной памяти
    * частично кешировать результат, чем то таким занимаются разработчики/движки игр, когда далекие сцены, внешний вид которых не меняется при локальных перемещениях игрока, заменяются на заранее отрендеренный битмап (текстуру) и рисуют простой спрайт
    В общем это перераспределение нагрузки между процессором и оперативной памятью, либо ты постоянно перерисовываешь все объекты на сцене либо ты это делаешь реже но хранишь все в памяти
    * воспользоваться видеоускорителем, красивого решения именно для c# у тебя не будет, это вообще не подходящий инструмент. Смысл в том что современные видеоускорители, даже если это оффисный, встроенный в процессор, способны отрисовывать миллионы примитивов, но разработка приложения будет похожа на разработку игры, и готовые фрейамворки либо ограничат тебя в возможностях либо из-за того что используешь неподходящий инструмент, ты будешь тратить время на переходы от managed разработки до нативной
    погугли .net using gpu acceleration
    если ты готов к вендорлоку nvidia посмотри на их движок
    Ответ написан
    Комментировать
  • Почему нет(?) популярного REST API для IMAP?

    neuotq
    @neuotq
    Прокрастинация
    Как верно выше сказали вы путаете протокол и сервисы/серверы.
    IMAP - это протокол(прикладного уровня, почитайте про модель OSI), те некое соглашение чтобы всё по сети работало одинаково везде и всегда.
    REST API - это совсем другое, работает внутри другого протокола HTTP.
    Поэтому вам нужно искать не API к IMAP, а сервер IMAP в котором есть нужные API. Такие есть, гуглить нечто вроде
    "imap server with rest api"
    И там уже сами разработчики серверов реализовывают разные штуки, от управление аккаунтами, до манипуляция с самыми почтовыми ящиками и почтой.
    Ответ написан
    2 комментария
  • Не работает интернет после установки Linux. Что делать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Первая же ссылка в гугле по запросу "RTL8821AU Linux" говорит о том, что Realtek забил болт на всех, и исходники драйвера для этого чипа никогда не публиковались, соответственно, их не может быть в ядре изначально.

    Единственный вариант -- это собрать среверсенный драйвер через dkms или установить с пользовательского репозитория уже собранный модуль.

    Для Федоры: https://copr.fedorainfracloud.org/coprs/sunwire/dk...
    Для Арча: https://aur.archlinux.org/packages/rtl8821au-dkms-git
    Для Убунты не припомню собранного актуального модуля.

    Для самостоятельной сборки: https://github.com/morrownr/8821au-20210708

    UPD: От себя добавлю, что драйвер очень глючит, что под Линуксами, что под Виндой. Если используется не для кулхацкинга и режима монитора, то лучше купить что-то понадёжнее.
    Ответ написан
    Комментировать
  • Почему недоступны 144 ггц на Macbook pro 14 m1?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Читаем спецификацию
    Частота обновления
    Технология ProMotion с адаптивной частотой обновления до 120 Гц
    Постоянная частота обновления: 47,95 Гц, 48,00 Гц, 50,00 Гц, 59,94 Гц, 60,00 Гц
    Но главное для внешних дисплеев

    https://www.apple.com/ru/macbook-pro-14-and-16/specs/
    Одновременная поддержка полного штатного разрешения на встроенном дисплее с миллиардом цветов. Дополнительно можно подключить:

    До двух мониторов с разрешением до 6K, высоким качеством цветопередачи (более миллиарда цветов) и частотой 60 Гц (для моделей с чипом M1 Pro) или
    До трёх мониторов с разрешением до 6K и один монитор с разрешением до 4K, с высоким качеством цветопередачи (более миллиарда цветов) и частотой 60 Гц (для моделей с чипом M1 Max)
    Ответ написан
  • Как сделать, что клиенту прилетал актуальный PDF-файл?

    Adamos
    @Adamos
    Выставить настройки кэша в заголовках ответа, отдающего файл.
    Для особо упертых браузеров, которые могут класть на эти заголовки (вроде Хрома) - отдавать файл каждый раз по другой ссылке (добавив ?ver=mtime, например).
    Ответ написан
    1 комментарий