• Как защитить контент от парсинга с помощью Nginx?

    @rPman
    Основная защита от парсинга - только при доступе к данным по авторизации и установка лимитов на данные (объем, доступный пользователю либо за какой то период времени, например сутки/месяц).

    Анонимно доступные данные, в общем случае, защитить от выгрузки пользователями - невозможно. Все что пользователь видит на экране можно тупо скопировать и проанализировать.

    В некоторых случаях, если собирать качественный отпечаток браузера, можно присвоить анонимным пользователям некий идентификатор и уже на его основе выставить на бакэнде лимиты доступа к данным, но как всегда трудности в мелочах и если перестараться, можно помешать работе легитимных пользователей.

    Можно поставить 'палки в колеса', сделав этот процесс сложнее (и дороже), в основном это запутывание/шифрование данных, доступных напрямую (по api) с бакэнда и обфускация кода, его преобразования в видимый пользователю контент, чтобы классические (дешевые) инструменты не работали. Как всегда стоимость защиты (затрат на разработку) должна быть сравнима затрат граберов на получение данных (обычно им проще).
    К сожалению вместе с контент-грабером, в заблуждение будут введены роботы поисковых систем, ведь их основная работа - грабить контент.
    spoiler
    * api не должен быть простым и интуитивно понятным, идентификаторы могут вообще не быть постоянными (их можно преобразовывать на бакэнде на основе данных в сессии)
    * код javascipt, например получения ссылки на объект должен быть нетривиальным, т.е. чтобы получить следующую ссылку на требуемый граберу объект, потребовалось бы использовать сам браузер (а не простенький скрипт парсер html)
    * верстка может быть непостоянной, изменяющиеся, простые гуляющие наименования классов и идентификаторов уже могут создать кучу проблем (я такое встречал), а уж постоянное изменение структуры должно совсем запудрить голову даже опытным граберам (не встречал)
    * шрифт может не являться правильным (видимые символы могут не соответствовать их кодам), при этом генерируемый каждый раз новый под конкретную сессию пользователя. Простая подстановка, сильно усложнит (но не сделает невозможной) получение данных через буфер или document.innerText в консоли браузера, оставив граберу только вариант распознавание экрана скринридером (а не тривиальная верстка потребует от пользователя сложную настройку и автоматизацию и эти инструменты)
    * типовые javascript методы браузера должны быть замещены на 'неправильно работающие', чтобы граберу пришлось использовать внешние скрипты а не простой инжект javascript (обычно это сильно упрощает).
    Ответ написан
    3 комментария
  • Задачку по JS такую как решить?

    profesor08
    @profesor08 Куратор тега JavaScript
    "Хацкаем" метод метод, пишем в глобал результат, юзаем результат.
    Math.floorOrig = Math.floor;
    Math.floor = (n) => {
      window.num = Math.floorOrig(n)
      return window.num;
    }
    
    function getNum() {
      const num = Math.floor(Math.random() * 10);
    }
    
    getNum();
    
    console.log(window.num);


    Еще можно просто переопределить саму функцию.
    function getNum() {
      const num = Math.floor(Math.random() * 10);
    }
    
    function getNum() {
      return Math.floor(Math.random() * 10);
    }
    
    console.log(getNum());
    Ответ написан
    3 комментария
  • Как повысить шансы на получение работы, если плохо с навыками речи?

    GavriKos
    @GavriKos
    Вообще есть куча всяких тренингов/практик/подходов именно для улучшения коммуникативности. Сходите к психологу, например. Для начала. Правда поможет. Если действительно есть проблема и она действительно вас аффектит
    Ответ написан
    Комментировать
  • PHPMailer по SMTP - попадает в СПАМ, что не так?

    twix007
    @twix007
    DKIM, DMARC, SPF настраивайте!
    Ответ написан
    Комментировать
  • PHPMailer по SMTP - попадает в СПАМ, что не так?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Гугли: SPF, DKIM, верификация домена и адреса.
    Ответ написан
    Комментировать
  • Какие логины стоит сразу блочить при открытой регистрации?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Создайте список всех нужных групп и ролей пользователей.
    2. Переведите на английский (если они будут на русском, и наоборот), создав копии на всех доступных (для никнеймов) языках.
    3. Объедините строки в кластеры.
    4. Напишите ограничивающие регулярки для каждого кластера.
    Ответ написан
    2 комментария
  • Альтернатива сдувшемуся гугл фото?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Как я понимаю, многие американцы смотрят на Amazon Photos. Но у них он вроде как входит в подписку Prime, так что у нас с этим сложнее.

    Если фоток реально много, то можете рассмотреть вариант с покупкой NAS'а. Сейчас их много, разных и умных, можно и загружать туда удалённо и расшаривать.

    Либо покупайте хостинг (через пару недель на чёрную пятницу хорошие скидки будут) и ставьте что-то наподобие Lychee, Piwigo и прочих. Будете сам себе хозяин.
    Ответ написан
    1 комментарий
  • Как правильно реализовать обработку одновременных запросов к бэкенду?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Это вы серезную проблему на самом деле затронули.
    варианта два
    - либо сделать блокировки на уровне БД, где над такой проблемой подумали бородатые дядьки и придумали разные решения (и вам нужна будет нормальная БД)
    - либо поменять систему так чтобы такой проблемы вообще не было - обеспечить обработку только одного заказа в один момент времени, если у вас скрипт работает в единственном экземпляре, то вы можете приостановить обработку всех остальных заказов, если уже какой-то один обрабатывается. Например завести очередь, при поступлении заявки класть ее в эту очередь, брать и обрабатывать по одному от начала и до конца, и когда один заказ полностью завершился и сформирован, брать следующий, обрабатывать его.

    городить какие-то свои блокировки поверх гугл-таблиц - гиблое дело, вы уменьшите вероятность, но не уберете ее полностью.
    Ответ написан
    3 комментария
  • Почему в браузере google chrome добавленные элементы в блок уезжают наверх, когда в mozilla firefox уходят вниз?

    @cheeroque
    Это чудесное изобретение гугла называется Scroll anchoring. Чтобы отключить, добавьте в CSS:

    body {
      overflow-anchor: none;
    }
    Ответ написан
    2 комментария
  • Где почитать про разработку под фитнес браслеты?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Тебе нужно понимание работы BLE (Bluetooth Low Energy).
    А вообще, для твоей задачи лучше всего подойдёт библотека Gadgetbridge, там есть поддержка большого зоопарка браслетов.
    https://gadgetbridge.org/
    https://github.com/Freeyourgadget/Gadgetbridge
    P.S. Никогда не ищи в поисковиках на русском языке проблемы, связанные с программированием. Только на английском!
    Ответ написан
    Комментировать
  • Как сделать подобный "вырез" в блоке?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    Как вариант, так
    Ответ написан
    7 комментариев
  • Как сделать последовательные select?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Это называется cascade select
    Например
    Ответ написан
    Комментировать
  • Как устроиться на начальную должность в веб?

    Devilz_1
    @Devilz_1
    Frontend-Developer
    Как устроиться на начальную должность в веб?

    Ходить на собеседования. По большей части джунам не нужны портфолио (на то они и джуны). Сходите на парочку собесов и поймёте, что именно вам нужно знать для трудоустройства.
    Ответ написан
    3 комментария
  • Существует литература для понятия основ работы процессора?

    Stalker_RED
    @Stalker_RED
    Берем ваш текст, и меняем слово "процессор" на что-то более понятное, типа "автомобиль" или "телефон".

    Почему выходит удачная модель? Что в ней именно меняют с технической стороны, что она становится удачной? Почему для каждого процессора разный сокетавтомобиля разный корпус? Если выпуски новых процессоровавтомобилей - это эксперименты - зайдет, не зайдет, то почему не удается тупо выпустить универсальный процессоравтомобиль? Чем определяется мощность процессораавтомобиля и каким образом он становится мощнее, опять-таки, с технической стороны? Почему, если нет никакой литературы, а есть все в Яндексе (для тех, кто отправляет в яндекс)? А откуда работник берет знания для устройства в компанию для разработки новых процессоровавтомобилей? Смотрит обзорчики на ютубе?
    Не кажется, что список вопросов странноватый?
    Наверняка разработчики автомобилей не только на ютубе учатся, а читают какие-то учебники, проходят курсы, и не за недельку в теме разбираются, а тратят приличненько так времени.
    Наверняка универсальный автомобиль, который может и пиццу доставить, и 400 тонн щебня перевезти, и в формуле-1 победить - немножечко не существует. Вместо него есть специализированные. И для кого-то из них важна скорость, для кого-то грузоподъемность, а для некоторых так вообще, расход бензина на первом месте.

    Попробуйте почитать статьи типа таких. Если слишком сложно-сложно-нипанятна - найдите себе учебников с основами, вроде Таненбаума, он доходчиво объясняет.
    Ответ написан
    Комментировать
  • Существует литература для понятия основ работы процессора?

    @LuchS-lynx
    инженер-ПТО
    Понимаете , если Вы ищите что бы это было разжовано в режиме легкого чтива, то, боюсь, такой литературы нет. По сути своей Вам необходим хороший курс по процессору и околопроцессорной тематике.

    Начать, можно, например, с Ассемблера. Нет, я не призываю Вас все бросить и начать на нем программировать, но этот язык требует знаний архитертуры, и, как следствие, там есть нужная Вам информация.
    Юров В.И. - Assembler 2-е издание

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

    Далее это тесты и обзоры процессоров, практика сравнений. Как правило обзорщики пишут причины почему один процессор обходит другой, а лучше тестирование в прикладных задачах, например работа с БД, расчеты.

    Далее это техпроцесс и архитектуры. Каталогизированной информации нет, только поиск в гугле, на ютубе... Например на Хабре были подобные статьи
    https://habr.com/ru/post/456922/
    Это техническая литература, зачастую в открытом доступе ее может и не быть, кроме маркетинговых общих фраз.

    И вот изучив тонны литературы и потратив уйму времени - Вы и получите ответ на вопросы Бытия!!!

    Почему для каждого процессора разный сокет? Если выпуски новых процессоров - это эксперименты - зайдет, не зайдет, то почему не удается тупо выпустить универсальный процессор?
    Ну во-первых не для каждого, у АМД сокеты долгоиграющие, а вот тот же Интел меняет их под каждое поколение, потому что ему так удобно. Но дело не только в том, как раскрутить пользователей на бабки. Материнские платы увязывают множество технологий и стандартов и, если год назад DDR4 были нормой, то завтра нормой будет память DDR5, появится новый тип USB - 4.0, поменяется реализация шины для видеокарты и вот... новые технологии могут не оставить места для старых процессоров, как и новые процессоры перестанут поддерживать старые реализации протоколов и шин... Это невозможно оттягивать бесконечно. По-этому рано или поздно смена сокета будет необходима.

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

    Robur
    @Robur
    Знаю больше чем это необходимо
    хотя бы определить какой state был предыдущий.

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Хороший вопрос!
    Я интересовался и получил ряд ответов от самих Заказчиков. Так, сказать, их мировозрение в этом плане.

    Со стороны Заказчиков:
    1. Раз ты работаешь на фрилансе - ты лох, потому, что не смог никуда устроиться.
    2. Если ты фрилансер - ты раб, который зарабатывает, чтобы не умереть с голоду. Поэтому, много тебе и платить не за чем.
    3. Нет гарантий для нас, что ты сделаешь всё на совесть. Мы не понимаем как сделать самим и, при этом, хотим хорошо сэкономить.
    4. (Про время) Мы оцениваем не сложность проекта и твоё умение и опыт, а время, которое никак не может быть дороже медианы фриланса по этому направлению.
    5. Нам нужно быстрее, т.к. это получается дешевле для нас, т.к. мы оцениваем время, а не сложность нашего проекта.
    6. Все фрилансеры низкоквалифицированные рабы.
    7. Каждый, кто мнит себя опытным и будет просить больше, будет сидеть без работы, т.к. высокая конкуренция и есть большой выбор исполнителей на рынке за копейки.
    8. Фриланс - это рабы IT сферы для нашего бизнеса.
    9. Мы всегда ищем тех, кого сможем обмануть в плане оплаты за работу и их почти 100%.
    10. Нам ничего не стоит сбросить сумму оплаты в любой момент сославшись на угрозу отрицательного отзыва.
    11. Мы не дорожим репутацией, в отличие от фрилансеров.
    12. Вы сами ничего не делаете: всё берёте с гитхаба уже готовое. За что вам платить?!

    (и ещё можно продолжать и продолжать...)

    И сразу возникает вопрос:
    Ждать ли роста дохода фрилансеров IT-сферы и когда?
    Ответ прост: когда все IT-шники поймут, что нужно ценить труд друг друга, что они не конкуренты друг другу, а единый целый "организм", который может сам за себя постоять и накормить вне зависимости от места работы и размера дохода.
    Итог: Не нужно работать и "ломать" глаза на тех, кто этого не понимает, а значит, и НЕ ЦЕНИТ!

    А пока разделяйте качество своих трудозатрат на "хлеб" и на "работу" и сразу озвучивайте 2 суммы заказчикам.
    Ответ написан
    10 комментариев
  • Как сделать вот такой блок?

    LenovoId
    @LenovoId
    svg, css,js
    почти тоже самое

    Ответ написан
    Комментировать