Задать вопрос
  • Telegram самоподписной сертификат для IP?

    theblackpost
    @theblackpost Автор вопроса
    В общем, решил.
    Итак, мб кому-то пригодится нормальная инструкция для IP:

    openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 \
    -keyout YOURPRIVATE.key \
    -out YOURPUBLIC.crt \
    -subj "/C=RU/ST=Saint-Petersburg/L=Saint-Petersburg/O=Example Inc/CN=IP_СЕРВЕРА"


    Дальше, конвертим в .pem :

    openssl x509 -in YOURPUBLIC.crt -out YOURPUBLIC.pem -outform PEM


    Копируем файлы в папку с другими ключами: (можно не копировать,, но указать свой путь в конфиге Apache)
    cp YOURPUBLIC.crt /etc/ssl/certs/YOURPUBLIC.crt
    cp YOURPRIVATE.key /etc/ssl/private/YOURPRIVATE.key


    В настройки (для apache) /etc/apache2/sites-available/default-ssl.conf :

    <IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    ServerAdmin your_email@example.com
    ServerName IP сервера
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/YOURPUBLIC.crt
    SSLCertificateKeyFile /etc/ssl/private/YOURPRIVATE.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    </VirtualHost>
    </IfModule>


    Создать новый сниппет Apache в каталоге etc/apache2/conf-available.

    Рекомендуется указать в названии файла его назначение (к примеру, ssl-params.conf):

    sudo nano /etc/apache2/conf-available/ssl-params.conf


    # from https://cipherli.st/
    # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProtocol All -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff
    # Requires Apache >= 2.4
    SSLCompression off
    SSLSessionTickets Off
    SSLUseStapling on
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"


    Настроечки для Apache:

    sudo a2enmod ssl
    sudo a2enmod headers
    sudo a2ensite default-ssl


    Проверяем,
    sudo apache2ctl configtest
    если ок, то будет что-то типо:
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    Syntax OK


    Ребутаем.
    service apache2 restart

    Если ок, то открываем c https в браузере.

    Ну а дальше скармливаем сертификат ОБЯЗАТЕЛЬНО! с @ телеграм боту

    curl -F "url=https://IP_МОЕГО_СЕРВЕРА/tg/index.php" -F "certificate=@YOURPUBLIC.pem" "https://api.telegram.org/МОЙ_ТОКЕН/setwebhook"


    Проверяем:

    https://api.telegram.org/МОЙ_ТОКЕН/getWebhookInfo
    Ответ написан
    Комментировать
  • Как включить темную тему сайта одновременно с темной темой в ОС?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    Как работает эта магия разжевана тут
    Ответ написан
    3 комментария
  • Как запускать Ubuntu Desktop в режиме консоли?

    zelsky
    @zelsky
    CTRL+F1
    Ответ написан
    Комментировать
  • Как реализованы порталы в игре Portal?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Честные порталы делать очень сложно, нужно хорошо понимать физику и весь пайплайн рендера. Есть очень много граничных случаев, каждый из которых нужно отдельно поддерживать: портал внутри портала, пересечение границ внутреннего и внешнего портала, несколько внутренних порталов, повороты плоскости портала, перемещение предметов, тени и освещение, прозрачные материалы и т. п. Есть две основные техники реализации отрисовки порталов: через рендер текстуры и стенсильный буфер.

    Порталы на рендер текстурах делаются проще, но они дороже по производительности, даже на простой геометрии несколько порталов могут оказаться непосильной задачей для компьютера. Основной принцип следующий: когда вы смотрите на портал, на другой стороне портала камера рисует картинку в текстуру, эта текстура натягивается на плоскую геометрию, и со стороны кажется, будто бы через дырку видно другую часть сцены. Примитивную реализацию такой схемы можно собрать руками в редакторе, но дальше начинаются сложности. Если у конечного портала "за спиной" будет геометрия, она попадёт во вьюпорт камеры и будет странно смотреться. Чтобы это предотвратить нужно ближнюю плоскость отсечения у камеры сдвигать в плоскость портала с помощью CalculateObliqueMatrix. Для вычисления положения камеры и пересчёта матрицы есть удобный колбэк OnRenderObject. После корректировки матрицы порталы будут смотреться более-менее корректно, но будут всплывать всевозможные косяки при перемещении через плоскость портала из-за буфера глубины и nearClipPlane основной камеры.

    Стенсильные порталы будут работать сильно быстрее, но для их реализации нужно хорошо шарить в шейдерах. Расписывать их работу подробно не буду, в целом они делаются точно так же, только трюки с рендер текстурами заменяются на трюки с буферами, предлагаю лучше почитать пару полезных статей на тему: раз и два. В контексте юнити всё немного сложнее, чем на чистом OpenGL, потому что нет прямого доступа ко всем буферам и для получения похожего результата придётся немного поизвращаться. Потенциально облегчить задачу может низкоуровневое API, но у меня не получилось добиться хороших результатов без потери качества картинки. Я возлагаю большие надежды на ScriptableRenderLoop, если судить по документации, это как раз то, что нужно.

    Прошу заметить, что всё вышесказанное касается чисто графической части, для простейшего случая, когда мы имеем FPS камеру без анимаций, без дополнительных механик, которая просто ездит по уровню и может заглядывать в порталы. Что уж говорить про миллион потенциальных багов, если вы захотите включить рядом с порталом систему частиц или взять в руки кубик. Посему советую либо купить плагин и довольствоваться тем, что он умеет, либо приготовиться потратить несколько месяцев на разработку своей портальной системы. И в том и другом случае ограничения движка не позволят вам в разумные сроки получить Portal, в лучшем случае это будет Narbacular Drop.
    Ответ написан
    Комментировать
  • On touch и подобные обработчики на javascript и jquery - как реализовывается проведение пальцем по экрану слева направо?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    По поводу обработки действий пальцами: touchevents. Событий не так много: touchstart/touchmove/touchend. Событий типа click нету, они эмулируются и добавляют задержку в 300мс.

    проведя пальцем слева направо по экрану

    Это называется swipe. Такого события так же нету, как и tap его нужно хэндлить самому через touchstart+touchmove+touchend. Ну и есть конечно Hummer.js, который реализует все эти жесты. Собственно из этого следует что все мобильные браузеры поддерживают эти три типа событий, на базе которых можно реализовать все типы жестов.

    Конкретно реализация менюшки подобной называется Drawer (выдвижной ящик). Реализация на html5/css/js. Но на слабых андроид девайсах все это очень грустно работает.
    Ответ написан
    Комментировать