• Как отрефакторить такой код?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Общую часть похожих кусков кода превращаем в функцию, а то, чем они различаются, будем передавать в эту функцию в качестве параметров:

    [
      { del: 'region_id', search: 'regionName' },
      { del: 'district_id', search: 'districtName' },
      { del: 'area_id', search: 'areaName' },
      { del: 'city_id', search: 'cityName' },
      { del: 'place_id', search: 'cityName' },
      { del: 'name', search: 'streetName' },
    ].forEach(n => {
      if (this.tableParam[n.del]) {
        delete this.tableParam[n.del];
        this.searchForm.get(n.search).patchValue(null);
      }
    });
    Ответ написан
    5 комментариев
  • Сaps lock или uppercase?

    sim3x
    @sim3x
    uppercase
    Ответ написан
    Комментировать
  • На каком сайте брать бесплатные HTML шаблоны для разработки?

    @fullset
    Есть, например, htmlacademy. Там есть возможность зарегистрироваться и подписаться на получение писем на почту. Раз в месяц будет приходить письмо, содержащее, в том числе, 3 макета для верстки.
    Ответ написан
    2 комментария
  • И снова this в javascript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    У Кантора же прекрасно и подробно расписано: https://learn.javascript.ru/object-methods

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

    В вашем случае:
    function foo(){
        console.log(this); // на данный момент не определен
    }
    
    var obj = {
        bar: function(baz){
            console.log(this); // функция вызвана в контексте объекта - obj.bar()
            baz(); // функция просто вызвана внутри другой фукнции, т.е. без контекста
            foo(); // тоже самое
        }
    }
    
    obj.bar(foo);
    
    // Если же очень хочется принудительно передать контекст, то:
    foo.call(obj);
    Ответ написан
    Комментировать
  • Во время установки mysql меня не просят ввести пароль. Что мне делать?

    @Niko_F
    запустить mysql_secure_installation или
    стандартная процедура установки/смены пароля mysqld_safe --skip-grant-tables &
    Ответ написан
    4 комментария
  • Что прочитать по ООП и паттернам для веб-разработки на PHP?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Design Patterns PHP (и на русском!)
    2. Что нового в PHP 7.2 (кратко) - здесь

    После того, как разберётесь с паттернами, советую смотреть на реализацию:
    1. https://nette.org (самый удобный и простой, с понятной структурой кода)
    2. https://fatfreeframework.com (микро-фреймворк, почти аналог nette)
    3. https://phalconphp.com (один из лидеров по производительности, C-extension)
    4. https://www.iceframework.org (один из лидеров по производительности, C-extension)
    Ответ написан
    Комментировать
  • Могут ли в прототипе Класса храниться методы, которые зависят друго от друга?

    AngReload
    @AngReload
    Кратко о себе
    Даже хорошо. Если методы содержат некоторые одинаковые части, то их следует выделить в отдельный метод.

    Несколько надуманный пример
    Плохо:
    class Human {
      constructor(name) {
        this.name = name
      }
      sayHelloWorld() {
        console.log(this.name + ' says: Hello, World!')
      }
      sayHelloBob() {
        console.log(this.name + ' says: Hello, Bob!')
      }
      sayHelloAlice() {
        console.log(this.name + ' says: Hello, Alice!')
      }
    }


    Хорошо:
    class Human {
      constructor(name) {
        this.name = name
      }
      sayHello(name) {
        console.log(`${this.name} says: Hello, ${name}!`)
      }
      sayHelloWorld() {
        this.sayHello('World')
      }
      sayHelloBob() {
        this.sayHello('Bob')
      }
      sayHelloAlice() {
        this.sayHello('Alice')
      }
    }


    Если, например, потребуется заменить в классе поле name на firstName и lastName, то во втором варианте нужно будет поменять лишь один метод, а в первом варианте потребуется изменить код в каждом методе.

    Есть такой принцип — Don’t repeat yourself
    Ответ написан
    Комментировать
  • Что быстрее, неймспейсы или классы?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    Ни то, ни другое. Это две совершенно разные вещи.
    php.net/manual/ru/language.namespaces.rationale.php
    php.net/manual/ru/language.oop5.basic.php
    Ответ написан
    Комментировать
  • На какую формулу по физике похож этот код?

    bask
    @bask
    Закон сохранения импульса.
    В частности, здесь - упругое соударение двух шаров
    Ответ написан
    Комментировать
  • Где найти Ментора, Наставника по фронтенду?

    longclaps
    @longclaps
    Ищи его везде - на улицах, в транспорте, в общественных зданиях.
    Опознать его тебе поможет верный признак.

    зы А других советов не слушай.
    Ответ написан
    6 комментариев
  • Как сделать размытие фона как на яндекс дзене?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Через JS такое можно сделать. Нужно высчитать средний цвет картинки (например вот jsfiddle.net/xLF38/818 ) и используя этот цвет, создать градиент по альфа каналу.
    UPD: Вот пример
    Ответ написан
    1 комментарий
  • Как посчитать процент от общего количества записей mysql?

    Stimulate
    @Stimulate
    могу
    SELECT COUNT(*)/(SELECT COUNT(*) FROM addresses)*100 AS percent FROM addresses WHERE status=5
    Ответ написан
    3 комментария
  • Что не так с php?

    RomaZveR
    @RomaZveR
    CEO AlertMoney, PHP/Golang Developer
    $a = 0;
    if ($a == 1) {
       echo "yes";
    } else {
       echo "no";
    }
    Ответ написан
    Комментировать
  • Что не так с php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    В первом случае не сравнение, а присваивание. В итоге в условии используется значение переменной a, которое равно 1, которое приводится к true.

    Во втором случае в первой строке вы производите сравнение, а не присваивание значения. Поэтому во второй строке у переменной $a нет значения, то есть она точно не равна 1.

    С php всё ок, проблема с вашим кодом.
    Ответ написан
    1 комментарий
  • Как можно сделать трансляцию аудио по квартире (дому)?

    Stalker_RED
    @Stalker_RED
    Если я правильно понял, вы хотите сделать так: в каждой комнате "крутилка" громкости которая при нуле выключает акустику полностью.

    Вариант "сделай сам":
    1. Покупаешь на али или на радиорынке, или в чип-дипе пучек энкодеров.
    Они бывают уже с красивой ручкой и панелькой, бывают без - тогда ручки сам подберешь. Выбор огромный. При желании можно найти энкодер сразу с числовым экранчиком, чтоб громкость показывал.

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

    3. Покупаешь самых дешевых ардуинок (на данный момент это китайские клоны pro mini, кажется, меньше $2 за штуку).
    Можно еще дешевле все сделать, купив контроллеры еще попроще, но нужно будет больше скиллов.

    4. покупаешь твердотельных реле. (Если noname, то с хорошим запасом по мощности, х2, например)

    5. Ну и блоки питания исходя из параметров усилков. Контроллеру можно взять питание от тех-же БП через DC-DC преобразователь.

    Собираешь такую систему: на стене крутилка-энкодер, контроллер ждет сигналов с него, управляет громкостью усилка. При нулевой громкости вырубает питание усилка твердотельным реле.

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

    не знаю будут ли шумы, если расстояние от усилителя до динамиков будет 6м
    Вот совсем не влияет. Чтобы раскачать динамик помехи должны быть от чего-то типа электросварки или молнии. А вот помехи на провод которы ДО усилителя влияют намного сильнее, потому что усилитель их усилит. Решается экранированными проводами или брать усилки со встроенным ЦАП и передавать цифровой сигнал.
    Ответ написан
    1 комментарий
  • Что написано в коде на JS?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    А где тут рекурсия? Здесь функция вызывает функцию и не более. Здесь есть цикл.
    Сначала объявляется функция с параметром n. Далее создается переменная sum, она локальная внутри функции. Сначала равна 0.
    Далее запускаем цикл, и задаем условия цикла, что пока переменная i, которая сначала равна 0, не станет меньше чем, или равен параметру n, надо выполнять действия, которые в фигурных скобках, а в конце каждого цикла переменную i увеличиваем на 1. В цикле берем переменную sum и к её текущему значению прибавляем значение i. После того, как цикл завершится функция возвращает sum. В итоге получаем в алерте сумму всех последовательных чисел от одного до 2, в данном примере, то есть 3.
    Ответ написан
    Комментировать
  • Что делает этот код php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Перебирается массив серийников. Путём нехитрых битовых операций сравниваются производные от URL и от последних двух частей в серийнике. Если совпадают, в массив Core::$url дописывается ключ "key" со значением подошедшего ключа.

    Разобрать длинную строку удобнее, разбив конструкцию:
    $d = array('test-site', 'ru');
    $e = array('ST-214E2210-33FE865E-EC05E9A3', 'ST-204C2010-3DEFEFBE-C30E1243', 'ST-214E4000-3D4F3356-E2BCEEBB');
    
    do {
      $b = implode('.', $d); // склеили, получили "test_site.ru"
              
      foreach ($e as $sKey){ // перебираем ключи
        $a = explode('-', $sKey) + array(0, 0, 0, 0); // разбили по дефису в массив,
        // убедились, что в массиве как минимум 4 элемента (если меньше, допис. нулями)
                    
        !( // логическое отрицание того, что в скобках
        	Core::convert64b32( // из 64 бит в 32
        		Core::convert64b32(
        			hexdec($a[3]) // последний фрагмент ключа перевели из 16-ричного в 10-е число
        		) 
        		^  // ксор, побитовое исключающее ИЛИ
        		abs(Core::crc32($b))  // 32-битное число, хэш из адреса сайта
        	) 
        	^  // XOR см. выше
        	~(  // побитовое отрицание
        		Core::convert64b32(
        			Core_Array::get( // тут из конфига получают значение "hostcms" 
        				Core::$config->get('core_hostcms'),
        				'hostcms'
        			)
        		) 
        		&  // побитовое И
        		abs(Core::crc32($b))
        		^
        		Core::convert64b32(
        			hexdec($a[2]) // предпоследний фрагмент из ключа, как число
        		)
        	)
        )
        &&  // только если выше в скобках получился 0, выполнится следующая строка
        Core::$url['key'] = $sKey;
      }
      array_shift($d);
    } while(count($d) > 1);
    
    $a = explode('-', $sKey) + array(0, 0, 0, 0);
    Ответ написан
    Комментировать
  • Краткий тест для web-разработчика?

    Stalker_RED
    @Stalker_RED
    Не нужно ничего выдумывать.
    Двайте им одну-две реальные задачи из вашей работы. Может не целиком лендинг, а например"сверстать форму обратной связи" или "сделать модуль для email рассылки на 2000 адресов", или что там у вас считается за нестандартные задачи.

    Вот прямо откройте историю, выберите несколько тасков на 2-4 часа, и готово.

    Можно даже им оплатить, если это пройдет в прод.
    Ответ написан
    9 комментариев
  • Не работает функция wait() в Lua на nginx - что делать?

    yellow79
    @yellow79
    Senior Software Engineer
    Назовите свою локальную переменную  wait по-другому, похоже она переопределяет глобальную
    Ответ написан
    Комментировать