Задать вопрос
  • Как лечить спину айтишникам?

    Тайский массаж не делайте – могут сделать сильно хуже.
    Сначала диагностика: консультация невролога -> МРТ -> консультация по результату.
    Если станут предлагать операцию, не спешите соглашаться.
    В Москве со спиной по личному опыту порекомендую клинику Дикуля и Открытую клинику. В Берлине, если денег не только на Тай, могу посоветовать отличного врача.
    Скорее всего поможет комплекс упражнений лечебной физкультуры (ЛФК). Упражнения не выглядят круто, неинтересны, но эффективны. Их надо научиться делать правильно не по картинкам, а лично с тренером.
    И надо укреплять мышечный корсет, который теряется при долгом сидячем образе жизни.
    Упражнения не должны создавать осевую нагрузку на позвоночник (сдавливать его). Это относится даже к простым упражнениям с гантелями. Не поднимайте тяжестей. Сбросьте вес.
    Не падайте на копчик. Не падайте на сноуборде (для Таиланда, конечно, актуально : ) Не скачите на лошадях.
    Настоящие эргономичные кресла (а не дешевая пародия) с поддержкой поясницы могут улучшить ситуацию или, как минимум, замедлить её ухудшение. Посмотрите, например, продукцию Herman Miller. Кресла супер-надёжные и долговечные, поэтому вторичный рынок их тоже предлагает.
    Делайте перерывы в сидячей работе. Следите за осанкой.
    Ответ написан
    4 комментария
  • Как реализовать Анимацию выделения сектора окружности (заполнение круга цветом от 0 до определённого значения)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно делать на svg. Заливка это по сути окружность половинного радиуса супер-жирной линией, толщиной в пол-радиуса. Пример заполнения не такой толстой линией.
    Ответ написан
    Комментировать
  • Как называется такая задача?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Не знаю, как называется такая задача.

    Решается сортировкой времени событий и их перебором: в каждый такой момент надо принять решение "остаться / переключиться".

    Есть приоритет текущей передачи (если она ещё не заканчивается). И есть приоритеты других передач в этот момент (особенно интересуют начинающиеся).
    Ответ написан
    Комментировать
  • Как по ссылке ВКонтакте определить, что это за объект?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Соберите ещё вариантов ссылок, и появится догадка! ; )
    Из документации к messages.send():
    photo — фотография;
    video — видеозапись;
    audio — аудиозапись;
    doc — документ;
    wall — запись на стене;
    market — товар.


    Upd. можно через регулярку:
    function parseVkLink(link) {
      var re = new RegExp('(photo|video|audio|doc|wall|market)(\\d+)_(\\d+)');
      var matches = link.match(re);
      if(matches) {
        return {
          type: matches[1],
          ownerId: matches[2],
          objectId: matches[3],
        };
      } else {
        return false;
      }
    }
    
    var test = 'https://vk.com/durov?z=photo1_456315566%2Falbum1_00%2Frev';
    JSON.stringify( parseVkLink(test) ) // {"type":"photo","ownerId":"1","objectId":"456315566"}
    Ответ написан
    7 комментариев
  • Как получить доступ к переменным из callback функции JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Функция func в вашем первом варианте «не знает» что у переменной array есть какое-то там значение. Ведь её, функцию эту, объявили раньше и выше )

    Во втором вашем варианте array известен на момент, когда заряжают таймер.

    Можно так:
    function myFunc(arr,  func) {
      arr.forEach( ( ) =>  {
        setTimeout(
          func.bind(null, arr),  // привязываем к функции аргумент
          1000
        )
      })
    }
    
    myFunc([1, 2, 3, 4], (a) => {
        console.log("print array after each 1 second", a);
    });

    Тут есть договорённость, что в функцию первым параметром придёт нужное значение.
    Ответ написан
    1 комментарий
  • Как сделать автовызов функции с передаваемым event?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    jQuery.on() регистрирует слушателя события клика. В функцию myFunc при клике передастся аргумент – событие клика.

    До клика событие event не существует.

    Можете создать свой объект события клика и передать его в функцию:
    var myEvent = {
      target: document.getElementById('button_id'),
      // ... ещё куча стандартных свойств
    };
    
    myFunc(myEvent);
    Ответ написан
    Комментировать
  • Анонимные функции и removeEventListener?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Всё просто: не использовать анонимные функции.

    var f1 = function() {
      text('it\'s finnaly working!');
    };
    
    el.addEventListener('click',  f1);
    // ... 
    el.removeEventListener('click',  f1);
    Ответ написан
    1 комментарий
  • Как добавлять символы в строке между буквами?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Понадобятся два метода:
    split()
    и
    join()

    Ещё можно прыгнуть через голову и сразить предподавателя познаниями в регулярных выражениях:
    "Hello!".replace(/(.(?!$))/g,'$1-')
    Тут любой символ (обозначается точкой), кроме последнего (за которым сразу конец строки $ – это проверяется "заглядыванием вперёд" (?!$)) – заменяется на себя $1 и дефис.
    Ответ написан
    7 комментариев
  • Как анимировать крутящий момент на JS?

    Имхо только 3D рендер анимации. Могут сделать неотличимо от исходного фото, а не пластмассу как на втором примере. Недешево - моделировать цепи, их физику.
    Ответ написан
    3 комментария
  • Влияет ли SSL сертификат от Let’s Encrypt на ранжирование в Google?

    Кто-то в твиттере задал такой же вопрос сотруднику Google, тот ответил, что сертификаты от Let's Encrypt в полном порядке с точки зрения SEO. Оригинальный твит.
    Ответ написан
    3 комментария
  • Как генерировать 5 случайных паролей на php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Ещё одна функция пусть принимает параметром требуемое число паролей и дёргает вашу исходную функцию столько раз:
    function generate_n_passwords($n) {
    	$result = array();
    	while($n--) {
    		array_push( $result, generate_password());
    	}
    	return $result;
    }
    
    $myFivePasswords = generate_n_passwords(5);
    Ответ написан
    Комментировать
  • Как получить смс код Telegram?

    Попробуйте разные подключения к интернет.

    1. через некоторых мобильных провайдеров Telegram работает напрямую.
    2. ваш wifi роутер, возможно, позволяет поднять Tor прокси или ещё как-то пустить весь трафик через VPN;
    3. установите Telegram на компьютере и опять же, поднимите VPN.
    Ответ написан
    Комментировать
  • Алгоритм расчёта оставшегося времени выполнения операции?

    Прогноз можно сделать инертным.

    По событию обновления прогресса (очередной чанк загрузился) скачкообразно меняется значение ожидаемого конца finish_forecast.

    Переменная finish_forecast_display это прогнозируемый момент окончания для показа. Исходя из него и текущего времени плавно обновляем индикатор прогресса.

    Чтобы не было дерганий, finish_forecast_display обновляем не мгновенно, а раз в фикс. интервал времени (раз в 200 ms) двигаем его в сторону текущего значения finish_forecast на дельту, пропорциональную расстоянию - чем ближе, тем медленнее. Тут важна регулярность этих интервалов обновления дисплея.

    Так скорость прогресс-бара будет плавно ускоряться или замедляться, но скачков не будет.

    Похожий эффект в 2D использовал в эмуляции полёта насекомого. Там случайная точка задаёт цель, к которой стремится муха. В примере, правда, не сама муха, а перед ней ещё несколько звеньев невидимой цепочки преследования. Но принцип тот же:

    C ---> N . . . . . . . . . . . T
    T - только что заданный новый момент окончания процесса total * time_passed / current_progress
    C - показываем прогресс бар исходя из этого ожидаемого момента конца всего процесса
    N - в следующем "кадре" С примет значение N.

    N = C + (T - C) / 100
    Ответ написан
    Комментировать
  • Насколько протокол MTProto устойчив к атаке типа Man-in-the-middle?

    FAQ - Authentication - Q: How are Secret Chats authenticated?

    Keys for end-to-end encrypted secret chats are generated by a new instance of DH key exchange, so they are known only to the parties involved and not to the server. To establish the identities of these parties and to ensure that no MitM is in place, it is recommended to compare identicons, generated from hashes of the DH secret chat keys (key visualizations).


    Т.е. чтобы убедиться в отсутствии перехватывающего майора посередине рекомендуют визуально сравнивать графические отпечатки сгенерированых ключей.
    Ответ написан
    Комментировать
  • Как узнать в каком файле определена js-функция?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В консоли хрома сделать поиск по имени функции или регулярке типа myFunc\s*=\s*function

    Это надо открыть Dev Tools, вкладка Sources, нажать три-точки справа сверху - Search All Files. Или нажать Cmd+Opt+F (mac) / Ctrl+Shift+F (win).

    скриншот
    5ad0f594540b9922600192.png
    Ответ написан
    Комментировать
  • Как покрыть полигон прямыми?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Два параметра можно варьировать: угол решетки и её фазу, смещение линий параллельно самим себе в рамках одного шага решётки.

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

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

    Алгоритм примерно такой. Пара (угол, фаза) задаёт множество прямых. Надо пройтись по контуру фигуры, считая пересечения или близость очередной точки контура к одной из прямых. Если контур задан прямыми отрезками ещё проще: для каждого отрезка посчитать число пересечений, исходя только из расстояния краевых точек от одной master-прямой. Например, расстояния 5.2 и 7.3 при шаге решетки 3. 0 не пересекает, 3 пересекает, 6 пересекает, 9 уже нет. Итого 2 пересечения.

    Прямая задаётся уравнением Ax + By + C = 0 Или с угловым коэффициентом y = x(-A/B) - (C/B) Параллельные прямые отличаются значением C.

    Расстояние между параллельными прямыми = |C1 - C2| / sqrt( A2 + B2)

    Расстояние от точки (X,Y) до прямой |AX + BY + C| / sqrt(A2 + B2)
    Ответ написан
    Комментировать
  • Реально ли запустить tails на macbook 2017?

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

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Часто шифруют текст JS кода, чтобы при выполнении расшифровать его и тут же выполнить через eval(), куда текстом передаётся код для выполнения.

    Первым делом попробуйте найти в коде этот eval, и зная, что в него передадут текст расшифрованного кода, попробуйте его получить. Например, замените eval(code) на console.log(code)

    Полученный текст кода прогоните через автоформаттер, чтобы он стал более читаемым. В вашем случае получится что-то типа:
    скрин редактора
    5ac71a3a4fadf373076807.png
    Ответ написан
    Комментировать