Задать вопрос
  • Какой алгоритм решения этой задачи можете посоветовать?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    function repairCase(str, substr) {
    	if (!substr) return ''; //Empty string
    	//let arr = []; //Найденные результаты. Для наглядного дебага
    	let str_upper = str.toUpperCase();
    	let sub_upper = substr.toUpperCase();
    	let len = sub_upper.length;
    	let index = 0; //Стартовая позиция
    	let max_score = -1; //Максимальная оценка на совпадение по регистру.
    	let answer = ''; //То, что вернёт функция.
    	while (true) {
    		let result = str_upper.indexOf(sub_upper, index); //Ищем позицию очередного куска
    		if (result == -1) break;
    		let found = str.substr(result, len); //Найденный кусок
    		let score = 0; //Оценка совпадения
    		for(let i=0;i<substr.length;i++) { //Простой алгоритм:: чем больше совпадений, тем лучше.
    			if (substr[i] == found[i]) score++; //Увеличиваем оценку за каждое совпадение по символу.
    		}
    		if (score > max_score) { //Нашли более подходящий результат
    			max_score = score;
    			answer = found;
    		}
    		//arr.push({ pos: result, found: found, score: score });
    		index = result + 1;
    	}
    	//console.log(arr); //Смотрим, что под капотом
    	return answer;
    }

    Примеры вызова:
    repairCase('Hello World', 'hell'); // 'Hell'
    repairCase('Алан Тьюринг', 'а'); // 'а'
    repairCase('Дональд Кнут', 'Н'); // 'н'
    repairCase('Линус Торвальдс', 'ндc'); // ''


    P.S. У меня к вам встречный вопрос: вы программист? Задача решается за 10 минут.
    Ответ написан
    3 комментария
  • Как извлечь JSON объект из содержимого тэга script?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    \\\"
    Это вообще похоже на двойное кодирование.

    Раскодируйте сначала вручную. Да хотя бы в консоли браузера. Плюс такого подхода в том, что вы видите, что у вас на каждом этапе. Вот у меня получилось ещё два JSON'a (а если приглядеться, то всё сложнее):
    5c8dd0b7cc88c092764002.png
    Далее каждый нужно снова декодировать. Удачи.
    Ответ написан
  • Почему не работает appendchild со стилями?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Например, если где-то определить такой стиль, то он всё испортит:
    #container div {
      width: 10px !important;
    }

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если я вас правильно понял, то примерно так:
    <div>
      <script>
        document.write('<img src="https://loremflickr.com/g/200/200/carnaval">');
      </script>
      <noscript>
        <img src="https://loremflickr.com/g/200/200/cat">
      </noscript>
    </div>
    Ответ написан
  • Каким HTML online редактором удобно пользоваться?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Помню день, когда я в обычном блокноте написал <b>bold</b> - и в браузере свершилось чудо. Тогда я прозрел и понял суть веба.

    С тех пор в HTML ничего особо не изменилось. Суть та же.
    Ответ написан
    Комментировать
  • Как посмотреть сырое тело POST запроса?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Request Payload - в случае аякса, Form Data - в случае формы, Query String Parametrs - это вроде то, что попало в URL, то есть по сути GET-запрос. Ведь никто не мешает миксовать GET и POST параметры в одном запросе.
    P.S.
    Ответ написан
  • Как выбрать направление развития, или "Это только в начале скучно, или дальше также?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вы хотите работу, которая будет являться развлечением? Игрой? Это, конечно, круто, но такого не бывает. Точнее, бывает, но за это вы сами должны платить деньги, а не вам. В работе очень часто нужно переступать через себя, идти на какие-то компромиссы. В работе вы должны достичь какой-то цели, оказать услугу, выпустить продукт, показать результат, и это не обязательно должно быть приятным, по крайней мере не всегда и не везде. Если я чего-то действительно хочу, то я продолжаю есть кактус и продвигаться к цели. А вы что хотите? Веселья? Или чего-то более серьёзного? Определитесь, за вас это решение никто не примет.
    Ответ написан
    1 комментарий
  • Cloudflare и блокировка Роскомнадзором соседа по IP - какие последствия?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Есть три типа блокировки - URL, домен, ip.

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

    Что там за сайты, можете посмотреть, скачав базу целиком (правой кнопкой -> Сохранить).

    Подозреваю, что некоторые провайдеры могут заблокировать доступ ко всему IP, даже если ограничение у РКН распространяется только на отдельный сайт по данному IP.

    Могут. Но это мелкие провайдеры.
    Ответ написан
    2 комментария
  • Какую специализацию выбрать прямо сейчас?

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

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

    P.S. Если жизнь сложится, то в декабре я буду собирать команду. Пока точно не знаю. И зарегистрируйтесь на Хабре, иначе как я вам напишу?
    Ответ написан
    2 комментария
  • Как найти на хабре публикацию?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Автор мог убрать статью в черновики.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    При клике по экрану игры происходит поиск всех элементов, которые могут принимать клики. Если клик попал во что-то, то происходит поиск всех дочерних элементов, которые могут принимать клики. И так далее, пока не клик не попадет к конкретную кнопку. Это общая схема. Как вы это сделаете - дело вкуса. Здесь важно не столько ООП, то есть наследование классов, сколько реализация иерархии элементов самого интерфейса (GUI или HUD), то есть наследование объектов. В самих объектах нужны ссылки на дочерние и родительские элементы, примерно как в DOM браузера.

    Далее нюансы. Например, элемент может иметь одновременно собственный обработчик и дочерние элементы. Можно сделать так, что если есть собственный обработчик, то дочерние - игнорируются. Либо можно сделать так, что если клик не попал по дочерним, то вызывается собственный обработчик. Всё имеет плюсы и минусы. Опять же - как удобно, так и делайте.
    Ответ написан
  • Несёт ли программист отвественность за противозаконное применение своего кода?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вам дали доступ к сайту, у вас была возможность посмотреть, что там "вокруг". Мошенники так редко поступают, как-то это глупо было бы.

    Напишите заказчику, пусть удалит ваш e-mail. И дело с концом. Вы формально перестанете иметь к этому отношение.

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

    А так в нашей стране такой бред, что гарантий никто не даст. За лайки сажают. Ну, сегодня уже не сажают, но завтра новый бред придумают. Короче, даже если на вас будет дело, думаю, у вас все шансы на выигрыш. Но дела не будет, имхо.
    Ответ написан
  • Как сделать перебор input'ов в tr?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    //Получить все вложенные инпуты элемента.
    function GetInputs(el) {
    	let arr = [];
    	if (el && el.tagName && el.childNodes) el.childNodes.forEach(child=>{
    		if (child.tagName == "INPUT") arr.push(child);
    		else arr = arr.concat(GetInputs(child));
    	});
    	return arr;
    }
    
    //Проверка 1
    GetInputs(document.getElementById('product_1')).forEach(input=>{
    	console.log('product_1: name=' + input.name + ', value=' + input.value);
    });
    
    //Проверка 2 - все продукты
    for(let i=1; i<=2; i++) {
    	console.log('PRODUCT #' + i);
    	let product_inputs = GetInputs(document.getElementById('product_'+i));
    	product_inputs.forEach(input=>{
    		console.log('product_'+i+': name='+input.name+', value='+input.value);
    	});
    }
    Ответ написан
    Комментировать
  • Как исправить данный баг?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если присмотреться, то змейка начинает в старых координатах по оси Х, но если нажать "вправо", то внезапно обнуляет координату Х и телепортируется к левому краю экрана. То есть как бы внезапно вспоминает, откуда нужно было начинать.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Существуют рецепты выбора и оптимизации базы данных, в зависимости от типа её использования. А игры бывают разные, поэтому универсального рецепта для любых игр не существует.
    Ответ написан
    Комментировать
  • Github pages - указать корневую папку?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вроде можно только корень и docs. Другие папки нельзя.
    Так что пользуйтесь /docs
    В настройках выбирается.
    Ответ написан
    2 комментария
  • Есть ли сервис для просмотра торрент онлайн?

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

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

    Это самый просто способ. Перезаписанные старые данные практически нельзя восстановить.
    Ответ написан
  • Какой самый быстрый браузер?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Слабый - это сколько оперативки?
    Доставьте (докупите) хотя бы до 4GB. И тогда уже используйте любой браузер.

    Где-то с 32GB начинается комфортная жизнь, можно параллельно и фотошоп, и премьер, и рам-диск, и виртуалку, и игры всякие запускать. Простите, размечтался. Слабый ПК - зло.
    Ответ написан
    Комментировать
  • Как сделать разделение ролей по группам?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Думаю, там просто используются фейковые роли с каким-то символами из юникода.
    Инфу можно нагуглить.
    Ответ написан
    3 комментария