Задать вопрос
  • Как и на чем сделать пошаговую инструкцию на сайте?

    victormayorov
    @victormayorov
    Frontend разработчик
    один из первых результатов из гугла - https://driverjs.com/
    Ответ написан
    Комментировать
  • Как скачать защищенный от скачивания PDF-файл с сайта?

    @rPman
    Скопировать через буфер можно только неформатированный текст и только текущие +-10 страниц (вручную можно но долго и нудно, потом сшивать).
    1. Реверсить их вьювер долго и дорого.
    2. Скринить странички - для личного использования подойдет (набор картинок, соединить в pdf и читать не проблема, но железные слабые читалки могут такие не прожевать), сделать не программисту можно с помощью любой автоматизации, например autoit. Логика следующая - открываешь нужный сайт в максимальном размере на полный экран (полный экран и настроить По ширине страницы), затем продумываешь свои действия (мышь/клавиатура) такими, чтобы если их повторять, копировалось все содержимое без пропусков и повторов, в данном случае это кнопка PageDown и копирование экрана (можно по количеству страниц посчитать сколько это будет действий)

    В коде autoit это будет for loop
    For $i = 1 To 100500
    ...
    Next


    шлешь нажатие кнопки
    Send('{PGDN}')

    ждешь секунду (там примерно каждые 10 страниц генерация и удаление старых) sleep

    делаешь скрин с экрана
    _ScreenCapture_Capture(StringFormat('%09i', $i) & '.png', 0, 0, @DesktopWidth, @DesktopHeight, False)

    нужно подобрать размеры чтобы лишнее не копировать
    StringFormat тут добавляет к номеру слева нули, чтобы при сшивании порядок не был 1 -> 11 -> 2 -> 3....

    по итогу работы получишь тысячу картинок, объединяешь их с помощью imagemagic
    magick *.png out.pdf

    3. способ - их pdf просмотрщик генерирует валидный html для текста (с картинками сложнее),
    css selector
    $('#pageContainer2 > .textLayer').innerHTML
    тут номер у pageContainer это номер страницы, но в один момент времени заполнены текстом только текущие видимые +- поэтому код нужно будет написать, чтобы корректно в нужный момент времени читать нужные

    Можно конечно заморочиться и запилить selenium приложение которое будет листать странички и собирать html-ку, можно в полуручном режиме прямо в браузере в консоли написать пару строчек, собирая текст в localStorage (он ограничен 5-мб кажется). html код там прямо такой (по кускам текста как они были в pdf)
    Кликать на следующую страничку - $('#next').click()

    <div style="left: 83.5342px; top: 384.732px; font-size: 20.5963px; font-family: serif; transform: scaleX(0.793798);" data-canvas-width="404.5723586629188">Стенограмма  Нюрнбергского  процесса.  Том </div>

    т.е. останется только стили добавить или скопировать их с сайта и готовая отформатированная html будет готова
    Ответ написан
    Комментировать
  • Как проверить объект на присутствие неизвестного ключа?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    function isPermittedObject(obj) {
      if (!obj) return false;
      
      const permitted = new Set(["v", "c", "g"]);
      let max = 1;
    
      for (const key in obj)
        if (!permitted.has(key) || !max--) 
          return false;
      return true;
    }
    
    console.log(!isPermittedObject({
      v: 1,
      c: 3,
      g: 5
    }))
    
    console.log(!isPermittedObject({
      v: 1
    }))
    Ответ написан
    Комментировать
  • Как ведут себя данные при удалении?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В реляционных БД не существует гарантий относительно порядка записей внутри таблицы. Этот порядок
    - это особенности технической реализации хранения данных внутри блоков и сегментов. Это - "know how"
    и это будет зависеть от типа DBMS (Postgres, MySQL, Oracle) и от типа таблицы (heap, index-organized, clustered e.t.c)

    Если говорить грубо, то записи (data-rows) лежат не плотно а вразнобой с пробелами с выравниванием
    к блокам. Ну тоесть вообще-вообще не так как в Excel. Удаление data-rows в Postgres насколько я помню
    физически не удаляет запись а помечает ее мертвой используя служебные поля. Впоследствии VACUUM
    делает работы по уплотнению.

    Поэтому порядок ты сам обеспечиваешь, делая запрос с опцией ORDER BY some_date_time.
    Ответ написан
    1 комментарий
  • Почему Python не видит файлы в Linux как в Windows?

    Vindicar
    @Vindicar
    RTFM!
    Если файл лежит в папке со скриптом - надо открывать его, используя путь к пкапке со скриптом, а не надеяться на то, что текущий каталог совпадёт. Под виндой тоже всё зависит от способа запуска скрипта.
    Так что читай про sys.argv[0] и модуль pathlib. Пригодится.
    Ответ написан
    2 комментария
  • Как принимать платежи из Европы при текущих санкциях?

    @starxchanger
    Lava - у них вроде есть казахский офис и собственно через него идут платежи из-за рубежа. По крайней мере многие платежи идут через него

    Можно и Енота, да и схожие кассы могут сделать вам кабинет. Правда комисии там довольно большие, вплоть до 15%.
    Ответ написан
    5 комментариев
  • Как сохранить заказы при обновлении сайта wc orders?

    @Refguser
    Решения для бизнеса: корп.сайты, ИМ и пр.
    можно ли скопировать таблицу wc_orders из базы данных на компьютер, а потом именно ее как-то заменить?

    Нет. Так ты угробишь базу.
    о работе с базой
    Вообще никогда ненужно лазить в базу напрямую, включая прямые SQL-запросы. Для работы с базой есть специальные инструменты.


    Для переноса заказов есть плагины ими и нужно пользоваться,

    Им это надо для отчетности или статистики, короче "надо".
    А при переносе будет состояние заказов как 2 недели назад.

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

    Vindicar
    @Vindicar
    RTFM!
    Причина раз: правило сохранения заряда. Электрический заряд нельзя создать и уничтожить, только перераспределить в пространстве.
    Причина два: с точки зрения внешнего наблюдателя тело будет падать в чёрную дыру за бесконечное время. Его влияние на окружающую вселенную - например, испущенный свет - будет бесконечно ослабевать, но никогда не станет нулевым. При этом с точки зрения падающего тела, падение займёт очень даже конечное (и не слишком большое) время. Относительность - она такая.
    Ответ написан
  • Как пробросить порты с wsl в windows 10?

    @kavabangaungava
    Вообще на локальную систему из wsl порты пробросить можно, делается это так, пример с 80 портом:

    netsh interface portproxy add v4tov4 listenaddress=192.168.13.17 \
    listenport=8080 connectaddress=172.23.53.217 connectport=80


    Важно, чтобы пробрасываемые порты на самой системе не были заняты.
    Ответ написан
    1 комментарий
  • Как правильно выбрать железо для домашнего сервера?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Mini ITX со встроенным 4-х ядерным процессором, слотом M2 и полноформатными или ноутбучными слотами памяти - смотря какая завалялась пара плашек памяти в наличии. Маленький, но качественный БП (например FSP) и любой корпус. Ну и любой ССД под систему - М2 или сата тоже пойдет. Диски под хранилище чего-либо - тут уже по желанию и возможностям.
    Например: https://www.onlinetrade.ru/catalogue/materinskie_p...

    UPD: только что вышел обзор мини-пк от 3Dnews: https://3dnews.ru/1100970/kompyuter-mesyatsa-pokup...
    Ответ написан
    4 комментария
  • Почему не стоит использовать f строки в SQL Python запросах?

    ma4akk
    @ma4akk
    Использование f строки в SQL запросах может быть небезопасно, потому что оно позволяет вставлять значения переменных непосредственно в SQL запрос. Это может привести к SQL injection - атаке, когда злоумышленник вводит в запрос подозрительные данные, чтобы получить доступ к базе данных или внести в нее изменения.

    Чтобы избежать этой проблемы, рекомендуется использовать параметризированные запросы. Это значит, что значения переменных не вставляются непосредственно в запрос, а передаются отдельно как параметры. В SQLite это можно сделать с помощью вопросительного знака (?) вместо значения переменной:

    connect = sqlite3.connect('INFO.db')
    cursor = connect.cursor()
    
    GLAV_USER = message.from_user.id
    cursor.execute("SELECT ID FROM table WHERE MEMBER = ?", (GLAV_USER,))


    Такой подход более безопасен и предотвращает возможность SQL инъекцй.
    Ответ написан
    3 комментария
  • Python в запущенный в контейнере работает медленнее натива?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Разница в бинарях - Python на хостовой машине собран без отладочной информации, а тот, который в образе python:3.10.4 собран с нею.

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

    Можно пойти дальше и собрать Python из исходников самому, но самостоятельная сборка это такое себе развлечение (хотя с помощью pyenv делать это довольно просто), а выигрыш не такой уж и значительный - устанавливать бинарные пакеты сильно проще.

    PS
    Никогда не используй образы Alpine - там вместо glibc суррогат под названием musl. В прочем для статически слинкованных бинарей на Go использовать можно, но тогда уж выгоднее использовать scratch
    Ответ написан
    5 комментариев
  • Основная работа и другие проекты. Как к этом относится ваше начальство?

    @Everything_is_bad
    Если ты это делаешь не в рабочее время, то "начальнику" должно быть пофиг, точнее, каким он должен быть тут боком.
    Ответ написан
    7 комментариев
  • Как получить пароль к RAR архиву?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    hashcat в зубы, и вперёд.
    Ответ написан
    1 комментарий
  • Как реогранизовать процесс разработки в IT-продукте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Первый вариант - если есть прибыль, нанять людей, чтобы написать все с нуля, но уже масштабирование сразу предусмотреть в архитектуре. Зависит от сложности проекта, конечно.

    Второй вариант - смотреть первый вариант, только своими силами и переписывать часть функционала, вынося его в микросервисы. В первую очередь вынести то, что под нагрузкой, потом потихоньку остальной функционал. С планами заменить все что нельзя масштабировать, без остановки сервиса.
    Под словом микросервисы я вообще не рекомендую ставить микросервисы как самоцель. Можно и микросервисы и макросервисы, важно чтобы было легко затем поддерживать и масштабировать.

    Разделить разработку и поддержку.

    Разработка - на тестовом енвайрнменте с тестовыми данными
    Поддержка - ограниченным кругом доверенных специалистов.
    Ответ написан
    Комментировать
  • Как реогранизовать процесс разработки в IT-продукте?

    1. Git. Без него сейчас ну просто никак.
    2. Gitlab CI или GitHub actions для деплоя.
    3. Пишете скрипт, который при запуске на локалке создаёт новую базу и заполняет её фейковыми данными для тестов. Так новые разработчики не будут иметь доступ к данным.
    3. Новые разработчики будут иметь доступ к коду, смогут создавать свои ветки в Git, пушить эти свои ветки в ваш удаленный репозиторий Git и даже создавать merge request на слияние их ветки с основной веткой разработки. А вы уже сможете сделать ревью их кода и подтвердить слияние, либо отказать. Все права отлично настраиваются как в Gitlab, так и в GitHub.
    4. Если же вы вообще не хотите показывать даже код сторонним разработчикам, то тут без модулей либо даже микросервисов не обойдешься. Я бы начал пробовать с модулей.

    P. S. Если в голову придёт мысль переписать проект полностью, то десять тысяч раз подумайте перед этим. В моей практике нет ни одного успешного переписывания сложного проекта... Всегда нужны новые срочные фичи, и придется параллельно внедрять эти фичи в старую кодовую базу, одновременно с этим пытаться их внедрить в сырую переписываемую кодовую базу. Это может закончиться ещё более запутанным проектом, чем был оригинал.
    Ответ написан
    Комментировать
  • В какой последовательности изучать fullstack разработку?

    metallix
    @metallix
    Backend - developer
    Ответ написан
    Комментировать
  • Как узнать конкретный компьютер с которого подключились по rdp протоколу?

    @NortheR73
    системный инженер
    В системном журнале безопасности (Security Log) смотрим события 4624 (успешная аутентификация - An account was successfully logged on) или 4625 (ошибка аутентификации - An account failed to log on) с LogonType=10.
    В описании события имя пользователя - в поле Account Name, имя компьютера - в Workstation Name, IP-адрес - в Source Network Address
    Ответ написан
    Комментировать
  • Можно ли через веб-сайт вызвать интерактивное окно apple wallet/google pay?

    chiliec
    @chiliec
    iOS-разработчик
    Для Эппл нужно сгенерировать для клиента файл .pkpass
    Есть прекрасная библиотека для генерации https://github.com/tinovyatkin/pass-js

    У Гугла свой формат https://developers.google.com/wallet
    Онлайн-генератор: https://developers.google.com/wallet/tickets/event...
    Ответ написан
    Комментировать
  • Утечка DNS или как соц. сети узнают мое местоположение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существуют базы (IPLocation) которые связывают IP адрес и локацию (Обычно Страна-Регион).
    Точность связности при этом очень грубая. Вряд-ли можно узнать что-то подробное.

    Как узнают соц-сети - это загадка. В простейшем случае они извлекают coockies из твоих
    сеансов браузера в ПК и телефоне а там может лежать информация о другой локации.

    А само приложение Инстаграм и Тик-ток не знаю... Проходило ли хоть раз проверку на безопасность.
    Какую информацию приложение знает о профиле телефона? Что оно передает по своему протоколу?
    Да что угодно. Вот я-бы и передавал что угодно если-бы был заинтересованным в сборе сведений.

    Бесплатные VPN/Proxy и прочие анонимайзеры здесь не помошники а скорее инсайдеры.
    Забезплатно они скорее вас сольют быстрее чем окажут помошь. Поэтому им ни на копейку
    доверять нельзя.
    Ответ написан
    Комментировать