Задать вопрос
  • Как организовать локальную разработку микросервисной системы в PyCharm?

    fenrir1121
    @fenrir1121
    Начни с документации
    Засовывать всё в докер, и сразу писать compose-файл? Но можно ли это всё потом интегрировать с IDE?
    Да все верно. В нижней панели, там же где терминал и питон консоль есть вкладка Services, там и логи и управление всеми запущенными (микро)сервисами.
    В compose достаточно стрелку ткнуть, он тебя первый раз попросить конфиг настроить и все.
    66c8250c766ad116037154.png

    Так же можно с ssh работать так что можно хоть локально запускать, хоть на удаленной машине
    66c8269e763a0228875878.png
    Ответ написан
    Комментировать
  • Как скрыть Api ключи в react?

    @ymaril
    Все что доступно фронтенду - доступно и злоумышленнику. То есть, любой пользователь вашего приложения может ваш ключ от мейлера украсть.
    Решить это можно только своим бекендом. Который будет знать ключ, но не будет его показывать фронтенду. А так же сам будет ходить с этим ключом в апи мейлера. А фронтенд будет просто просить бекенд отправить письмо.

    В таком варианте злоумышленник уже не сможет получить доступ к апи ключу, но сможет намеренно спамить ваш бекенд чтобы он отправлял письма. На уровне бекенд можно вставить ещё заборы: например, не давать отправлять больше одного письма на один адрес.

    Так же, по опыту, process.env в фронтовых приложениях не самая очевидная штука. Лучше избегать его использования. Это объект с переменными процесса. Но если приложение работает в браузере, то там нет окружения и процесса и этих переменных.
    Такой подход оправдан в бекенде, где ты сам контролируешь где и в каких условиях приложение будет работать.
    Конфиги клиентского приложения лучше получать с бекенда. А там их уже можно и в .env хранить
    Ответ написан
    Комментировать
  • Как убрать замедление Youtube на телевизоре?

    @Immortal_Hare
    Делал себе, схема проверенная
    В идеале нам понадобится роутер на котором можно поднять клиента ВПН (mikrotik), но подойдет просто роутер с возможностью прописать маршруты и ВМ с твоим ВПН

    Как поднять ВПН описывать не буду, в него нужно будет отправлять запросы на следующие ИП

    142.251.1.103
    142.251.1.104
    142.251.1.105
    142.251.1.106
    142.251.1.147
    142.251.1.99
    173.194.73.100
    173.194.73.101
    173.194.73.102
    173.194.73.113
    173.194.73.138
    173.194.73.139
    64.233.163.100
    64.233.163.101
    64.233.163.102
    64.233.163.113
    64.233.163.136
    64.233.163.138
    64.233.163.139
    64.233.163.190
    64.233.163.91
    64.233.163.93
    64.233.164.136
    64.233.164.190
    64.233.164.91
    64.233.164.93
    64.233.165.103
    64.233.165.104
    64.233.165.105
    64.233.165.106
    64.233.165.147
    64.233.165.99
    74.125.131.100
    74.125.131.101
    74.125.131.102
    74.125.131.113
    74.125.131.138
    74.125.131.139

    На микротике это делается в IP-ROUTES и будет выглядеть что-то типа того
    669f3fdc5b065684272856.png

    Так-же может помочь вот эта ссылка https://habr.com/ru/articles/775110/

    P.S. можно заворачивать целые сети, но тогда будет реклама, в этом варианте у меня вышло избавится от тормозов и убрать рекламу перед видео (на главной иногда бывает)
    Ответ написан
    4 комментария
  • Как защитить SPA от парсинга?

    2ord
    @2ord
    Не претендуя на новизну, можно вести учет количества запросов в минуту и по превышению порога начинать вставлять палки в колеса:
    вставлять капчи, спрашивать о чем-либо.

    Минусы:
    1. на рынке есть много решений для обхода популярных препятствий и может найтись решение "под ключ" для частного веб-сайта.
    2. вероятность случайной блокировки относительно более "интересующихся" пользователей.
    3. учет количества запросов обходится использованием пула прокси.

    Магазин с товарами это не спасет и решения противодействию всегда найдутся.

    Ваши ресурсы стоит направить на более целесообразную разработку.
    Ответ написан
    Комментировать
  • Почему у меня неправильно определяется IP пользователя?

    @rPman
    $_SERVER['REMOTE_ADDR'] устанавливает твой веб сервер, ему вы доверяете.
    Но, если пользователь заходит через прокси сервер - то тут будет выходной ip адрес этого прокси.

    Если прокси сервер не скрывает информацию о своих клиентах то
    $_SERVER['HTTP_X_FORWARDED_FOR'] и $_SERVER['HTTP_CLIENT_IP'] должны содержать ожидаемое, но это значит нужно доверять этому прокси серверу.

    Хочешь узнать реальный ip адрес, используй javascript в браузере пользователя (т.е. придется доверять уже пользователю в плане, а отреверсит ли он твой код и не подсунет что угодно).

    Cамый известный и достаточно надежный способ (его сразу отключают любые адекватные анонимизеры) - это WebRTC. Технология позволяет двум браузерам открывать прямое соединение (да еще и udp) друг с другом, а веб сервер только организует процесс. Т.е. подняв соответствующего клиента WebRTC (погугли, правда я для php с ходу готовой библиотеки не нашел) и организовав подключение клиента с этим твоим сервером, который представляется обычным веб клиентом), ты сможешь по тому, с какого ip адреса пришло соответствующее соединение, определить настоящий, даже если пользователь использует прокси.

    Это не защитит от vpn, тут никакими способами определить ip адрес пользователя не получится, потому что с точки зрения сетевых технологий, vpn - это как бы проводок пользовательского компьютера подключили к vpn-серверу, и никакие коммуникации не пойдут иначе, если пользователь не укажет иного (можно настроить маршрутизацию на выход через разные шлюзы в зависимости от геолокации, кстати этим можно воспользоваться, разместив кучу своих серверов в разных локациях и, обращаясь к ним из браузера клиента, сравнивать ip адреса)
    Ответ написан
    2 комментария
  • Почему не включается JIT?

    @DarkKefir Автор вопроса
    Проблема решилась тем, что в /etc/php/8.3/mods-available/opcache.iniнужно изменить opcache.jit=offна opcache.jit=tracing

    Ну и перезапустить PHP.

    Всем спасибо
    Ответ написан
    Комментировать
  • Проверка строки на присутствие кириллицы?

    @GreatRash
    $str = 'test string for cyrillic зюя';
    $contains_cyrillic = (bool) preg_match('/[\p{Cyrillic}]/u', $str);
    Ответ написан
    1 комментарий
  • Как убрать Яндекс с пустой страницы Google Chrome?

    @kr_ilya
    Потому что в браузере установлен поиск яндекса
    tsiik3q_wrsyyk7acxecj88spwk.png

    Если поставить гугл, будет главная гугловская
    Ответ написан
    3 комментария
  • Как сделать ссылку на Viber?

    Middle_Pudge
    @Middle_Pudge
    Дело в том что десктопное и мобильное приложение Viber открывается по разным ссылкам, что создает определенные сложности при добавлении такой ссылки на сайт. Поэтому потратьте 2 минуты чтобы прочитать и понять текст ниже) Для мобильных устройств используется такой подход формирования ссылки:
    <a href="viber://add?number=380950000000">Написать в Viber</a>

    Для ПК – такой:
    <a title="Должен быть установлен Viber для ПК" href="viber://chat?number=+380950000000">Написать в Viber</a>


    Для того, чтобы определить устройство при помощи PHP, в самом простейшем случае можно воспользоваться простейшей функцией, которая определяет USER_AGENT устройства, а затем, в зависимости от того, опередила ли функция устройство как мобильное или нет, показывать ту или иную ссылку.
    <?php function check_mobile_device() { 
        $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
        $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    
        foreach ($mobile_agent_array as $value) {    
            if (strpos($agent, $value) !== false) return true;   
        };     
        return false; 
    };?>

    Расположить функцию, можно, например в самом начале страницы, перед 'doctype' или вынести в отдельный файл и там же подключить его.

    После этого, в месте где будет выводиться ссылка на Viber используйте такую проверку:
    <? if(check_mobile_device()) :?>
    	<a title="Viber" href="viber://add?number=79851198793"></a>              
    <? else : ?>
    	<a title="Viber" href="viber://chat?number=+79851198793"></a>
    <? endif; ?>

    Теперь, если человек зашел с ПК, то ему покажется ссылка для десктопного приложения, а если с мобильного устройства, то ссылка для смартфона или планшета.
    Ответ написан
    Комментировать
  • В чем разница = и == в php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    = - присваивание
    == - сравнение с авто-приведением типов (таблицы)
    === - эквивалентное сравнение (типы переменных и их значения должны строго совпадать)
    Ответ написан
    Комментировать
  • Какое недорогое оборудование использовать "удлинения" городского телефона далеко, по IP?

    Bessome
    @Bessome
    Администратор Linux, Windows. 1С программист
    Ищите на яндекс.маркет шлюз сип fxo, шлюз sip fxs. Дома должен быть белый ip или все таки надо заводить через прокси sip. Возможно у оператора городского номера есть услуга по предоставлению этого же номера по sip.
    При установке любого сип клиента на смартфон будьте готовы к тому, что при звонке на мобильный номер разговор будет тут же прерываться (доже если трубку брать не планируете)
    Ответ написан
    5 комментариев
  • Какое недорогое оборудование использовать "удлинения" городского телефона далеко, по IP?

    gbg
    @gbg
    Любые ответы на любые вопросы
    1) Да, может. Два sip-устройства без проблем могут общаться между собой, без промежуточных посредников.
    2) Да, можно. Но клиенты не встроенные, а бесплатные, доступные в Маркете. Это CSipSimple и VoIP by AntiSIP. Есть всякие другие (Linphone), но приведенные два - самые стабильные.
    3) Подсказать SOHO-железо не могу, работал только с крупноофисным.
    Ответ написан
    Комментировать
  • Push-уведомления для Android с помощью Google Cloud Messaging?

    @samarjan
    www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
    Ответ написан
    Комментировать