• Как в JSON проверить, что поле существует?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    var obj = res.items[0].snippet.thumbnails;
    var max_width = 0, max_height = 0, name = 'unknown';
    for(let k in obj) if (max_width < obj[k].width) {
      max_width = obj[k].width;
      max_height = obj[k].height;
      name = k;
    }
    console.log('Name: ',name,' Width: ',max_width,' Height: ',max_height);
    Ответ написан
    Комментировать
  • Как настроить подсеть?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можете на Netis сделать проброс портов, если у вас специфичная служба на телефоне.

    К примеру, вам нужен только 80 порт (веб морда какого-то приложения в телефоне). Телефону выдаете статичный ip, к примеру 192.168.0.200, и настраиваете проброс порта с к примеру 8080 на 192.168.0.200:80. Далее в основной сети у Netis ip к примеру 192.168.1.50, тогда стучитесь на 192.168.1.50:8080 - и попадаете на 192.168.0.200:80. Как-то так.
    Ответ написан
    Комментировать
  • Можно ли создать виртуальный номер аналогичный тому, который был утерян?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Номер обычно привязан к паспорту. Так что просто восстановите его, придя в офис к оператору связи и показав паспорт.

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

    Также вы можете написать в тех. поддержку соц. сети и объяснить ситуацию. Они могут пойти навстречу. Вопрос будет лишь в том, как вы сможете подтвердить, что вы - это вы, настоящий владелец данного аккаунта в соц. сети.
    Ответ написан
    5 комментариев
  • Можно ли в письмо вставить пиксель Метрики и собрать ClientID?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нет.
    А если сможете, то вы нашли уязвимость, либо адресат пользуется чем-то очень устаревшим.
    Ответ написан
    Комментировать
  • Как сделать переадресацию звонка на другой номер, если занято?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это делается в тесном сотрудничестве с вашим оператором сотовой связи.
    Например, вот инструкция для МТС.
    Другие операторы гуглятся по словам: билафон переадресация вызова
    Ответ написан
    Комментировать
  • Что использовать против fingerprints?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Проблема в том, что вы можете быть одним из 1000, а может и более редким пользователем, у которого всё Unknown. А это вполне такой себе точный fingerprint. Далее связать А и Б по смыслу, почерку и прочим параметрам не составит труда, если кому такое понадобится вообще.
    Ответ написан
  • Перезарядка умений setInterval 15 сек?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    const COOLDOWN_TIME = 15000;
    
    function startCooldown(skill) {
    	skill.Disable();
    	setTimeout(()={
    		skill.Enable();
    	}, COOLDOWN_TIME);
    }
    Ответ написан
    Комментировать
  • Как этот код записать без использования jQuery?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    Код
    (()=>{
    	let element = document.querySelector('.window');
    	if (!element) return;
    	let right = parseInt(element.style.right) || 0;
    	let right_target = ((x*100)+(x*8-10)-100);
    	let tm_start = performance.now();
    	let id = setInterval(()=>{
    		let diff = Math.min(performance.now() - now, 1000);
    		let right_current = Math.round(right + (right_target - right) * diff * 0.001);
    		element.style.right = right_current + 'px';
    		if (diff >= 1000) clearInterval(id);
    	},10);
    })();
    Ответ написан
    Комментировать
  • Как перезапустить игру на питон?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Дайте игроку самому решать, хочет ли он играть, и как именно. Для этого в конце показывайте что-то типа "Game Over" и переводите игрока на главное меню игры. У вас же есть главное меню в вашей игре? А там уже должен быть пункт "Начать заново".
    Ответ написан
  • Возможен ли такой подход создания браузерной игры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В теории есть разные варианты.

    1. Можно использовать кеш браузера. Особенно для статичных картинок и файлов, которые вы никогда не будете менять, и это точно. Об этом можно сообщить браузеру, и он поверит, и не будет загружать их повторно.
    2. Можно использовать хранилище браузера (localStorage и IndexedDB). Правда, понадобится много заумного программирования.
    3. Можно попросить пользователя установить расширение для браузера, которое, по сути, будет равносильно установке самой игры. То есть игра без него не запустится. Там много возможностей.
    4. Собственно, почему расширение? Есть полноценные скачиваемые из стора веб-приложения, в том числе и игры. Хотя по сути то же самое.
    5. Можно создать не веб приложение, а полноценное приложение для какой-то ОС (Windows, Android и т.п.), но со встроенным WebView, т.е. как бы со встроенным браузером.
    6. Можно отказаться от браузерной игры. Серьезно, на сегодня это 3% мирового рынка игр, и доля продолжает падать. Оно вам надо там ловить что-то? Если ради интереса, то ради бога, а если ради прибыли, то лучше отказаться сейчас, чем потом.
    Ответ написан
    Комментировать
  • SetInterval во время выполнения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Когда выполняется код, на странице ничего не рендерится.

    Как только код преврался или закончил выполнение, то перед передачей управления другому асинхронному коду может произойти (а может и не произойти) куча событий, в том числе обновляется страница в соответствии со сделанными изменениями в ней.

    Так что во время первой итерации setInterval (или перед созданием setInterval) нужно затемнить блок. Не важно, в начале и в конце функции это делать, отрисовка начнется только после выхода из функции. А в последней итерации setInterval, соответственно, нужно убрать затемнение.
    Ответ написан
    Комментировать
  • Как подсчитать максимальное количество одинаковых значений подряд в столбце?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1. Выберите пункт меню Инструменты -> Редактор скриптов.
    2. В появившийся редактор скопируйте следующий код:
      Код
      function MAX_THE_SAME(input, search) {
        if (!input) return "Нет данных";
        if (!(input instanceof Array)) return "Выбрана одна ячейка";
        var current;
        var count = 0;
        var max = 0;
        for(var x=0; x<input[0].length; x++) {
          current = null;
          for(var y=0; y<input.length; y++) {
            var val = input[y][x];
            if (!val && val !== 0 || search && val!=search) {
              current = null;
              continue;
            }
            val = val.toString();
            if (current !== val) {
              current = val;
              count = 0;
            }
            count++;
            if (max < count) max = count;
          }
        }
        return max;
      }

    3. Сохраните.
    4. В любом месте страницы вставьте формулу =MAX_THE_SAME(A:A)
      или =MAX_THE_SAME(A:A;"dog")
    Ответ написан
    2 комментария
  • Можно ли использовать тег br для переноса строк, и не критично ли это?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно.
    И даже нужно.

    Небольшой по смыслу разрыв - br, а большой - p.
    Ответ написан
    2 комментария
  • Какие русскоязычные аналоги Хабр существуют?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вас никто не заставляет читать все хабы. Подпишитесь на интересные, и читайте только их.

    Проблема отделения интересного от не интересного до конца не решена не только на Хабре, а вообще везде. Да и каждый решает её по-своему. Согласен, что в нашу цифровую эпоху избытка информации это важно. Однако исключать весь ресурс из поля зрения только лишь потому, что помимо интересных статей на нём есть не интересные - это как-то странно.

    Могу сказать, как поступил я на примере Тостера. Я выделил разные параметры вопросов, и теперь могу их фильтровать программно в автоматическом режиме: об интересных вопросах мне приходят уведомления, скучные я вообще не вижу, а остальные я могу смотреть или не смотреть в свободное время, в зависимости от настроения. Для Хабра, возможно, тоже стоило придумать что-то подобное, но я там не зависаю настолько, чтобы такое решение себя окупило по времени.
    Ответ написан
    5 комментариев
  • Все ли веб разработчики являются инженерами? Кого стоит причислять к таковым?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если человек не получил ВО, но всё равно состоялся, как специалист, то какая разница, как его называть? Главное, что он умеет, чем может быть полезен, сколько денег может принести компании. Именно на это смотрят.
    Ответ написан
    Комментировать
  • Как удалить динамически созданный блок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не разбираясь во всех ваших хитросплетениях, давайте просто отдебажим ваш код:

    1. const modal = new Modal(document.querySelector('.modal'));

      Это то, что выполнится первым. В конструктор передается результат поиска элемента. Если элемент не найден, то querySelector выдаст null. Очевидно. Здесь нет проверок на null, но будем надеяться, что в теле конструктора они точно есть. Ну или хотя бы есть полная уверенность, что элемент с таким классом обязательно есть на странице.
    2. Входим в конструктор:
      this.modalElement = modalElement;
      // .......
      this.modalElement.querySelector(..................);

      И здесь происходит ошибка. Странно, проверки на null нигде нет. И судя по тексту ошибки, вы пытаетесь вызвать метод querySelector переменной modalElement, которая имеет значение null. Следовательно, в самом начале элемента с классом modal не было на странице.
    Ответ написан
    5 комментариев
  • Возможно ли пробиться в геймдев?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Возможно, но вы должны понять, чем вы вообще хотите заниматься, и целенаправленно идти именно в этом направлении. Из вопроса это не понятно. Может быть, художником, или переводчиком, или юристом? Есть ли реальный опыт или только мечта?

    Проще всего войти в геймдев джуном тестером. Но это ни разу не любой бомж с улицы. Еще можно попробовать себя джуном геймдизайнером. В обоих случаях нужен богатый игровой опыт и знание игр вообще. Но я уверен, что вы не знаете, что делают на этих должностях. Тестер - это не тот, кто целый день играет в игры. А геймдизайнер - не тот, кто придумывает клевые идеи и ему за это платят.

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

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

    Можете предтсавить, что геймдев - это бетонная стена. Пробиться головой через неё нельзя. Но можно купить перфоратор, это будет означать соответствующее образование, а в идеале - реальные достижения. Тогда вы сможете сделать отверстие и шагнуть на ту сторону стены. Инструменты возьмите с собой, там дальше будут другие стены.

    Входных точек в геймдев существует много, но бетон - есть бетон. Это не масло и не хлеб. Глотать пыль не очень приятно. Хотите что-то попроще - идите в другую сферу.
    Ответ написан
    Комментировать
  • Как понять, что не нравится Хрому в одинаковых символах?

    dollar
    @dollar Автор вопроса
    Делай добро и бросай его в воду.
    В общем, это невидимый символ с кодом 8207 (Right-to-left mark).
    Ответ написан
    Комментировать
  • Как сделать уничтожение двух объектов по истечению времени на Юнити?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Как исправить проблему

    Исправление проблем в плохо работающей программе (игре) называется отладка. Процесс отладки - это поиск, т.е. последовательность проверок и экспериментов, в ходе которой копится информация, которая в итоге помогает догадаться, где и какая ошибка допущена.

    Основной метод - это метод исключений. Примерно как в игре "Данетки" (или "Ситуации"), только применительно к приложению ("да" - работает, "нет" - не работает). Очевидно, что нужно правильно подбирать "вопросы", тогда и ответ быстро найдётся. Например, можно попробовать выполнить функцию удаления пули саму по себе без условий. Если она выполнится, то она точно работает, и можно исключить её из дальнейшего анализа. Если она не выполнится, то проблема в ней, и следует углубиться в неё, исключая всё остальное (пока что). Таким образом, одним лишь экспериментом (вопросом) проблема делится пополам, а точнее уменьшается вдвое. И так далее. За 10 таких вопросов-проверок вы уменьшите проблему в 1000 раз, а может уже и полностью локализуете её к тому времени.

    Знаю, что ответ слишком общий, но он вам и правда подходит. Как тот ни бесполезно и нравоучительно звучит, но мой совет - учитесь отлаживать.

    На данный момент вы задали 0 вопросов, включая этот. Почему ноль? Вопрос-то вы вроде как задали, но результат не описали. Вы сказали, что вам надо (чтобы враг и пуля удалялись), но не сказали, что на данный момент есть. Враг удаляется, а пуля - нет? Пуля удаляется, а враг - нет? Игра вообще не запускается из-за попытки сделать эту фичу? Пуля проходит насквозь? Пуля отскакивает, как от бетона, и падает на пол? Любая из этих подсказок была бы первым шагом и помогла бы уменьшить проблему в 2 или даже в 10 раз. Но вы эту подсказку не дали, так что проблема может заключаться, в чем угодно. В этом случае вам можно помочь либо телепатией (угадыванием), либо сделав вашу задачу с нуля, не беря в расчет ваши наработки.

    Но даже если будет 1 подсказка, этого будет не достаточно. Как я сказал выше, нужно несколько подсказок. И где искать следующую, зависит от того, где вы нашли предыдущую. Так что вы и только вы можете этим заниматься. Через Тостер это будет в формате "попробуй так - сделал, вышло то-то - тогда проверь это - ок, выдало такое - значит, здесь исправь" и т.д.

    Код в данном случае не очень помогает, и я уже сказал почему. Потому что проблема (которая не описана) может быть, где угодно, даже вне этого кода.

    UPD:
    Non-invocable member 'GameObject' cannot be used like a method.

    Спасибо за добавление описания ошибок в текст вопроса. Теперь гораздо понятнее, что происходит (это аж 4 подсказки), но ответить однозначно всё равно нельзя. Потому что они вроде как очевидны, их описание говорит само за себя, но, тем не менее, вопрос всё ещё актуален. Это говорит о недостатке знаний в C# или в английском языке. Пройдусь кратко:
    1. Trigger вы используете, но нигде не объявили. И компилятор жалуется, что не знает, что это такое. Возможно, вы хотите что-то проверить и вам по смыслу понятно, что это должно быть (какой-то "триггер"), но компилятор не знает английского, для него это лишь идентификатор какой-то сущности - переменной ли, функции ли, и так далее. Кроме того, даже человеческий программист зайдёт здесь в тупик, потому что не ясно, к чему относится ваше Trigger("Ammo"), равно как и Collision("Enemy"). Если у вас в игре много врагов и пуль, то что эта строчка может значить? Коллизию всех со всеми? Или что? Когда (если) вы глубже поймете язык C# и вообще ООП, то узнаете, что есть классы, объекты и их методы. И что методы обычно вызываются не сами по себе, а применительно к какому-то объекту, да хотя бы к текущему (но в текущему такого метода нет). Объяснять "в целом" можно долго, но я не смогу в ответ запихнуть учебник по C#.
    2. Collision - здесь компилятор сообщает, что этот идентификатор ему знаком, но вы его используете не так, как задумано.
    3. GameObject - аналогично предыдущему, это знакомо компилятору, но так нельзя, это не функция.
    4. GameObjcet - а здесь компилятор говорит, как и в первом сообщении, что вы нигде не объявили этот идентификатор. Очевидно, что там просто опечатка. Это как раз тот пример, когда, занимаясь отладкой, вы должны догадаться об этом. Ведь, GameObject это вот прям основное слово в Unity, но компилятор его не знает? Что? Как так? И если исключить невозможное, то остается почти единственный вариант - опечатка. Вот так просто.
    Ответ написан
    2 комментария
  • Дополнение для Хрома, что бы заданные вкладки были ярко выделены?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Типа этого?
    Ответ написан
    Комментировать