Задать вопрос
  • Методы оплаты в телеграм?

    Для платежей в Телеграм поддерживается несколько платёжных систем, в т.ч. Сбербанк и Яндекс.Деньги.
    У пользователей iOS из-за правил Apple покупки виртуальных товаров и цифрового контента недоступны.
    См. Bot Payments API
    Ответ написан
    Комментировать
  • Какой объектив выбрать на телефон для блога?

    Лицо выглядит привлекательнее, если снимать с бОльшего расстояния длиннофокусным (теле-) объективом.

    Как вы собираетесь снимать звук? Вешать петличный микрофон или писать прямо на мик айфона? Во втором случае конфликт: для звука нужно держать телефон поближе, для картинки подальше.
    Ответ написан
    3 комментария
  • Как в linux одной командой объединить .webm с .mp4?

    ffmpeg поможет. Что-то типа:
    ffmpeg  -i audio.mp3  -i video.webm  -c:v libx264  -c:a aac  result.mp4


    -i audio.mp3 указывает один из входов, файл со звуком;
    -i video.webm ещё один вход, файл с видео;
    ffmpeg сам разберётся, откуда брать звук, а откуда видео дорожку, если каждой по одной и не приходится выбирать.
    -c:v libx264 указывает видео кодек, которым жать видео дорожку;
    -c:a aac аудио кодек, которым жать аудио.
    result.mp4 – куда сохранить результат.
    Ответ написан
    Комментировать
  • Как набрать первоначальную массу пользователей?

    Типичная проблема «курицы и яйца». Отдельные мысли:
    • пока в проекте мало участников, к нему меньше внимания копирастов. Пример: музыка ВКонтакте.
    • фестивали, концерты: «регистрируйтесь в ... чтобы связаться со звёздами фестиваля и обменяться фоточками»
    • уникальная фича, сильно отличающая ото «всех», результатом которой можно делиться и снаружи. Фильтры фото, изменение видео (ускорение, синхронизация под музыку).
    Ответ написан
    Комментировать
  • Почему нейросеть не обучается (метод обратного распространения ошибки)?

    Ошибки:
    1. попытка обучить сеть на всего одном сэмпле;
    2. возможно, одного слоя недостаточно.

    Попробуйте для начала обучить сеть функции одной переменной, например y = A * x^2 + B Подготовьте для её обучения датасет из ста тысяч точек (x, y)

    upd. тут пишут, что у них сеть сошлась только на конфигурации 2-4-1 — с двумя скрытыми слоями с 2 и с 4 нейронами.

    upd. 2 попробовал реализовать умножение двуслойной сетью. Можно поиграть онлайн.
    Keras, numpy.
    Код
    # import libraries
    from keras.models import Sequential
    from keras.layers import Dense
    import numpy as np
    
    # определяем модель
    model = Sequential()
    model.add(Dense(units=2, activation='relu', input_dim=2))
    model.add(Dense(units=4, activation='relu'))
    model.add(Dense(units=1, activation='relu'))
    
    model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
    
    # создание набора данных
    def create_data(n):
      values = np.random.random_sample((n,2,))
      labels = np.prod(a=values, axis=1)
      return values, labels
      
    # тренировочные данные и тренировка модели
    values, labels = create_data(1000)
    model.fit(values, labels, epochs=10, batch_size=10)
    
    # тестовые данные и как посчитает их модель
    test_values, test_labels = create_data(5000)
    results = model.predict(test_values, batch_size=2)
    
    # проверим, насколько ошиблись
    sq_error = []
    for i in range(0, len(test_values)):
      sq_error.append( np.square(results[i][0] - test_labels[i]))
    
    print('Total rmse error: ', np.sqrt(np.sum(np.array(sq_error))))  
    # Total rmse error:  5.101393144138632
    Ответ написан
  • Как разобрать код (underscore.js)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    См. таблицу Приоритета операторов JS. От более высокого к менее:
    1. == и === (одинаково)
    2. &&
    3. ||

    расставить скобки
    var root = 
      ( typeof self == 'object' && self.self === self && self )  ||
      ( typeof global == 'object' && global.global === global && global )  ||
      ( this );

    и ещё больше скобок
    var root = 
      ( (typeof self == 'object') && (self.self === self) && (self) )  ||
      ( (typeof global == 'object') && (global.global === global) && (global) )  ||
      ( this );


    Пытаются понять контекст выполнения.
    • self в Worker'ах;
    • global определена в nodejs;
    • this в прочих.
    Ответ написан
    Комментировать
  • Как решить задачу расстановки арифметических знаков между числами для получения другого числа?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Полным перебором можно считать каждый знак битом: 0 это плюс, 1 минус. Получается, надо перебрать все числа от 0 до 2^(n-1) и их двоичная запись кодирует знаки.

    Для оптимизации можно сначала проверить некоотрые крайние условия:
    • например, «все плюсы» должны быть >= S. Чтобы сразу отсечь проверку вариантов получения 1E9 из всего 1E6 единиц. Эта же проверка имеет смысл в процессе перебора, для оценки, дотянутся ли оставшиеся цифры до оставшейся до S суммы
    • Проверить четность - из четного числа нечетных не получить нечетное.
    • Подумать, что делать с одинаковыми числами, как-то отсечь их зеркальные комбинации.
    • Ещё подумать
    Ответ написан
    3 комментария
  • MacOS найти файлы по маске в имени?

    Можно в Terminal запусить команду
    find -E /Users/Yuriy/Documents/ -type f   -regex ".*/[0-9]{8}.jpg"

    • -E указывает расширенный синтакс регулярных выражений
    • /Users/Yuriy/Documents/ – где искать. Можно указать / для корневой папки, включая все диски, точку . для текущей папки, ~ для домашней папки юзера, например, /Users/Yuriy/ если вы под юзером Yuriy залогинены на маке.
    • -type f - искать только среди файлов. Например, папки с подходящим названием игнорировать.


    Занимательное чтение: команда man find
    Ответ написан
    3 комментария
  • Плоха ли функция eval?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В вашей задаче eval() не нужен, вроде бы.

    Вызов событий счётчиков отличается друг от друга только названием события и именем счетчика. Как уже верно заметили в комментарии, данные в backend отправляете ajax'ом, и в обработчике вызова получаете ответ сервера.

    По этому ответу бэка можно судить, прошли данные валидацию или нет. И в зависимости от этого, дергать события счетчиков:
    // <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    function submitData( formData, goalName, yandex, google) {
      axios.post( '/submitform.php', formData)
      .then( function(response) {
        if (response.ok) {
          yandex.reachGoal( goalName );
          google(goalName, '...' );
        } else {
          // данные не прокатили
        }
      })
    }
    Ответ написан
    Комментировать
  • Слишком быстрая программа,всё так?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Добро пожаловать в асинхронность.
    request() выполняется асинхронно. Вот вы его вызвали, он внутри себя запомнил, по какой ссылке нужно (будет) обратиться и куда вернуть результат. И внешний вызов request() всё, отыграл.

    Веб-запрос ещё не пошёл выполняться, а уже работает следующая итерация вашего цикла for().

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

    Хинт не по теме вопроса, а
    про число записей на стене ВК

    ВКонтакте есть хороший API. В том числе, есть метод wall.get() для получения записей со стены и общего числа записей.

    Чтобы выполнить запрос к АПИ ВК, понадобится сначала получить токен. Для метода wall.get() годится сервисный токен или токен пользователя.
    Ответ написан
    2 комментария
  • Как решить данную задачу?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В нынешней версии
    вашего кода
    // Функция получения случайного числа
    const getRandomNumber = (() => {
      return Math.floor(Math.random() * 1000);
    });
    
    // Функция получения случайного имени
    const getRandomName = (() => {
    	const arr = ['Alex', 'Bob', 'Mark', 'Peter'];
      let randomNumber = Math.floor(Math.random() * arr.length);
      return arr[randomNumber];
    });
    
    // Начальный объект
    const obj = {
      name: getRandomName(),
      id: getRandomNumber()
    };
    
    // 1.2 Добавление нового поля в объект
    obj.number = getRandomNumber();
    
    const randomArray = () => Array(6).fill().map(() => obj);
    console.log(randomArray());
    не исключён повтор значения: запросто может выпасть одно и то же «случайное» число из диапазона 0..999 Чтобы значения не повторялись, можно создать массив с возможными значениями, и вынимать из него Array.splice(i, 1) – так гарантируется отсутствие повторов.

    Объект сейчас создаётся лишь один раз, и один и тот же вкладывается в массив. Может, проще сделать Array.push() в цикле?
    Ответ написан
  • Как разбить отрезок на неравные доли?

    Если проверять простоту числа будете последовательным перебором до sqrt(n), то «сложность» можно считать пропорциональной квадратному корню из N. И нужно найти участки с одинаковой площадью под повёрнутой на 90° параболой над каждым из участков.
    5d03a1fbcd84e308697188.png
    Интегралы, производные – вспоминайте )

    Поскольку задача дискретная, только целые числа рассматриваются, решение всегда будет не точным – как-то будут отличаться «нагрузки» соседних отрезков. И возможны крайние случаи без решения. Например, когда отрезок от 5 до 6 нужно разбить на 1000 частей )

    При проверке числа перебирать достаточно только нечетные (в начале проверив чётность N) и не превышать квадратный корень N.

    Интеграл от квадратного корня это 2/3 * sqrt(x^3)
    Считаете площадь под графиком от Min до Max.
    Бьете эту площадь на N равных кусков. И отсчитываете соответствующие такому делению значения x.
    Ответ написан
    Комментировать
  • Как случайным образом добавлять элементы?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    1. :nth-child() Selector
    2. .after()

    Выбрать 30-й, вставить после него. Аналогично с остальными.

    Чтобы порядок был случайным, положить имеющиеся в массив const arr = ['banner-0', 'banner-1', 'banner-2']
    При вставке из массива вынимать arr.splice() из случайного индекса Math.floor( Math.random( arr.length)))
    Ответ написан
  • Как решить следующую задачу?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Когда строки длинные, и хочется писать как в вопросе, каждую строку отдельно, можно сделать их элементами массива и соединить через join():
    alert([
    "Красный цвет задаётся HEX-кодом "
    ,"#"
    ,"FF"
    ,"00"
    ,"00"
    ].join(''));
    Ответ написан
  • Как удалить обрабочик события?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно сделать функцию-создающую-функцию с параметром:
    function cbMaker(param) {
      const cb = function(event) {
        console.log(param, event);
        document.removeEventListener('keydown', cb);
      }
      return cb;
    }
    
    document.addEventListener('keydown', cbMaker(1));
    Ответ написан
    7 комментариев
  • Правильно ли я понимаю callback функции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не совсем удачное название аргумента callback-функции в вызове (последняя строчка).

    Вместоf(true, 500, callback => console.log(callback));
    может, лучше
    const myCallback = arg => console.log(arg);
    f(true, 500, myCallback);
    Ответ написан
    Комментировать
  • Можно ли использовать поисковые методы внутри друг друга?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    1. Не «внутри» друг друга. Метод вызывается у объекта.

    document.getElementById() – это метод getElementById() у объекта document. Вызов возвращает Element. Или null, если нет элемента с таким ID.

    Второй вызов – пытаетесь вызвать метод getElementById() уже у объекта Element. А у него такого метода нет.

    2. Не «поисковые» методы. document.getElementById() не ищет, а просто берёт, если есть такой.
    Ответ написан
    Комментировать
  • Почему не удаляется обработчик события клика?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Метод bind() создаёт каждый раз новую копию функции.

    Для отмены слушателя нужно передать именно действующий обработчик, а не похожий.
    Запишите его в переменную и далее действуйте с переменной:
    const listener = this.onclickWindowHandler.bind(this);
    window.addEventListener('click', listener);
    // ...
    window.removeEventListener('click', listener);
    Ответ написан
    Комментировать