Задать вопрос
  • Возможно ли поймать событие загрузки элемента?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    let style = document.createElement('style');
    style.innerHTML = `
    div {
    	animation-name: nodeReady;
    	animation-duration: 0.001s;
    }
    
    @keyframes nodeReady {  
    	from { clip: rect(1px, auto, auto, auto); }
    	to { clip: rect(0px, auto, auto, auto); }  
    }
    `;
    document.head.appendChild(style);
    
    document.addEventListener("animationstart", function(e) {
    	if (e.animationName == "nodeReady") {
    		if (e.target.innerHTML.trim() == 'привет') e.target.innerHTML = 'Пока';
    	}
    }, false);

    По стилям там сами смотрите. Если у вас есть class, например, можно вместо div его указать:
    .mydiv {
    	animation-name: nodeReady;
    	animation-duration: 0.001s;
    }

    Если вы инжектитесь из расширения, то у вас не будет ни элемента head, ни body. Придётся использовать какой-то такой костыль:
    document.children[0].appendChild(style);
    Ответ написан
    Комментировать
  • @font-face различные варианты одного шрифта?

    У вас HelveticaRegular это шрифт Helvetica с 400 жирностью, то есть если вы подключите этот шрифт и поставите font-weight:700,то у шрифта все равно жирность не поменяется.

    Вам нужно делать так:

    @font-face {
      font-family: Helvetica;
      src: url(/fonts/Helvetica/HelveticaRegular.ttf);
      font-weight:400;
    }
    @font-face {
      font-family: Helvetica;
      src: url(/fonts/Helvetica/HelveticaLight.ttf);
      font-weight:300;
    }
    @font-face {
      font-family: Helvetica;
      src: url(/fonts/Helvetica/HelveticaBold.ttf);
      font-weight:700
    }
    Ответ написан
    Комментировать
  • Как реализовать диапазон времени в moment.js?

    potapchino
    @potapchino
    function getTimestamps(from, to, step) {
      function f(timestamps, current) {
        return current.isBefore(to)
          ? f([...timestamps, current.clone()], current.add(step, 'minutes'))
          : [...timestamps, to.clone()];
      }
      
      return f([], from)
    }
    
    
    const timestamps = getTimestamps(
      moment('1745', 'hmm'),
      moment('2000', 'hmm'),
      30
    );
    
    console.log(
      timestamps
        .map(t => t.format('HH:mm'))
        .toString()
    ) // 17:45,18:15,18:45,19:15,19:45,20:00
    Ответ написан
    Комментировать
  • Как реализовать диапазон времени в moment.js?

    @dGololobov
    начинающий
    Напишите результат, который вы хотите увидеть.
    Я пока понял так, что вам нужно увидеть это:
    17:45, 18:15, 18:45, 19:15, 19:45, 20:00

    Верно?
    UPD.
    Не проверял, но должно работать
    const timePoints = (start, end, period = 30) => {
      const iter = (current, acc) => {
        if (moment(current).diff(moment(end), "minutes") > 0) {
          acc[acc.length] = end;
          return acc;
        }
        return iter(moment(current).add(period, "minutes"),  acc[acc.length] = current)
      }
      return iter(start, [])
    }
    
    const mytimePoints = timePoints('17:45', '20:00', 30)
    console.log(mytimePoints)
    Ответ написан
    2 комментария
  • Как перемигрировать одну таблицу Laravel?

    samoilenkoevgeniy
    @samoilenkoevgeniy
    Lead Full-Stack Web Developer
    В вашем случае можно поступить двумя путями:
    1. Написать новую миграцию, в которой вы измените структуру нужной таблице и сделаете php artisan migrate
    2. "Перенакатить" все миграции заново убив текущую структуру (Внимание, потеря данных)

    Ну и самое главное -- хорошо бы почитать что такое миграции и для чего их используют.
    Ответ написан
    Комментировать
  • Как перемигрировать одну таблицу Laravel?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Никак. Миграции изменять после продакшена НЕЛЬЗЯ, только писать новые. Собственно, в этом и смысл.

    Опять же, если до прода - делаете migrate:fresh --seed
    Если после прода - создаете НОВУЮ миграцию, типа alter_users_table_add_avatar, внутри Schema::table() и вперед.
    Ответ написан
    Комментировать
  • Как узнать пол пользователя instagram?

    obezh
    @obezh
    Python разработчик
    Невозможно.
    Но есть три обходных способа: распознавание лиц на фото, пробить имя по базе имён, смотреть от какого лица подписи под постами.
    Интстаграм никак не отдаёт пол.
    Пишу приложение для продвижения в инсте, юзая веб-версию.
    Можно получить многое из аккаунта, кроме пола.
    Пол только сам инстаграм юзает, в разделе статистика у бизнес аккаунта, используя данные, которые юзер указал в профиле в графе "пол". Наружу они нигде не торчат, ни в мобильной версии, ни в веб.
    Ещё четвёртый обходной вариант: юзать пол из фб. Но мало людей привязывают свой фб к аккаунту, особенно в СНГ
    Ответ написан
    Комментировать
  • Как удалить повторяющиеся объекты в VueJS?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сделайте вычисляемое свойство:

    computed: {
      brands() {
        return [...new Set(this.profiles.map(n => n.brand.name))];
      },
    },

    <option v-for="brand in brands" :value="brand">{{ brand }}</option>
    Ответ написан
    1 комментарий
  • Как правильно обновлять сайт в продашкн?

    @Kostik_1993
    Web Developer
    Если в процессе обновления через GIT у вас появляются конфликты, значить вы что-то делаете не так
    Ответ написан
    Комментировать
  • Как снизить нагрузку на БД или какую БД использовать?

    Maksclub
    @Maksclub
    maksfedorov.ru
    В порядке действий:
    • анализ, что работает медленно (не "заказчик говорит медленно", а например "запрос для товаров, при выборке по акциям и покупателям" работает 2 секунды)
    • оптимизация кода, работающего с запросами (снижение числа запросов или более точные выборки) -- самая популярная проблема,

      - снижал на этом только этапе в 1000-1500 раз,
      - видел по 1500 запросов на страницу,
      - видел 1 запрос, но на всю таблицу и потом по коду с этими данными гигантская работа, когда можно было сделать 2 ооочень шустрых запроса в БД с конечными данными :)
      - запросы в цикле, очень много раз видел (гуглить проблема N+1)


    • оптимизация медленных запросов

      Сделать запрос более быстрым, за счет или более точных выборок, или более верного синтаксиса, или стоит например раздробить на нексколько очень мелких, а бекендом все привести к нужному виду

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

    С техниками типа шардинга/репликации никогда не работал
    Ответ написан
    1 комментарий
  • Laravel, отношение для проверки что новость прочитана пользователем?

    @Kostik_1993
    Web Developer
    Есть таблица новости, есть таблица юзеры
    Нужна еще одна user_news_reads например
    В ней два столбца user_id, news_id
    дальше работайте через связь belongsToMany
    Ответ написан
    Комментировать
  • Как объединить такое условие в один скрипт?

    wapster92
    @wapster92 Куратор тега JavaScript
    function resize() {
       if ( $(window).width() < 992 ) {
           $('.item_tab').matchHeight();
       }
    }
    $(window).on('load resize', resize);
    Ответ написан
    Комментировать
  • Вернуть клиенту деньги, за проделанную работу?

    @vism
    Выставить клиенту счет за все что сделано конечно.
    На аванс купить новый автомобиль.
    Ответ написан
    9 комментариев
  • Как правильно написать функцию с произвольным числом аргументов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function setNestedValue(root, ...args) {
      const val = args.pop();
      const key = (args = args.join('.').split('.')).pop();
      args.reduce((p, c) => p[c] = p[c] || {}, root)[key] = val;
    }
    
    
    const obj = {};
    setNestedValue(obj, 'xxx', 'yyy', 'zzz', 69);
    setNestedValue(obj, 'xxx.a.b.c', 187);
    setNestedValue(obj, '_', 666);
    Ответ написан
    Комментировать
  • Как изменить поведение одного и того же элемента?

    dimastik1986
    @dimastik1986
    учусь
    логика очень простая используем .toggle
    $.fn.extend({
        toggleText: function(a, b){
            return this.text(this.text() == b ? a : b);
        }
    });
    
    $(".example").on('click', function(){
    	$(this).toggleText('создать textarea', 'сохранить результат').toggleClass('active');
      
      
      if($(this).hasClass('active')) {
      	alert('открыли textarea для редактирования');
      }else{
      	alert('созранили и закрыли');
      }
    });

    как-то так...
    Ответ написан
    2 комментария
  • Как вырезать IP с помощью регулярных выражений?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если подумать, то регулярные выражения тут не нужны:

    const ip = str.split(':', 1)[0];

    Если подумать ещё, то всё равно не нужны:

    const ip = str.slice(0, str.indexOf(':'));

    Но если очень хочется, то можно так:

    const ip = str.match(/[\d.]+/).pop();

    Или так:

    const ip = str.replace(/:.+$/, '');

    И даже так тоже можно:

    const [ ip ] = /.+(?=:)/.exec(str);
    Ответ написан
    Комментировать
  • Подмена контроллера возможно?

    Helldar
    @Helldar
    Just do it.
    Названия методов, классов, неймспейсов, функций и прочего должны всегда начинаться с буквы.

    Также в ларе принято именовать методы в формате camelCase.

    Route::get('1.0/d/{guid}', 'Files\v1b0\Files@inputFileName');
    
    Route::get('2.0/d/{guid}', 'Files\v2b0\Files@inputFileName');
    
    Route::get('2.1/d/{guid}', 'Files\v2b1\Files@inputFileName');
    Ответ написан
    1 комментарий
  • Что такое public?

    @Arik
    сразу практикуюсь без теории)

    лучше задолбить кого вопросами?

    php.net/manual/ru/language.oop5.visibility.php
    Ответ написан
    3 комментария
  • Что такое public?

    0xD34F
    @0xD34F
    Я тут начинаю изучать php с фреймворка yii2

    Что в переводе на русский означает "собираюсь стать говнокодером".

    Может лучше вы забудете про yii на ближайшие полгода и начнёте изучать php c собственно php? Чтобы вот таких вот дурацких вопросов не задавать. На него и ответить-то нормально нельзя - учитывая ваши нулевые знания php, это всё равно что объяснять тригонометрию человеку, который складывать-вычитать не научился.
    Ответ написан
    1 комментарий
  • Подключение скриптов laravel?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Stacks
    Blade allows you to push to named stacks which can be rendered somewhere else in another view or layout. This can be particularly useful for specifying any JavaScript libraries required by your child views:

    @push('scripts')
        <script src="/example.js"></script>
    @endpush

    You may push to a stack as many times as needed. To render the complete stack contents, pass the name of the stack to the @stack directive:

    <head>
        <!-- Head Contents -->
    
        @stack('scripts')
    </head>


    https://laravel.com/docs/5.7/blade#stacks
    Ответ написан
    2 комментария