• Логирует ли провайдер что подключение идёт по рдп?

    @Nikolae
    Провайдер может логировать информацию о том, что происходит на вашем подключении, включая то, что вы используете RDP (Remote Desktop Protocol), чтобы удаленно подключаться к другому компьютеру. Обычно провайдеры могут видеть, какие порты вы используете для связи, и на основе этой информации могут догадаться, что вы используете RDP.

    Если вы используете защищенное соединение HTTPS для подключения к серверу, то провайдер не будет видеть содержимое вашего трафика, включая доменное имя сервера, которому вы подключаетесь. Он сможет видеть только IP-адрес сервера, с которым вы устанавливаете связь. Однако, если провайдер использует Deep Packet Inspection (DPI), он может обнаружить, что вы подключаетесь к определенному серверу, основываясь на метаданных ваших пакетов, таких как IP-адрес и порты назначения.
    Ответ написан
    3 комментария
  • Какие программы есть для автоматизации действий в веб браузере?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    AutoIt
    Selenium
    Sikuli Ссылка удалена модератором. - похоже, что самый простой
    Ответ написан
    1 комментарий
  • Какие программы есть для автоматизации действий в веб браузере?

    3vi1_0n3
    @3vi1_0n3
    Посмотрите Ссылка удалена модератором. Selenium IDE. Похоже на то, что надо?
    Ответ написан
    1 комментарий
  • Как авторизовывать запросы между микросервисами?

    Пусть будет какой-то один сервис авторизации, который выдаёт jwt токены
    Ответ написан
    2 комментария
  • Как авторизовывать запросы между микросервисами?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В минимальном варианте, как уже подсказали, микросервис может обращаться к чему-нибудь типа Keycloak с реквизитами системного пользователя, получать соответствующий токен и потом добавлять его в запросы к другим микросервисам. Если система здоровенная, микросервисов много и требований к безопасности тоже, то стоит поднять service mesh и возложить эту функцию на неё.
    Ответ написан
    Комментировать
  • Как сделать синхронный запрос через fetch?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    1. Можете воспользоваться XMLHttpRequest вместо fetch. В методе open можно явно указать, что запрос необходимо сделать синхронно. Подробная документация тут: https://javascript.info/xmlhttprequest
    2. Можете воспользоваться тем что fetch возвращает promise и написать свой код соответствующим образом. Вы уже почти это сделали когда решили возвращать результат выполнения fetch. Осталось чуть-чуть, примерно так:

    getDataByINN(myPersonPars['INN']).then((suggestion) => {
        const myCompany = suggestion
    })
    Ответ написан
    4 комментария
  • Как сделать запросы к api синхронными?

    IgorPI
    @IgorPI
    Недавно такая же проблема была.
    Всё тот же await, но только конкретная реализация.

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

    Выдернул непосредственно из проекта

    spoiler

    import { app } from '@/main'
    import { Cookie } from '@/plugins/cookie'
    import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'
    import Vue from 'vue'
    import { sleep } from '@/Utils'
    
    // Full config:  https://github.com/axios/axios#request-config
    // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
    // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
    // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    
    /* eslint-disable */
    const config = {
      baseURL: process.env.VUE_APP_API,
      timeout: 30000,
      validateStatus (status: number) {
        return status < 500 // Resolve only if the status code is less than 500
      }
    }
    /* eslint-enable */
    
    const _axios: AxiosInstance = axios.create(config)
    const cookie: Cookie = new Cookie()
    let isRefreshTokenProcess = false
    const promises: any[] = []
    /* eslint-disable */
    // @ts-ignore
    _axios.interceptors.request.use(async (config: AxiosRequestConfig): AxiosRequestConfig | Promise<AxiosRequestConfig> => {
    
      // todo: set locale optional
      config.headers.Language = 'ru'
    
      if (isRefreshTokenProcess) {
        console.log('%c%s', 'color: red;', `Запрос ${config.url} ожидает обновление токена...`)
        promises.push(new Promise(async (resolve) => {
          while (isRefreshTokenProcess) {
            await sleep(500)
          }
          console.log('%c%s', 'color: green;', `Запрос ${config.url} разрешён!`)
          resolve()
        }))
        // This is process update token
        await Promise.all(promises)
      }
    
      if (cookie.has('access_token')) {
          config.headers.Authorization = `Bearer ${cookie.get('access_token')}`
          return config
        } else {
          if (cookie.has('refresh_token')) {
            console.log('%c%s', 'color: blue;', 'Обновление токена...')
            isRefreshTokenProcess = true
            await axios.post(`${process.env.VUE_APP_API}/account/authorization/refresh-token`, {
              refresh_token: cookie.get('refresh_token')
            }).then((response: AxiosResponse) => {
              if (response.status === 200) {
                cookie.set('access_token', response.data.access_token, { 'max-age': 600, 'path': '/' })
                cookie.set('refresh_token', response.data.refresh_token, { path: '/' })
                config.headers.Authorization = `Bearer ${cookie.get('access_token')}`
              }
            }).catch(() => {
              app.$router.replace({ name: 'login' }).then()
            })
          }
          isRefreshTokenProcess = false
          return Promise.resolve(config)
        }
      },
      function (error) {
        // Do something with request error
        return Promise.reject(error)
      }
    )
    /* eslint-disable */
    /*
      Array of patterns to ignore status checks.
     */
    
    // Add a response interceptor
    _axios.interceptors.response.use(
      (response): Promise<AxiosResponse> | any => {
        if (response.status === 401) {
          return app.$router.replace({ name: 'login' }).finally(() => Promise.reject(response))
        } else {
          return response
        }
      },
      function (error) {
        // Do something with response error
        return Promise.reject(error)
      }
    )
    
    class AxiosPlugin {
      public install () {
        Object.defineProperties(Vue.prototype, {
          axios: {
            get () {
              return _axios
            }
          },
          $axios: {
            get () {
              return _axios
            }
          }
        })
      }
    }
    
    const axiosPlugin: AxiosPlugin = new AxiosPlugin()
    
    Vue.use(axiosPlugin)
    
    export default axiosPlugin
    export const $axios: AxiosInstance = _axios



    Работает следующим образом.
    Токен хранится в куках, с меньшим временем хранения, то есть с куков будет удалён раньше чем протухнет на сервере.

    Перед выполнением запроса, мы проверяем, есть ли токен в куках, если нет то обновляем с помощью refresh_token.
    Так же выставляется флаг, мол в процессе обновления токена и все последующие запросы помещаются в массив промисов.
    Далее в цикле проверяем, можно ли разрешить промис если да то выдыхаем и запросы ушли на сервер.
    Ответ написан
    4 комментария
  • Какие существует IDE для создания оконных приложений на разных языках программирования?

    Stalker_RED
    @Stalker_RED
    Вообще список IDE легко найти https://en.wikipedia.org/wiki/Comparison_of_integr...
    Но в нем нет разделения на те что могут в GUI, и те что не могут.
    Вы может для начала выберите платформу/язык/фреймворк на котором хотите создать GUI, а потому же IDE под эту платформу подбирайте?
    Ответ написан
    Комментировать
  • Какой хостинг выбрать для web проектов на java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Придется научиться все делать ручками!
    Поставить томкат и nginx например. В томкате есть админ-панелька, но с ней тоже нужно разобраться. В ней можно war-файлы публиковать...
    Поставить letsencrypt или вместо nginx поставить caddy, или haproxy.
    Ну и я вообще не понимаю, зачем все эти панельки нужны, они все делают из рук вон плохо. Причем, один раз разобравшись, эти панельки нафиг не нужны!
    Да и смысла большого в war-файлах не вижу уже лет 10! Есть и spring, и vertx, и sparkjava, и с десяток всего другого, вместо толстых контейнеров.
    Есть даже OSGI типа apache karaf и eclipse equinox!
    Ответ написан
    5 комментариев
  • Не получается загрузить видео на VK через REST API и httpclient (java) - на POST сервер возвращает HTTP 406 Not Acceptable. В чем может быть проблема?

    @sherlock342342 Автор вопроса
    Проблема в неполной документации VK REST API. В ней ничего не сказано про то-что по каким-то причинам сервису по загрузке видео не нравится Transfer-Encoding: chunked

    Аналогичные сервисы VK по загрузке фото, аудио или документов пока не замечены в подобном.

    После модификации кода использующего java httpclient и указанием конкретного Content-Length (что выключает chunked режим) - все заработало.

    Надеюсь кому-то будет полезно.
    Ответ написан
    Комментировать
  • Как организовать юзер-сервис в виде микросервиса?

    отдельный микросервис чтобы он раздавал токены, авторизовал, следил за ролями и пр.

    Это работа для сервера авторизации, есть достаточно хороших готовых решений типа Keycloak которые достаточно легко интегрировать.

    Взаимодействие фронт-бэк происходит так:
    1. Фронт перенаправляет пользователя в Keycloak для авторизации
    2. Пользователь авторизовывается
    3. Keycloak возвращает пользователя обратно на фронт с токеном в JWT формате и подписью (JWS)
    4. Фронт делает авторизованные запросы в бэк с помощью этого токена
    5. Бэк, используя публичный ключ из Keycloak, валидирует подпись токена и убеждается, что он не просрочен
    6. Базовая информация о пользователе, Scope и его Roles находятся в токене, их можно использовать для валидации доступа к эндпойнтам бэка и понимать, кто авторизован
    Ответ написан
    5 комментариев
  • Почему scanner пропускает некоторые строчки в коде?

    Дело в том, что Scanner#nextInt считывает только цифровое значение без перехода на новую строку. Таким образом выходит, что последующий вызов Scanner#nextLine видит новую строку за счёт того, что ты нажал Enter вводя число.

    Используй для всех инпутов Scanner#nextLine и конвертируй полученную строку в нужный тип.
    System.out.println("Введите код путевки");
    l[p].code = Integer.parseInt(scanner.nextLine());
    Ответ написан
    2 комментария
  • Как добавить в массив в мапе?

    libalex
    @libalex
    Backend / Android Developer (Java, Kotlin)
    Ну, например так
    if (mapa1.containsKey(assigneeMail)) {
        ArrayList<Payload1> payloads = mapa1.get(assigneeMail);
        payloads.add(new Payload1(it.getSummary(), it.getKey(), it.getDescription(), it.getAssignee().getDisplayName()));
        mapa1.replace(assigneeMail, payloads);
    } else {
        mapa1.put(assigneeMail, new ArrayList<>(List.of(new Payload1(it.getSummary(), it.getKey(), it.getDescription(), it.getAssignee().getDisplayName()))));
    }

    С Java 8 в Map появился метод merge ещё.
    Ответ написан
    1 комментарий
  • Как лучше\проще реализовать работу с серийными номерами\лицензиями чтобы не особо пиратили?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Единственный способ запретить нелецинзионное копирование вашей программы - это вынести что-то важное в серверную часть. Там логин/пароль пользователя, плюс проверки на отсутствие параллельных сессий.

    Все остальное ломается.

    Следующий плохой вариант: делать слепок системной информации, при активации лицензии подписывать его на сервере приватным ключем. Программа открытым ключем проверяет, что файл лицензии корректен (расшифровывает и смотрит, что системная информация совпадает).
    Ответ написан
    Комментировать
  • Почему может блокироваться и выключаться MacBook Pro 2020 m1?

    @Drno
    глючит кабель
    глючит монитор \ вход
    не хватает напряжения

    если запитать мак отдельно - проблема исчезает?
    Ответ написан
    1 комментарий
  • Зачем нужна учётная запись в Microsoft Visual Studio?

    john33332
    @john33332
    Web -Designer
    Для того чтобы большой брат следил за вами.
    На самом деле полезного немного:
    Автоматическое подключение к серверам Azure и синхронизация некоторых параметров
    Ответ написан
    1 комментарий
  • Как клиенту самостоятельно менять фотографии в документе PDF?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Попробуйте PDF24. По-моему, этот комбайн умеет всё - ну разве что за пивом не бегает...
    Ответ написан
    Комментировать
  • Как клиенту самостоятельно менять фотографии в документе PDF?

    pozZzitiv
    @pozZzitiv
    Дизайнер и перфекционист
    1. Если вопрос именно в том чтобы менять содержимое уже сделанного PDF-шаблона, то менять вставленные изображения можно в любом ПДФ-редакторе, который поддерживает эту функцию. Например, родной Adobe Acrobat Pro.
    Вариант А. В Acrobat Pro (напомню, что это платная версия) можно нажать "Редактировать текст и изображения/Редактировать PDF", затем выделить картинку, нажать ПКМ и выбрать "Редактировать с помощью - Adobe Photoshop (если установлен)/MS Paint или выбрать другое ПО. Обновить там картинку, сохранить, закрыть редактор и вернуться к Acrobat — в нём картинка уже изменится на новую. Но тоже нужно иметь какой-то из графических редакторов и следить чтобы все было ОК, не съехало и т.п. Плюс в том, что изображение открывается точно по размеру как в PDF. Минус: маски, увы, при этом способе игнорируются и открывается для редактирования оригинальное изображение во весь размер. Нужно в первом шаблоне обрезать картинку под конечный формат, слив маску. Вот тогда при замене размер холста сохранится и внутри него можно вставлять новое изображение, масштабировать под границы артборда желаемую область и сохранять.
    Делал так лично с редактированием в Photoshop, удобно.

    Вариант Б. В открытом файле также перейти к редактированию PDF и: нажать ПКМ на картинке - выбрать "Заменить изображение" - выбрать новую картинку и она заменит прежнюю. Минус: картинка должна быть такого же соотношения сторон и размера, иначе она просто встанет по центру предыдущей со своими оригинальными пропорциями. Если заранее подгонять картинки под один формат, то способ рабочий и даже проще предыдущего.

    Знаю, что есть и другие PDF-редакторы, но вот об их функционале уже не могу ничего сказать. Когда-то пробовал некоторые из них, но не для замены картинок.

    2. Если же вопрос в том, в какой бы программе клиенту редактировать макет и уже потом экспортировать в PDF, то тут все равно чему ему учиться пользоваться: от предлагаемого Word или PowerPoint (оба распространены в офисах, чаще всего ими умеют пользоваться и они умеют экспортировать в PDF) до классических графических редакторов (Photoshop, Illustrator, Corel, Figma, Canva и прочие-прочие). Но не знаю как типография отнесется к PDF, сделанным в офисных приложениях)))

    Резюмируя, если клиент хочет себе конструктор для развлечений, то придётся ему либо обучиться базовой работе в какой-то из программ, либо делегировать тому, кто умеет, либо доплатить за разработку плагинов/экшенов/ скриптов/сервиса по автоматизации процесса.

    PS Сталкивался с подобными запросами тоже. Даже просили делать заполняемые шаблоны и чтобы потом печатать. Благо, для офисных принтеров хватало шаблонов в Word/PP. В остальных случаях — PDF для типографии + исходник и аргументированное объяснение сказанного выше, что волшебных кнопок нет и либо учитесь работать с файлами, либо пусть это делает тот, кто умеет.
    Ответ написан
    Комментировать
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современная соц-сеть - это уникальная софтварная архитектура которая строилась индивидуально.
    Вряд-ли вы сможете ее просто повторить имея mysql/php/nginx.

    VK/Facebook имеют свои технологии кеширования контента в основном построенные на материализации
    страниц. Базы данных обычно - не-реляционные. Модель проектируется так чтобы не было joins между
    таблицами. И активно используются очереди сообщений. Вот в соц-сети Linked-In это было настолько
    важно что даже был создан отдельный программный продукт который сейчас называют Apache Kafka.

    Активно используются горизонтальное масштабирование. Сеть наращивает мощности просто путем подключения
    новых адресов в dns с балансом по географии, и запуска новых web-nodes и новых дисковых реплик хранилищ для картинок и текстов постов.

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

    @d-stream
    Готовые решения - не подаю, но...
    Можно воспользоваться "методом сантехника":
    - ставим какую-нибудь тулзу типа rdp defender
    - устанавливаем бан после 3 неудачных попыток
    - носитель зловреда вскоре сам обратится с проблемой "не могу подключиться"

    ну или поглядев в лог можно будет оценить массовость явления

    p/s/ на время акции желательно свой комп внести в белый список
    Ответ написан
    Комментировать