Задать вопрос
  • Как удалить атрибут disabled у button?

    @alekcena
    Нелинейный наставник
    Вы ищете несколько элементов а не 1
    Не работает тк как вы не можете применить к масиву ".disabled"
    document.querySelector('button').disabled = false
    Ответ написан
    Комментировать
  • Пишут ли в компаниях коммиты в git на русском?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    принято ли в срезе разработки веб приложений СНГ писать коммиты на русском?

    У нас как только не пишут. Бывает, что мешают по несколько языков в одном проекте, в том числе и в компаниях, которые себя позиционируют как очень модные. Все зависит от конкретных людей в конкретном месте.

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

    1. Англицизмов, которые еще и не имеют однозначной транслитерации в кириллицу, что ломает поиск по коммитам.
    2. Названий классов, файлов, или еще каких-то сущностей из мира кода, которые и так уже переведены и есть в исходниках проекта на английском.
    3. Набора базовых глаголов, которые ставят в начале предложений, вроде "добавил", "исправил", "удалил".


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

    MANAB
    @MANAB
    Разрабатываю на C#: Web, Desktop, Gamedev
    Даже в рамках одной сети магазинов один и тот же товар даже в одном городе может иметь разные цены.
    В общем, не слышал про такие сервисы и не верю в возможность их существования.
    Ответ написан
    3 комментария
  • Как вывести данные из БД на страницу?

    sslion
    @sslion
    сделать запрос к базе, получить нужную запись, и вывести на страницу используя html-разметку (или использовать какой-нибудь шаблонизатор типа Twig)
    Ответ написан
    Комментировать
  • Как добавить плавности при открытии блока на JS?

    @Firsov36
    full-stack web developer
    Вы бы лучше фрагмент работающего кода с блоком выложили куда-нибудь на codepen, чтобы можно было изменить и показать вам. А так, можно замучиться объяснять.

    display:none - не работает с transition,
    можно использовать связку visibility и opacity (возможно добавить position: absolute чтобы не было белого поля, надо смотреть уже на месте)

    visibility: hidden;
    opacity: 0;
    transition: visibility 0s, opacity 0.5s linear;


    ну и соответственно в активном состоянии стили такие

    visibility: visible;
    opacity: 1;


    Решений такой задачи бегло штук 5-6 можно придумать. Можно побаловаться высотой блока и плавно анимацией выводить его из под заголовка. Но я бы лучше использовал вывод сверстанного блока с информацией из под блока с названием и прятал его там с помощью clip-path и анимацией опускал вниз.
    Ответ написан
    Комментировать
  • Как обработать запрос который приходит на клиент?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    если его присылают на клиент?

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

    60bf337a2950b516827263.png

    За 2 минуты нашёл инструкцию на их сайте. Как вы гуглите?
    Ответ написан
    3 комментария
  • Как убрать в мобильной версии сайта пустое пространство справа?

    Stalker_RED
    @Stalker_RED
    * {
     outline: solid 1px red;
    }
    и возможно вы увидите что у вас торчит за пределы body.
    Ответ написан
    Комментировать
  • Как правильно писать catch в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для того чтобы правильно писать catch, надо писать осмысленный код.

    А здесь мы наблюдаем очаровательный пример карго-культа.
    Узнав, что "толстый контроллер - это плохо, а сервисы - это хорошо", автор небрежным движением руки замел весь мусор под ковёр перенёс весь код из контроллера в "сервис". Ну а что? Контроллер худой, весь код в сервисе!
    Тот факт, что сама кривая структура проекта осталась, по сути, той же самой, нас не смущает.
    Как и то, что сервис вдруг начал выполнять функции НТТР контроллера и кидать почему-то НТТР исключения. Что с этими исключениями делать в случае, если тот же сервис будет вызван из консольной команды - загадка.

    Но самое забавное, что при всём при этом контроллер всё равно пытается выполнять работу модели. Казалось бы, какое отношение интерфейс для обслуживания НТТР запросов имеет к транзакциям в базе данных? А вот поди ж ты!

    Чтобы сделать этот код осмысленным, контроллеру всё-таки придется потрудиться, и выполнить какую-то работу самому, а не перекладывать на "сервис". А так же отдать модели то что ей принадлежит.

    В общем транзакцию перекинуть в createDefault. причём не напрямую, а ещё ниже - в слой для работы с БД. Стартовать транзакцию до валидации данных - это как бы *не совсем логично*, мягко говоря. И в итоге, как по волшебству, весь этот говнокод исчезнет как страшный сон.
    При этом в параметрах передавать не НТТР реквест чохом, а осмысленный набор параметров, вынутый предварительно из реквеста!
    В частности, если модель сама проверяет права доступа, то и передавать ид пользователя из авторизации.

    При этом модель не должна кидать НТТР исключения. Она должна кидать исключения бизнес-логики. Которые контроллер уже может ловить и транслировать в хттп. Но тут видимо уже сложнее, поскольку это ж ларавель судя по всему.

    В любом случае, уж catch (Exception $e)-у тут точно не место

    Но это если рассматривать твой конкретный случай.
    В общем же случае правильный код написал Илья.

    То есть внутри трая операции с БД и коммит.
    в кетче роллбэк и перевыброс исключения. Только ловить надо Throwable

    try {
      DB::beginTransaction();
      // запись в БД
      // запись в БД
      // запись в БД
      DB::commit();
    } catch (\Throwable $e) {
      DB::rollBack();
      throw $e;
    }
    Ответ написан
    2 комментария
  • Как безопасно использовать WHERE?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ты хочешь написать квери билдер. Практически всё уже написал.
    Всего-то надо вместо значений подставлять плейсхолдеры, а сами значения запоминать в переменной.
    Общий принцип такой:

    class Test {
        protected $where;
        protected $params;
    
        public function getAll()
        {
            $result=$this->db->prepare("SELECT * FROM table WHERE 1=1 ".$this->where);
            $result->execute($this->params);
            return $result->fetchAll(PDO::FETCH_ASSOC);
        }
    
        public function byDate($start,$end=false)
        {
            if ($end) {
                $this->where .= " AND data BETWEEN :start AND :end";
                $this->params['end'] = $end;
            } else {
                $this->where .= " date >= :start";
            }
            $this->params['start'] = $start;
            return $this;
        }
    
        public function byCol($col)
        {
            $this->where .= " AND col = :col";
            $this->params['col'] = $col;
            return $this;
        }
    }
    
    $sql = new Test;
    $data = $sql->byCol($col)->byDate($start)->getAll();


    по-хорошему тут еще должны быть отдельные переменные для самого запроса, для order by, limit и так далее
    Но начать можно с такого
    Ответ написан
    3 комментария
  • Как из html и js сделать игру?

    с помощью этой штуки https://www.electronjs.org/docs/tutorial/quick-start
    можно поискать видосы на ютубе по ней
    Ответ написан
    Комментировать
  • Какой ИБП выбрать для слабого офисного ПК, чтобы работал без света?

    @kamenyuga
    У бесперебойников в общем-то две основные характеристики - максимальная мощность и емкость батареи. Мощность - ее прямо в названии в магазинах пишут. Ее должно хватать для типичного потребления компьютера. Для описанных в вопросе пк скорее всего и 300 Вт будет всегда хватать. Можно брать любой самый дешевый. А батарея - тут зависит от необходимого времени работы автономной. Почти любого ИБП хватит, чтобы нормально выключить компьютер. А если надо прямо проработать какое-то время, то гуглим "nix время автономной работы ИБП при нагрузке" и получаем список из протестированных ибп вместе с ценами.
    Ответ написан
    1 комментарий
  • Как в один input отправить несколько значений с select?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const container = document.querySelector('селектор контейнера с select\'ами');
    const selectSelector = 'селектор select\'ов';
    const input = document.querySelector('селектор input\'а');
    const updateInput = selects => input.value = Array.from(selects, n => n.value).join(' ');

    container.addEventListener('change', function() {
      updateInput(this.querySelectorAll(selectSelector));
    });
    
    // или
    
    const selects = container.querySelectorAll(selectSelector);
    const onChange = updateInput.bind(null, selects);
    selects.forEach(n => n.addEventListener('change', onChange));
    Ответ написан
    1 комментарий
  • Как инициировать в JQuery функцию на блоке при загрузке документа?

    Stalker_RED
    @Stalker_RED
    Событие DOMContentLoaded происходит, когда весь HTML-код был получен и распарсен браузером.
    Оно-же представлено в jQuery как $(document).ready с одним дополнительным удобством - если вы подпишетесь на событие DOMContentLoaded ПОСЛЕ того как оно произошло, то оно никогда не наступит. А код в jQuery.ready сработает и в этом случае.

    Метод window.onload или событие load объекта window сработает когда весь HTML-код, а также все стили, изображения, и прочий медиаконтент будет загружен.

    Также, отдельные события load есть у изображений img и у некоторых других медиа-элементов.

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

    dyuriev
    @dyuriev
    A posteriori
    прежде чем парсить какой то сайт, для начала убедитесь, а нет ли у него API

    https://developer.inter.ikea.com/
    Ответ написан
    Комментировать
  • Как не переборщить с классами html с желанием потом их переиспользовать?

    inkShio
    @inkShio
    делай модификаторы

    // стандарт
    <div class="field">
      <input class="input" />
    </div>
    
    // с модификаторами
    <div class="field field_big-space">
      <input class="input input_big-text" />
    </div>
    Ответ написан
    1 комментарий
  • Как сменить кодировку textarea на UTF8bm4 при отправке на сервер?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    1. Нету никакого "UTF8bm4", а есть "utf8mb4"
    2. В форме и скриптах ничего для этого менять не нужно так как это просто UTF-8
    3. utf8mb4 это про кодировку и хранение строк на уровне БД: и вам соотв-но нужно задать правильный charset при установке соединения и правильный collation для полей таблицы

    читаем https://profiphp.ru/useful/utf8mb4.html
    вникаем https://ruphp.com/utf8mb4-php-mysql.html
    Ответ написан
  • Можно ли создать веб приложение без базы данных?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Можно
    Ответ написан
    Комментировать
  • Как заставить события выполняться больше 1 раза, если я с помощью AJAX'а перезаписал содержимое элемента?

    teknik2008
    @teknik2008
    Расскажите про GOLANG. Мне интересно
    Скорее всего вы перезаписываете элемент на который вешали слушателя. Тут 2 варианта.
    Или после перезаписи обновить слушатель, или использовать всплытие событий, и слушатель повесить выше по дереву.
    Ответ написан
    Комментировать
  • Как исправить "No 'Access-Control-Allow-Origin' header is present on the requested resource"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    не получится делать запросы к апи вк прямо из скрипта страницы. Заголовки ожидаются от их сервера, и разумеется никто в вк не пропишет адрес вашего сервера как разрешенный.

    Используйте их js sdk.
    Ответ написан
    Комментировать
  • Как правильно работать с большим количеством данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не хочется ругаться, но вопрос очень бессвязный и в нем перемешаны реальные проблемы с нелепыми фантазиями.

    И проблема тут не в незнании как работать с большими базами данных, а в неумении работать с БД в целом.

    Про идею "всем индекс не поставишь" надо сразу забыть. Там где индекс нужен, он должен стоять без вариантов. Другое дело что тупо натыкать индексов по всем полям, по которым идёт поиск - это тоже глупость. Индекс в запросе может использоваться только один, и индексы по второму-третьему полю уже будут бесполезны. Надо анализировать запросы и, возможно, делать составные индексы.

    Детсадовский запрос вида like '%...%' - это отдельный ужас. Надо смотреть на полнотекстовый поиск. А лучше вообще его избегать. На крайний случай использовать внешние поисковые сервисы типа эластика. И только не говори что этот лайк у тебя идёт по полю типа джейсон или "через запятую"

    Но самый конечно кошмар - это select distinct для фильтров. То есть неумение проектировать бд на самом базовом уровне, непонимание самых начальных принципов реляционных бд, нормализации. Вот с этих принципов и надо начать. В потом уже хвататься за большие объемы. Очевидно, что поля по которым ты собрался делать "distinct" - это должны быть отдельные таблицы, от которых в основной таблице будет просто id. поле размером в 4 байта.

    Непонятно, откуда взялись фантазии про гигабайтные индексы, кстати. Большая часть полей в нормальной бд - это не больше десятка байт. То есть индекс - это десятки мегабайт, а не "гигабайты".

    В общем, куда лучше бы смотрелись здесь не абстрактные рассуждения про большие объёмы, а конкретный запрос, который "отваливается". С обязательным результатом EXPLAIN

    А ответ на абстрактный вопрос "как работать с большими объемами" очень простой: точно так же, как с небольшими. Реляционные бд изначально проектировались под большие размеры. То есть надо просто уметь работать с бд. Читать про реляционную модель, нормализацию, индексы, оптимизацию запросов.

    Конкретно для грида надо смотреть в сторону Эластика/Сфинкса. В смысле чтобы не только для полнотекстового поиска, а чтобы все фильтры, которые есть выборке, были забиты в поисковый индекс. И все выборки - через поисковый сервис, а не через прямой запрос к базе
    Ответ написан
    8 комментариев