• Правильно ли я понимаю идею Redux?

    Идея Redux изложена в трех пунктах в официальной документации https://redux.js.org/introduction/three-principles :
    • Single source of truth
    • State is read-only
    • Changes are made with pure functions

    Кроме этого полезно почитать секцию https://redux.js.org/introduction/prior-art . В ней рассказыается предистория.
    Ответ написан
    Комментировать
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    DevMan
    @DevMan
    есть 2 основных подхода: максимум логики в бд и максимум логики в приложении.
    первый был актуален в давние времена, когда компьютеры были медленными.
    сейчас, когда железо дешевеет, а труд специалистов дорожает, превалирует второй подход. у которого с одной стороны есть недостаток в виде возможной просадки по скорости, но с другой стороны нет необходимости держать в штате специально обученных людей, и весь контроль над базой (включая ее структуру) остается на стороне приложения, а не субд.

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

    Все хорошо работает, пока бизнес не меняет логику, меняться запрос и получается много переделывать.
    а переписывать и тестировать процедуры в субд проще? тем более, скорее всего, с изменением процедуры придется переписывать код все равно.
    Ответ написан
  • Стоит ли переходить с php на java?

    neuotq
    @neuotq
    Прокрастинация
    Язык это инструмент.
    Если вы начинаете работать в области где используется другой инструмент, то да стоит выучить. И это вне зависимости от самого языка. Эти бесконечные гонки за мега правильным выбором именного того языка чтобы выучить в 2020 году, бла бла бла - пустой звон. Есть спрос, вам нравится, у вас получается? Берите учите.
    PS тема выбора технологии/стека архитектором приложения конечно же совсем иной вопрос.
    Ответ написан
    Комментировать
  • Чем грозит смена доменного имени сайта?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вы в топ-10 по выдаче в поисковиках? Или почему вас вообще волнует текущая индексация сайта?
    Ответ написан
    1 комментарий
  • Чем грозит смена доменного имени сайта?

    Jump
    @Jump
    Системный администратор со стажем.
    Чем грозит смена доменного имени сайта?
    В вашем случае - ничем.
    Ответ написан
    2 комментария
  • Как вернуть сайту былые позиции?

    opium
    @opium
    Просто люблю качественно работать
    Очевидно сделать редиректов со страх на новые, и позиции вернутся
    Ответ написан
    Комментировать
  • Как вернуть сайту былые позиции?

    @cema93
    WordPress разработчик
    лучше настроить редиректы. со временем поисковик переиндексирует новые страницы и даст им позиции старых
    Ответ написан
    Комментировать
  • Как организовать проект таким образом чтобы при разработке модулей для него не требовался сам проект?

    @BorisKorobkov
    Web developer
    Модуль для своей работы дёргает контроллеры из основного проекта.

    Что-то не то с бизнес-логикой. Обычно наоборот, проект использует модуль (мозг дает команду ногам идти, а не ноги управляют мозгом).

    Правильнее писать такой модуль, чтобы он не зависел от вашего проекта. Доступ к БД у него должен быть свой. Устанавливать его через requirements.txt

    Если модуль нельзя сделать самостоятельным, то тогда хотя бы пусть использует интерфейс, который надо предоставить сторонним разработчикам.
    Ответ написан
    4 комментария
  • Какие есть решения для управления 100+ сайтов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Комментировать
  • Слайдер на Вордпресс?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Плагины для слайдеров поискать можно.
    Можно как-то обыграть галерею, потом легко можно фото вывести (get_post_gallery( $post_id, false ))
    Слайдер такой обязательно надо с lazyload. Как по мне - slick отлично.
    Чуть сложнее с подписью и ссылкой, надо что-то думать.
    Ответ написан
    Комментировать
  • Зачем ботов заворачивают во Flask (как пример)?

    @hail3b
    От http вы получите много готовых решений. Таких как, масштабирование, балансировку, мониторинг, следовательно стабильность, производительность, ускоренное решение проблем.
    Ответ написан
    5 комментариев
  • Что конкретно делает эта функция mysqli_real_escape_string()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это хороший вопрос, в первую очередь потому что найти человека, который знает правильный ответ, практически нереально. Опроси 10 похапешников, 10 из них тебе наплетут ереси, которая не имеет с реальностью ничего общего. Любой, кто заикнется про SQL инъекции, уже облажался.

    При том что функция эта совершенно примитивная - экранировать кавычки в строках SQL. Для соблюдения корректного синтаксиса. Это единственная функция этой функции, и больше ни для чего она не нужна.

    Как ты, наверное, уже знаешь, строки в SQL берутся в кавычки:
    SELECT * FROM table WHERE name='vasya'
    Вот чтобы vasya не приняли за имя таблицы или ключевое слово, его берут в кавычки. Очень просто. Но иногда у человека имя не просто вася. Что будет вот с таким запросом?
    SELECT * FROM table WHERE name='Я Д'Артаньян, а все вокруг ...'

    Мясорубка будет. БД решит, что имя - это 'Я Д', а дальше какая-то фигня, которую она не понимает. И выдаст ошибку.
    Поэтому кавычки надо экранировать.
    SELECT * FROM table WHERE name='Я Д\'Артаньян, а все ...'

    никаких ошибок не выдаст.
    Вот mysqli_real_escape_string() как раз этим и занимается - экранирует кавычку слешем, а заодно и сам слеш, потому что если слеш окажется в конце строки,
    SELECT * FROM table WHERE text='Мну сегодня в любви вкладкой ошиблись :\'

    то БД решит, что последняя кавычка экранирована, и строка не заканчивается. Снова мясорубка.
    Также mysqli_real_escape_string() экранирует еще несколько символов, но уже из чисто эстетических соображений.

    Еще одна функция этой функции - принимать в расчет кодировку текста. Есть кодировки, в которых слеш - это не слеш, а часть другого символа. И когда БД будет парсить запрос, она не поймет, что это слеш, а решит что это просто буква. И снова мясорубка.
    Поэтому перед использованием mysqli_real_escape_string() надо сказать БД, в какой кодировке у нас данные, с помощью функции mysqli_set_charset().

    Но читатель уж сучит ножками в нетерпении - а что же SQL инъекции, о которых так долго говорили большевики? Не может же быть, чтобы они были совсем не при чем. Окей, в качестве побочного эффекта, строка, в которой экранированы спецсимволы (слеш и кавычка), не пропустит инъекцию. Но здесь следует понимать две вещи:

    1. Строки надо форматировать в любом случае, независимо от того, ждем мы инъекцию, или нет. Мясорубка нам точно так же не нужна.
    2. Строками синтаксис SQL запросов не исчерпывается. Есть числовые литералы, есть имена полей. Для всех них mysqli_real_escape_string() бесполезна чуть более чем полностью.

    То есть, отсюда можно сделать вывод, что нельзя использовать mysqli_real_escape_string() для защиты от инъекций. Она предназначена для другого. Вот для этого другого, для форматирования строк, ее использовать можно. Но не нужно.

    Нашлись умные люди, которые придумали, что колупаться вручную с форматированием переменных для SQL запроса - это долго, неудобно, и можно что-то забыть или перепутать. И пусть лучше БД сама этим занимается. И придумали вместо переменных подставлять в запрос специальные маркеры, а сами переменные передавать отдельно. А БД уже потом сама разберется, что и как форматировать.

    В принципе, mysqli умеет так делать, но не так удобно как PDO. Поэтому при возможности вместо нее лучше использовать PDO:
    $stmt = $pdo->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->execute(["Vasya", "Д'Артаньян"]);
    $rows = $stmt->fetchAll();
    - и получить, в итоге, готовый массив с данными, которые вернула БД.
    Если же возможности нет, то кода придется написать чуть побольше
    $stmt = $mysqli->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->bind_param("ss", ...["Vasya", "Д'Артаньян"]);
    $stmt->execute();
    $rows = $stmt->fetch_all(MYSQLI_ASSOC);


    Но при этом всё равно никакой тебе возни с кавычками, слешами, real, escape, и прочей ерундой. Просто, быстро, лаконично и безопасно.
    Ответ написан
    4 комментария
  • Перейти с Java Android на PHP?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Да что за миф то такой из 10-х годов о низком пороге в php? Низкий порог в сравнении с чем? С нейронными сетями на Python и C++ ?? Еще скажите, что на нем только говнокод и получается.
    Да, вы сможете написать что-то простое на php без глубоких знаний, но то что вы сможете написать не будет рассматриваться никак! От джунов сейчас требуют знание mvc, классов, одного фрэймворка, mysql, работу с pdo, знание json, умение работы c api и ее разработки, да еще желательно портфолио и пол годика офф. работы.
    Выход на рынок php не проще, чем на рынок java android, django, node js или js.
    Ответ написан
    5 комментариев
  • Как связывают два микросервиса по GRPC?

    @deliro
    Окей гугл "gRPC" -> grpc.io -> Get Started
    Ответ написан
    Комментировать
  • Насколько адекватно требовать домашнего развития от разработчиков?

    Zoominger
    @Zoominger
    System Integrator
    снг-бодишопов перфоманс ревью опен-сорс

    Лец ми спик фром май харт.

    По теме:
    1). Каким образом вы сделали данные выводы? Вы описываете исключительно свои частные субъективные наблюдения или у вас есть какие-нибудь источники, может, HR-handbook, где прямо описывается практика вешания ярлыков? Не сочтите за какую-то грубость, просто так можно что угодно утверждать.

    2). Вопросы, которые вы перечислили, вполне нормальные, мне на каждом интервью их задавали. Так проверяется мотивация, любовь к своему делу, уровень развития собеседника.

    3). Развиваться на и вне работы - рядовое качество нормального айтишника. Если кто-то говорит, что уже достиг каких-то высот и дальше ему развиваться некуда, то этот человек либо лжёт, либо скоро устареет и потеряет ценность. Область IT меняется постоянно и относительно быстро и изучать что-то самому - суровая необходимость, ибо на ряд специальностей нет образовательных программ даже на Западе.
    Ответ написан
    3 комментария
  • Насколько адекватно требовать домашнего развития от разработчиков?

    @majstar_Zubr
    C++, C#, gamedev
    Это вполне адекватно, потому что в таком случае работодатель преследует лишь одну цель - помочь вам как можно скорее найти другое место работы.
    Ответ написан
    1 комментарий
  • Почему когда compare изменить на что-то другое, то код не работает?

    AnatolTh
    @AnatolTh
    Full Stack Developer
    Потому что экземпляры Collator наследуют только одно свойство из своего прототипа:

    Intl.Collator.prototype.compare
    Геттер; возвращает функцию, сравнивающую две строки согласно порядку сортировки этого объекта Collator.

    И только один метод:

    Intl.Collator.prototype.resolvedOptions()
    Возвращает новый объект со свойствами, отражающими локаль и опции сравнения строк, вычисленные при инициализации объекта.

    По этому пользоваться можно только compare и resolvedOptions().

    Либо можете добавлять свои свойства/методы
    Ответ написан
    Комментировать
  • Как реализовать шифрование на js?

    Вот поиск по тегу на гитхабе - https://github.com/topics/format-preserving-encryp...

    Если что, то это Шифрование, сохраняющее формат

    node-fpe
    const fpe = require('node-fpe');
    const cipher = fpe({ password: 'secret' });
    
    cipher.encrypt('1234567');
    // '4185730'
    
    cipher.decrypt('4185730');
    // '1234567'
    Ответ написан
    Комментировать
  • В чем смысл быть гуру тостера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Работа над личным брендом: Высокая репутация в профессиональных сообществах повышает привлекательность для нанимателей.
    2. Улучшение существующих знаний: Хочешь что-то понять, объясни другому.
    3. Приобретение новых знаний: Специализация замыкает в узком спектре задач и проблем, а Q&A-сервисы - это источник задач и проблем из самых разных областей и иногда под самыми неожиданными углами.
    4. Альтруизм: Большинству из нас кто-то помогал в начале пути, пришло время возвращать долг и делать свой скромный вклад в рост кадров.

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

    Для чего просиживаете на тостере по 5-6 часов в день?

    Я в среднем раз в полчаса-час заглядываю. Если находится интересный вопрос, могу потратить на него минут 10. Некоторые на перекуры больше времени тратят.
    Ответ написан
    7 комментариев