• ИИ, Нейронные сети, ML – для школьника?

    с чего начать?

    Создать, запустить, поиграть с простой нейронной сетью, чтобы попробовать, понять, ощутить, как оно всё.

    Для этого, скорее всего, понадобится хотя бы начально знать язык Python. Если раньше не сталкивались, сначала пройдите вводный курс по Python.

    И выбрать и пройти какой-то вводный (видео-)курс по машинному обучению. Выбирайте:
    Ответ написан
    2 комментария
  • Почему не получается парсить баланс своего яндекс кошелька?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Есть же API Яндекс.Денег, есть официальный PHP SDK.

    Можно и баланс запрашивать и даже переводы делать.
    Ответ написан
    Комментировать
  • Почему меняются все значения массива, вместо каждого отдельно?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Одинаковые потому, что внутри .map() никак не используется значение очередного элемента el

    Всегда возращается одно и то же, приготовленное из констант twentyFourHours, minutesToAdjust, millisecondsPerMinute

    spoiler
    console.log(timestamps.map(ts => {
      const D = new Date(ts);
      D.setMinutes(D.getMinutes() + 36);
      return D.toISOString();
    }))
    Ответ написан
    2 комментария
  • Решение 1/n- Cycle?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Элегантное решение всё основано на этой строке.
    Поскольку интересует дробь 1 / n, сначала переменная val равна 1.
    Вспомните деление в столбик, десятичную запись числа.
    Первая цифра, поскольку n>1, всегда 0 целых. И далее идут дробные.
    Чтобы получить первую цифру после запятой, имеющийся остаток с предыдущего шага (1) умножаем на 10 и делим на n.

    Например, 1/7. Записываем
    0.
    остаток 1

    1 * 10 = 10, делим 10 / 7, получается 1 целая и 3/7
    Цифра 1 – первая после запятой (но она сама по себе в этой задаче никак не нужна), и остаток 3:
    0.1
    остаток 3

    Этот остаток далее опять умножим на 10 * 3 = 30 и опять поделим на 7, чтобы получить следующую цифру (4).
    И так далее.

    До тех пор, пока снова не появится единица – с неё мы начинали, значит, второе её появление уже новый виток цикла цифр.

    Для истории приведу
    текст задания на англ.
    Let be n an integer prime with 10 e.g. 7.
    1/7 = 0.142857 142857 142857 ....

    We see that the decimal part has a cycle: 142857. The length of this cycle is 6. In the same way:
    1/11 = 0.09 09 09 .... Cycle length is 2.

    Task
    Given an integer n (n > 1), the function cycle(n) returns the length of the cycle if n and 10 are coprimes, otherwise returns -1.

    Examples:
    cycle(5) = -1
    cycle(13) = 6 -> 0.076923 076923 0769
    cycle(21) = 6 -> 0.047619 047619 0476
    cycle(27) = 3 -> 0.037 037 037 037 0370
    cycle(33) = 2 -> 0.03 03 03 03 03 03 03 03
    cycle(37) = 3 -> 0.027 027 027 027 027 0
    cycle(94) = -1 
    
    cycle(22) = -1 since 1/22 ~ 0.0 45 45 45 45 ...
    Ответ написан
    2 комментария
  • Как найти все локальные минимумы в матрице?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Проверять каждый элемент, сравнивая с 8 или 5 (у стенки) или 3 (в углу) соседями.
    Ответ написан
  • Как упростить выравнивание высот нескольких элементов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    const els = [...document.getElementsByClassName('yourself-item__title')];
    const maxHeight = els.reduce((acc, el) => Math.max(acc, el.clientHeight), 0);
    els.forEach(el => el.style.height = `${maxHeight}px`);
    Ответ написан
    1 комментарий
  • Как ускорить процесс исправления перспективы (искажения) на фотографии?

    В Adobe Lightroom есть инструмент автокоррекции, если на фото есть линии, которые должны стать точно горизонтальными или вертикальными. Transform:
    https://youtu.be/gINqpJzQvk0?t=112
    Ответ написан
    Комментировать
  • Как можно добиться разнообразия рандомности в PHP?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Рандомность нельзя разнообразить, т.к. в ней каждое следующее выпадающее число
    никак не зависит от того, что выпадало ранее.

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

    Можно сымитировать такое поведение. Проще всего жёстко запретить ближе, чем, допустим, 40 от предыдущего.
    Значит, из отрезка значений выпадает отрезок длиной 40 + 1 + 40 = 81
    Первый вызов вернёт честно-случайное mt_rand(322, 595)
    А следующий только mt_rand(322, 514)
    И надо будет его скорректировать, в зависимости от предыдущего. Грубо, так:
    $a = 322;
    $b = 595;
    $m = 40;
    
    // первый раунд
    $rnd = mt_rand($a, $b);
    $prev = $rnd;
    // ... что-то происходит
    
    // второй и последующие раунды
    $rnd = mt_rand($a, $b - 2 * $m - 1);
    if ($rnd > $prev - $m) $rnd += 2 * $m + 1;
    if ($rnd > $b) $rnd -= ($b - $a);
    $prev = $rnd;
    // ...
    Ответ написан
    5 комментариев
  • Что такое обратный вызов в программировании?

    Обратный вызов (англ. callback) — это ещё одна функция, которую вызовут «потом».

    Бытовой аналог – когда отправляешь в письме на радиостанцию пустой конверт со своим же адресом и марками, чтобы в нём прислали ответ.

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

    Например, нужно выполнить HTTP запрос к далёкому серверу и получить от него ответ.

    Тогда в функцию, которая займётся общением с далёким сервером, передают не только параметры запроса, но и callback-функцию, которая будет вызвана после получения ответа, с данными из ответа.
    Ответ написан
    1 комментарий
  • Хватит ли Macbook pro 13 8гб озу для Frontend?

    Оперативки всегда чем больше, тем лучше.
    Выбор в этом вопросе неочевиден: вы не указалаи, что на чашах весов.
    Со стороны цены k = 100 / 120 = 0.83
    Со стороны использования – непонятно, чего вы лишитесь в варианте А с 8 Гб.

    Потребуется ли работать в Photoshop с тяжёлыми макетами в высоком разрешении, одновременно открыв Figma, VSC, три разных браузера и два мессенжера.
    Какую версию OS X поставите и как она себя ведёт на 8Гб по сравнению с 16.

    Рассмотрите ещё вариант приобретения с 8 и апгрейда на месте до 16. Не знаю, в каком конфиге приходят с 8Гб: остаются свободные слоты или все заняты. Скорее всего это будет дороже, т.к. 8 «выкидываются» и заменяются на другие модули.

    И ещё вполне вариант взять б/у не самый новый, зато самый набитый конфиг бука.
    Ответ написан
  • Можно ли запустить npm локально через Docker?

    Предположу, что проект и его package.json находятся на хосте в текущей папке.
    Тогда команда:
    docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app node npm install


    Подробнее:
    docker run                  \
      -it                       \  // интерактивно и с терминалом
      --rm                      \  // удалить контейнер после выхода
      -v "$PWD":/usr/src/app    \  // текущую папку на хосте смонтировать в контейнер
      -w /usr/src/app           \  // в конт. сделать текущей папкой смонтированную
      node                      \  // образ с nodejs
      npm install                  // команда
    Ответ написан
    Комментировать
  • Как отследить изменение значения в переменной?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если есть возможность изменить код создания этой переменной..
    Например, вместо
    var a = 'QnA.habr.com';
    написать
    Object.defineProperty(this, 'a', {
        set: function(v) {console.log('Изменяют!'); this.value = v;},
        value: 'QnA.habr.com'
    });
    то теперь любое изменение значения переменной вызовет панику в консоли:
    a = 'StackOver...';
    // Изменяют!


    Upd. выяснилось, вопрос был совсем про другое )
    Ответ написан
  • В какой программе можно исказить голос?

    Эффект называется pitch shifting (сдвиг тона) и formant shifting (сдвиг формант).

    Многие плагины его реализуют - соотв. нужен плагин и аудиоредактор, работающий с этим плагином.
    Ответ написан
    Комментировать
  • Использование volume в docker-compose?

    Последняя директива нужна для объявления собственного тома (volume), который будет создан при первом запуске сервисов. Под каждым определением можно ещё добавлять опции этого volume. Например, заявить, что он внешний и должен был быть уже создан заранее вручную:
    volumes:
      db-data:
        external: true

    - db-data в данном примере этот каталог расположенный в одной директории с docker-compose.yml?
    Нет. Это именованный volume. Его фактическая папка спрятана где-то глубоко, можно посмотреть командой docker volume inspect db-data и изначально он пустой.

    В чем отличие от такой записи(является ли она корректная?):
    - ./db-data:/var/lib/mysql/data
    Такая запись первым параметром указывает не именованный volume, а подпапку в папке с docker-compose.yml Т.е. mysql получит папку со всем её содержимым по адресу, указанному вторым параметром.

    Лучше использовать полноценные volume, чем просто монтировать локальные папки.
    Почему (на англ)
    Volumes are the preferred mechanism for persisting data generated by and used by Docker containers. While bind mounts are dependent on the directory structure of the host machine, volumes are completely managed by Docker. Volumes have several advantages over bind mounts:
    • Volumes are easier to back up or migrate than bind mounts.
    • You can manage volumes using Docker CLI commands or the Docker API.
    • Volumes work on both Linux and Windows containers.
    • Volumes can be more safely shared among multiple containers.
    • Volume drivers let you store volumes on remote hosts or cloud providers, to encrypt the contents of volumes, or to add other functionality.
    • New volumes can have their content pre-populated by a container.

    Ответ написан
    3 комментария
  • Как подгружать часть аудиофайла?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    HLS (HTTP Live Streaming) умеет такое. В запросе указывается время "от" и "до" и сервер возвращает нужный чанк.

    Есть модуль в nginx. Не знаю, работает ли это с mp3 или придётся перекодировать файл в m4a.
    Ответ написан
    Комментировать
  • Как считать кол-во повторяющихся эл-ов в массиве?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    let arr = [1,3,3,4,5,5,5];
    function count(arr){
      let cnt = 1; // один счётчик на все значения?
      let map = new Map();
      for(let i = 0; i< arr.length; i++){
        for(let j = 0; j< arr.length; j++){ // плохо, что на каждый элемент весь массив перебираете
          // получается, считаются все пары одинаковых на каждом проходе.
          if(arr[i] == arr[j]){ // здесь каждый раз найдётся равенство самому себе
              map.set(arr[i],cnt++); // а общий счётчик всё больше и больше
          }
        }
      } return map;
    }
    console.log(count(arr));


    Для решения задачи подсчёта не нужно вложенных циклов.
    Пройти по каждому элементу достаточно всего один раз.
    И внести в "словарь": 1, если ещё не было такого, или увеличить на 1, если уже было.

    исправленный ваш код
    let arr = [1,3,3,4,5,5,5];
    function count(arr){
      const map = new Map();
      const len = arr.length;
      for (let i = 0; i < len; i++) {
        const value = arr[i];
        if (!map.get(value)) map.set(value, 0); // создать счетчик
        map.set(value, map.get(value) + 1); // увеличить на 1
      }
      return map;
    }
    console.log(count(arr));
    /*
    Map(4)
      ​size: 4
      ​<entries>
    ​​    0: 1 → 1
    ​​    1: 3 → 2
    ​​    2: 4 → 1
    ​​    3: 5 → 3
    */
    Ответ написан
    Комментировать
  • Что за единица?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Сокращенный тег <?= не просто выполняет код внутри него, но и выводит результат.
    То же, что <?php echo

    Минимальная редакция – убрать знак равенства, заменить <?= require_once... на <? require_once... Но такой короткий тег <? не всегда поддерживается и не рекомендуется.

    Лучше всё в один PHP-тег:
    <?php
    
    require_once APP . '/views/App/inc/header.php';
    echo $content;
    require_once APP . '/views/App/inc/footer.php';
    
    ?>
    Ответ написан
    4 комментария
  • Как проверить несколько input`ov с одинаковым классом на пустоту?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    function check() {
    	let filled = true;
    	$(".input_1").each(function() {
        if ($(this).val() == '') filled = false;
      });
      $('div').text(filled ? 'Все заполнены' : 'что-то пусто');
    }


    Ответ написан