• Как взять последнее значение с цикла for?

    @sl0
    $leadTag = $leadLists['_embedded']['leads'][499]['_embedded']['tags'][0]['name'];
    Ответ написан
    Комментировать
  • Автоматизация верстки в полиграфии, поможете)?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Я похожие задачи решал так:
    - В Inkscape готовился макет документа в svg-формате. Внутри SVG - это обычный текстовый XML-файл.
    - Потом на его основе строился шаблон, мы использовали стандартный шаблонизатор джанго, но можно взять и сторонний, например Jinja или любой другой, тысячи их. У нас структура документа была гораздо сложнее вашей и я использовал многоуровневые шаблоны для разных фрагментов документа. Да, WISIWIG редактирования шаблонов добиться не получилось, но такая задача была не критичной. В вашем случае шаблон получается тривиальным и можно даже подстановку делать на уровне строк, только экранирование нужно аккуратно сделать.

    Это всё лет десять назад уже делалось. Сейчас может быть есть инструменты поудобнее. Не следил за новостями в этом направлении.
    - Далее шаблон рендерится заполняясь данными из контекста, и итоговый SVG-документ обрабатывается headless инстансом редактора Inkscape, который крутился на отдельной виртуалке, а позднее запускался в docker-контейнере. Это фактически запуск Inkscape -A document.svg document.pdf, при котором документ преобразуется в pdf-файл.
    В итоге полученные pdf опционально собираются в один, чтобы сделать многостраничный документ и его удобнее было печатать. Не помню какая библиотека для этого использовалась, но задача распространённая и простая, найдёте.
    Ответ написан
    Комментировать
  • Как понять, подключён ли кто-то к моему вайфай?

    Adler_lug
    @Adler_lug
    Сосед может банально микроволновкой пользоваться, а у вас Wi-Fi может глючить. Такое бывает.
    Или у него свой Wi-Fi, который работает на том же канале и может быть банальный конфликт. Для возможного исключения последнего в роутере поменяйте канал передачи на какой-нибудь другой. А еще лучше на телефон установите какой ни будь Wi-Fi Analyzer и посмотрите, какие каналы больше заняты и выберите какой-нибудь более свободный.
    Ответ написан
    Комментировать
  • Что делать с хакерскими http запросами?

    @Mnemonic0
    WAF - это вам поможет. Баны по ип/регионам это как блокировка /8 сетей при пыпытке заблокировать Телеграм.
    Вкратце - прикрываешься CDN (Клаудфронт например) и в нём настраиваешь проверку AWS WAF - 95% всех попыток взлома будет закрыто.
    Остальные 5% будет сильно дороже закрыть, всё зависит от денег, которые потеряются от простяо сайта.
    Ответ написан
    3 комментария
  • Что делать с хакерскими http запросами?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Забить, всех не перебанишь, а если захочешь - забанишь реальных пользаков.
    Ну и просто не оставлять подобных уязвимостей.
    Ответ написан
    2 комментария
  • Возможно ли найти удаленную работу для junior iOS разработчика?

    aRegius
    @aRegius
    Python Enthusiast
    Здравствуйте.

    Еще никто не нашел работу, получив какие-либо ответы на какие-либо вопросы. Отправляйте резюме, откликайтесь на вакансии, звоните, пишите, презентуйте себя, параллельно с этим прокачивая свои знания/навыки. Это всё.

    Если вы сомневаетесь, что найти удаленную работу для junior iOS разработчика возможно - не ищите. Если решили искать - тогда уж не сомневайтесь.

    Пожалуйста.
    Ответ написан
    3 комментария
  • Объясните как работает этот код, я не понимаю эти манипуляции со скобочками?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Как комментарий ко всем ответам:
    Надо различать объект функции и вызов результата вычисления функции.
    Объект - это f
    Вызов результата - это f()
    На этом и основан фокус.
    f() превращается в a
    a() превращается в b
    b() превращается в print("nested function")
    Оно печатает строку.
    Ответ написан
    4 комментария
  • Как быстро удалить Foreign Table в postgres?

    Melkij
    @Melkij
    PostgreSQL DBA
    Не могу удалить foreign table из postgres запросом

    Посмотреть в pg_blocking_pids, кто мешает. Сделать с этими соединениями что-нибудь (pg_terminate_backend, например)

    Если делать элементарный запрос SELECT * FROM fwd_orders LIMIT 500, то все исполняется за 600ms . А если в этот запрос добавить любой ORDER BY, то выполнение запроса идет 10 и более минут (в таблице более 20млн. строк). Почему так происходит? И как можно ускорить работу?

    Посмотреть explain (verbose) на предмет того, что считается локально, а что прокидывается на удалённую базу.
    В частности, уточнить у используемого расширения oracle fdw, реализован ли там push-down для order by. По описанию похоже что нет такого и потому вся таблица вычитывается и сортируется локально.
    Ответ написан
    Комментировать
  • Насколько обширен SQL и сколько времени нужно для изучения SQL?

    Adamos
    @Adamos
    Понятно что нужна ещё и практика

    Нет. Нужна еще и теория. Но никаких глубоких экспертов от зазубривания теории вы не получите.
    А ответ ждет вас на форуме авиамоделистов:
    - Сколько нужно времени, чтобы научиться управлять самолетом так, чтобы он не разбивался при посадке?
    - Пять-шесть.
    - Чего? Дней? Недель? Месяцев?
    - Самолетов...
    Ответ написан
    Комментировать
  • Безопасность CRM. С чего начать и чем закончить?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    1) никак, да и незачем. файлы жс уже находятся на клиенте, так что все что вы можете - обфусцировать код, но кому надо и так разберется, а кому не надо пофиг в любом виде. Относительно пхп файлов - иx и так никто не увидит с клиента, они исполняются на сервере, и клиенту доходит только результат выполнения скрипта.
    2) Никак. Если у вас передаются через запросы какие-либо данные которые не должен видеть пользователь, значит что-то пошло не так.
    3) По вкусу, безопасность это никак не гарантирует.
    4) Странный вопрос, суть которого вообще не ясна.
    5) Выдает с головой полное непонимание что и как устроено и что за что отвечает.
    6) Куки не страшные, опасаться не стоит, еще не зарегистрировано ни одного случая нападения куки на человека. Пишите туда данные необходимые для работы приложения. Обычно пароль или другую секретную информацию записывать туда не рекомендуется.

    может кто-то пользуется какими-то лайфхаками)
    Пред тем как писать бред - посвятите 2 минуты гуглению вопроса, хотя бы выглядеть совершенно глупо не будете, и вопрос хоть нормально сформулировать сможете. Не хочется как-то токсично прям отписываться, но такие вопросы вызывают болевые ощущения в глазах...
    Ответ написан
    Комментировать
  • Какой алгоритм работы с JWT token?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    При авторизации выдаются сразу оба токена, рабочий и refresh. Refresh-токен сохраняется в базе сервера вместе с идентификатором пользователя, рабочий токен хранить смысла нет.

    Срок жизни записан в самом токене, как одно из полей полезной нагрузки (payload). Прочитать это поле может и сервер и клиент. Сервер в любом случае должен контролировать срок жизни токена, клиент может это делать сам, а может просто реагировать на ответы сервера.

    Каждый запрос к серверу сопровождается рабочим токеном. Если срок жизни рабочего токена истёк, то сервер возвращает сообщение о необходимости обновления токена.

    Запрос на обновление сопровождается refresh-токеном.
    Если refresh-токен в базе помечен как уже использованный, то инактивируются (удаляются из базы) все refresh-токены данного пользователя и возвращается сообщение о необходимости повторной авторизации.
    Refresh-токен отмечается в базе как использованный .
    Если срок действия refresh-токена истёк или такого refresh-токена нет в базе сервера, то возвращается сообщение о необходимости повторной авторизации.
    Возвращается новая пара токенов.

    Где и как хранить токены на клиенте - вопрос предпочтений. Можно не хранить вообще, тогда при перезагрузке страницы пользователю придётся авторизоваться заново. Можно сохранять только refresh-токен, выполняя запрос на обновление при запуске приложения / открытии страницы.
    Ответ написан
    4 комментария
  • Как настроить парсинг из html в csv (или sql), без 5xx ошибки сервера?

    @mSnus
    Для начала -- проверить, что именно вызывает ошибку 500 (включить и посмотреть лог php, подробности в нём).

    Скорее всего превышен max execution time, если сервер ваш - можно увеличить, если нет - надо делить исходный файл на куски (300 записей ок, говорите?) и выполнять скрипт по очереди с каждым.

    Ещё, возможно, разбирать html регэкспами будет быстрее, чем строить DOM.
    Ответ написан
    Комментировать
  • Что нужно знать чтобы написать свой http-сервер по типу apache?

    vabka
    @vabka
    Токсичный шарпист
    1. Сначала определяемся с требованиями к этому http-серверу, и чем не устраивают существующие решения
    2. Выбираем из какого-нибудь компилируемого, более-менее производительного языка, с поддержкой асинхронности и удобной работой с сетью:
    Erlang, C#, Go, Rust
    Ответ написан
    4 комментария
  • Как автоматизировать настройку Debian 11, Apache2 (+Nginx), Php, Mysql для production web-сервера?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Ansible
    Сначала правда надо его изучить и написать рулбук
    Ответ написан
    Комментировать
  • Как спроектировать базу данных?

    В таблице transactions хранить тип транзакции и её id (то есть у вас должно получиться как минимум три колонки id, transaction_type (символьный или цифровой код, как больше нравится), transaction_id). Остальные колонки в зависимости от поставленной задачи. Далее, в зависимости от типа транзакции, делать соответствующий join.
    Ответ написан
    5 комментариев
  • Как в одном SQL запросе вывести идентификаторы клиентов, у которых нет счёта?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT client
    FROM ( SELECT DISTINCT client
           FROM Dep
         UNION ALL
           SELECT client_id
           FROM Contact ) total
    GROUP BY 1
    HAVING COUNT(*) = 1
    Ответ написан
    Комментировать
  • Как спроектировать страницу авторизации с точки зрения паттерна MVC на PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Или же я вообще пишу глупость

    В целом да. Но

    вся эта логика прекрасно будет в index.php лежать?

    - это гораздо большая глупость.
    Ну то есть лежать-то будет, но к MVC уже никакого отношения не будет иметь.

    По пунктам

    Юзер не должен принимать в конструкторе логин и пароль.
    Вот сейчас эта страница отображает мне двух юзеров помимо меня. Их обоих надо создавать с логином и паролем, серьёзно?

    Что такое AuthPage вообще непонятно. Модель, контроллер? По базе проверяет модель, куки пишет контроллер. А здесь какой-то кадавр.

    Перед тем как писать авторизацию "в стиле MVC", надо сначала разобраться, что такое модель, что такое контроллер, и что такое вью.

    Модель - это вся логика приложения.
    Контроллер - это интерфейс для общения модели с браузером. Делает всё, связанное с обработкой НТТР запросов.
    Вью - отображение.

    Как правильно.

    Соответственно в модели должен быть класс User с методом auth(), который принимает логин и пароль и возвращает инстанс класса Юзер.
    В конторе делается экшен: отдельный метод, который
    - проверяет, если был запрос методом ПОСТ, то берет из него логин и пароль,
    - валидирует их, если валидация не прошла, то создает ошибку, которую надо показать юзеру
    - если прошла, то вызывает метод auth() модели User, передавая в него логин и пароль
    - если совпали, то пишет в сессию ид юзера, и делает редирект куда-нибудь
    - если не совпали, то создает ошибку, которую надо показать юзеру
    - вызывает вью с формой для логина и пароля

    Для регистрации делается еще один экшен, который
    - проверяет, если был запрос методом ПОСТ, то берет из него данные для регистрации,
    - валидирует их, если валидация не прошла, то создает ошибку, которую надо показать юзеру
    - если прошла, то то заполняет класс User данными и выполняет метод save() и делает редирект куда-нибудь
    - вызывает вью с формой для регистрации

    Для личного кабинета делается третий экшен, который берет из сессии ид юзера, обращается к методу read() модели User и через View показывает личный кабинет

    Варианты реализации

    Самый простой вариант реализации контроллера - это папочка с отдельными файлами-экшенами. Ничего плохого в такой архитектуре нет, этот этап надо пройти, если раньше так не делали.

    То есть папка user в которой есть, скажем, файл index.php который является экшеном личного кабинета.
    Он проверяет юзера в сессии, и если нету, то перекидывает на auth.php
    в auth.php есть форма и ссылочка на register.php
    Все три файла инклюдят в себя файл user.php из папки model, в котором есть функции auth(), register() и profile()

    Но в более классическом варианта к трем буквам MVC добавляется ещё одна - R, роутер. Специальный сервис, который разбирает адресную строку, и видя, например, что к сайту обратились по адресу /user/register, создаёт экземпляр класса UserController и вызывает его метод register()
    Ответ написан
    4 комментария
  • Как сделать такой абсолютный путь?

    DevMan
    @DevMan
    <img src="/img/image.jpg" > этого достаточно для работы на любом домене с любой схемой.
    если же реально нужно иметь домен в ссылке, то программно вычислять.

    также есть тег base.

    в общем все зависит от потребности.
    Ответ написан
    2 комментария
  • Почему возникают проблемы с кодировкой при добавлении записи в таблицу?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Похоже, что проблема с тем средством, которым вы таблицу просматриваете.
    Ответ написан
    Комментировать