• Функции по "Чистому коду" - нужно ли это?

    Zifix
    @Zifix
    Barbatum
    Только ситхи возводят всё в абсолют. Если вы считаете, что какой-то совет даже в распиаренной книге противоречит здравому смыслу, то не обязательно слепо ему следовать. Развивайте критическое мышление.
    Ответ написан
    2 комментария
  • Функции по "Чистому коду" - нужно ли это?

    @Vitsliputsli
    Не совсем так, имеется ввиду создавать функции на все бизнесовых конструкции. К примеру, вам нужно взять хеш от чего-нибудь, вы можете это сделать одной языковой конструкцией, но когда в будущем понадобится поменять механизм хеширования, нужно будет править во многих местах. Поэтому оборачиваете это функцией и все обращения в коде только к ней. И вопрос не только правок, вы лучше контролируете код, зная что вот это, делает только конкретная функция, а не абы как и как кому захотелось.
    Ответ написан
    3 комментария
  • Функции по "Чистому коду" - нужно ли это?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Это какой-то карго-культ получается. Корткие фнукции понятны - поэтому все функции должны быть короткими. Нет, они, а вернее, весь код должны быть понятными.

    Если несколько тривиальных строчек кода понятнее трех однострочных функций, то не надо их переписывать, только потому что введен этот принцип.
    Ответ написан
    Комментировать
  • Функции по "Чистому коду" - нужно ли это?

    sarapinit
    @sarapinit
    Точу водой камень
    Зависит от ситуации.
    А вот людей занимающих фанатичные-категоричные позиции лучше в свою голову не пускать.
    Возьмите лучше Макконелла Совершенный Код. Там больше про реальность и меньше холивара.
    Ответ написан
    Комментировать
  • Создание баланса пользователя на vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Без ларавел - можно и нужно, только на vue(или чем ещё клиентском) - нельзя.
    Вообще, паря, с твоим пониманием сетевых технологий вообще трогать деньги нельзя. Серьёзно, если ты даже клиент от сервера не отличаешь - перепоручи лучше профессионалам.
    Ответ написан
    Комментировать
  • Насколько актуален чистый PHP?

    php666
    @php666
    PHP-макака
    Отвечу как автор того самого обширного ответа.

    Первое. В голове у тебя тотальное непонимание. Вопрос твой звучит примерно так же, как "можно ли быть хирургом не зная анатомию человека и не закончив 5 лет мед института?". Естественно нет.

    Есть ли сейчас смысл в оттачивании чистого PHP
    Язык всегда первичен. Да.

    Далее. Вот эта фраза
    если мне +- хватает понимания, как работает та же Ларавел?
    Ты серьезно думаешь, что у тебя "хватает понимания", как работает фреймворк? Больше не повторяй вслух эти слова. Никогда. Особенно на собеседовании. Иначе собеседующие тебя похоронят за плинтусом.

    Может, при возможности стоит обратить внимание на другой язык(Го, шарп, нода)?
    Сегодня разговаривал с HR-ом, дословно: php-шников и фронтов много. Больше остальных. Спрос на другие языки - go и питон - там низкая конкуренция. Не могу ей не поверить, т.к. php существует более 20 лет и за это время в отрасль вкатилась куча людей. Откровенно говоря, очень скоро значительный % пхп-макак пойдет в такси, включая меня. Конкуренция, судя по собеседованиям - адовая. Спрашивают сам язык и ещё 250 сопутствующих технологий.

    не рискую пока идти на собеседования потому что хочу закрыть чеклист: несколько проектов в портфолио на чистом PHP, laravel; подучить JS с Аяксом; Добить тестирование, а также чуть разобраться с докером, линуксом и теоретической частью этих ваших интернетов.
    мертвому припарка. Ты никогда в "домашних условиях" не получишь боевой опыт. Лучше иди работай за "ничего", больше пользы будет.
    Ответ написан
    1 комментарий
  • Почему нельзя хранить важные данные в localStorage и вообще, JWT чем-то опаснее cookie?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Важные данные обычно никогда не хранятся на клиенте, они передаются, используются и удаляются.

    Есть ли какие-то ситуации, когда использование httpOnly сессионной куки нас защищает, а вот использование localStorage и sessionStorage уязвимо?

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

    Теперь про токены. Токены в теории лучше всего держать не в localStorage, а в sessionStorage. Это хранилище переживает перезагрузки страниц и не расшарено между табами. Т.е. при открытии того же самого адреса в новом табе будет созданая новая сессия. Хранилище очищается при закрытии браузера и таба. Но это жутко неудобно, каждый раз логиниться. Поэтому здравая логика говорит об использовании localStorage, хотя если вы совсем отбитый, то можете хранить токен в сессионой куке.

    Если вы прочли те статьи внимательно, то можно понять, что преимущества сессионных кук нивелируются неудобством их использования.
    JWT Токены предназначены для микросервисной архитектуры. Т.е. у вас есть некоторый центр аутентификации, который выдает вам токен. Токен этот подписан относительно стойкой криптографией и постоянно ротируется.
    Этот токен передается другим микросервисам, которые могут его верифицировать через публичные ключи (JWKS).
    Т.е. если вы хотите, вы можете строить свои сервисы так, что они доверяют не только вашему центру аутентификации, но и гуглу с амазоном через OpenID. Есть ситуации, например когда вы хотите разрешить доступ к сервису сотрудникам другой компании. Например, когда такая компания огромна (десятки тысяч сотрудников). Они аутенфицируются у себя, а вы проверяете, что токен выпущен сервисом данной компании. Это не так сложно реализовать.
    Реализация авторизации лежит на плечах каждого микросервиса и напрямую завязана на бизнес-логику. Как правило это некий внутренний микросервис, который интегрирован c middleware микросервиса.
    Ответ написан
    5 комментариев
  • За что отвечает подключение mysql в .settings.php bitrix?

    no_one_safe
    @no_one_safe
    Bitrix очень старая cms. Часть функционала устарела, но не удаляется по соображениям обратной совместимости. Старый функционал берет подключение из dbconn.php, новый уже из .settings.php
    Но часто старый код взаимодействует с новым. Поэтому подключение указывается в 2х местах. Лет через 10 будет наверное в дном месте, когда все перепишут :)
    Ответ написан
    2 комментария
  • Для чего делают отдельно личный кабинет для физ. лица и юр. лица в интернет магазине?

    @caballero
    Программист
    в большинстве случаев личный кабинет нафигш не нужен

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

    Лично я если меня заставляют регистрироватся просто иду в другой магазин - цены у всех примерно одинаковые
    Ответ написан
    Комментировать
  • Как по клику заменить содержимое во всех div с одинаковым id?

    @rPman
    Найти все элементы div и перебирая каждый запрашивать атрибут id, сравнивая его значение с желаемым.

    То что браузеры позволяют делать несколько элементов с одинаковым id не значит что это правильно. Идентификатор по определению должен быть уникальным.

    Используйте другие атрибуты для этого
    Ответ написан
    Комментировать
  • Вопрос для программистов bitrix: как вы решали проблемы с Cross-Site Scripting?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Вы анализируете кастомный шаблон стороннего разработчика, а не ядро, поэтому вопрос нужно адресовать им.
    Ответ написан
    Комментировать
  • Как сделать форму на PHP без перезагрузки страницы, не используя AJAX?

    profesor08
    @profesor08 Куратор тега PHP
    Никак.
    Ответ написан
    Комментировать
  • В чем отличия catalog.item и catalog.element и для чего надо их использовать?

    catalog.element - детальная страница товара
    catalog.item - карточка товара в списке товаров, в основном в catalog.section подключается, если не путаю
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Запустить один nginx как reverse proxy и каждый сайт в отдельном chroot окружении
    https://www.vennedey.net/resources/3-Secure-webspa...
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    Sanes
    @Sanes
    Каждый PHP Pool запускать от отдельного пользователя. Докеру там делать нечего.
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Разнести по каталогам с разными владельцами и настроить разных пользователей у PHP-пулов. Вы, в общем-то, почти всё сами описали :)
    Ответ написан
    Комментировать
  • Кто хорошо знает javascript, элементарный вопрос?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Есть строки, а есть числа. Это не одно и то же и работает по-разному.

    Почитать тут:
    1. Типы данных
    2. про Числа и parseInt()
    3. Преобразование типов


    А если не читать?
    Чтобы не читать, а разбираться с проблемой на месте, можно смотреть, что именно происходит.
    Повсюду навставлять console.log(), через который выводить значения и типы. Или дебаггером в Инструментах разработчика в браузере останавливать в каждой строчке и смотреть в какой переменной что лежит.

    Ключевые вопросы:
    • что возвращает prompt() – какой тип
    • что происходит если к строке прибавить строку "тос" + "тер"
    • что будет если в строке лежит число "2" + "2"
    • чем отличается от деления "2" / "2"

    Поздравляю, вы на верном пути!

    p.s. на чём летаешь? )
    Ответ написан
    4 комментария
  • Как создать табы на vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    работать с dom напрямую плохая практика

    Не всегда. Зависит от задачи.

    Пусть компонент табов принимает в качестве параметров массив значений, описывающих табы и значение, обозначающее активный таб:

    props: [ 'items', 'value' ],

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

    data: () => ({
      sliderStyles: null,
    }),

    Создадим сами табы и элемент подчёркивания:

    <ul class="tabs">
      <li
        v-for="n in items"
        :key="n.value"
        @click="$emit('input', n.value)"
        class="tabs-item"
      >{{ n.text }}</li>
    </ul>
    <div
      class="tabs-slider"
      :style="sliderStyles"
    ></div>

    Элементу подчёркивания (.tabs-slider) зададим абсолютное позиционирование и transition.

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

    mounted() {
      this.$watch(
        'value',
        value => {
          const index = this.items.findIndex(n => n.value === value);
          const el = this.$el.querySelectorAll('.tabs-item')[index];
          this.sliderStyles = el
            ? {
                left: `${el.offsetLeft}px`,
                width: `${el.offsetWidth}px`,
              }
            : null;
        },
        {
          immediate: true,
        }
      );
    },

    https://jsfiddle.net/vsr5tLue/
    Ответ написан
    Комментировать
  • Почему виснет сайт?

    cr1gger
    @cr1gger
    Все дороги ведут в Рим — встретимся в Риме!
    У тебя 1 картинка только весит 2мб: https://sto-tonn.com/wp-content/uploads/sto-tonn.jpg
    Открой Network и смотри что грузит долго.

    Так же возможно в JS что-то. Частые ошибки:
    В цикле вешают куча обработчиков, что-то с элементами производят и в большом объёме
    Ответ написан
    1 комментарий