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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Я делаю все вопросы в отдельной структуре.
    Примерно так
    var data = [
    	{
    		name:'Психотип - это',
    		radio:['темперамент','акцентуация','соционический тип','экстраверсия','архетип','характер','ничего из этого'],
    		answer: 7,
    	},
    	{
    		name:'Что позволяет игра с точки зрения социологов?',
    		checkbox:['выразить себя','снять запреты','снять напряжение',],
    		answer: 1 + 10, //+100
    	},
    	{
    		name:'Что есть игра с точки зрения биогенетиков?',
    		checkbox:['атавизм','приготовление к жизни','снятие напряжения',],
    		answer: 1, // +10 +100,
    	},
    	// и так далее
    ];

    А на экране показываю одновременно только один вопрос и кнопку "Дальше". То есть DOM формируется динамически. Причем, при показе вопроса варианты ответов перемешиваются (кроме вариантов "ничего из вышеперечисленного" и "всё вышеперечисленное", которые добавляются в конец).

    Собственно, порядок вопросов тоже можно перемешать. Но здесь уже начинаются тонкости. Потому что некоторые вопросы стоит показывать в определенном порядке. А некоторые вопросы не стоит показывать вообще, если был дан неправильный ответ на определенный предыдущий вопрос. Не знаю, стоит ли вам заморачиваться так, как я.

    К слову, тест знаний делать на js - так себе идея. Ведь шпаргалка открывается в два клика (или комбинацией Ctrl+U) и читается без навыков программирования. По уму вопросы и ответы должны перемешиваться на сервере, id ответов должны быть каждый раз произвольные типа fGx9PeL7, подсказки ответа в js коде не должно быть вообще (проверка ответа только на сервере), вопросы должны отдаваться не все сразу, а порциями через ajax, ну и на каждый вопрос должно отводиться ограниченное время. А если лимита времени нет, то придется физически стоять над душой респондента и смотреть, чтобы он не лез в Гугл за подсказками. Ведь тест знаний должен проверять знания в предметной области, а не хакерские способности или скорость гугления.
    Ответ написан
    4 комментария
  • Как сравнять значения в localStorage?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    localStorage.Mam = localStorage.Dad;
    Ещё
    localStorage["Mam"] = localStorage["Dad"];
    Ответ написан
    7 комментариев
  • Query Google Таблицы, Как вывести только уникальные?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В ячейке D2 впишите формулу:
    =IF(COUNTIF($C$2:$C2;C2)<2;"Unique";"Duplicate")
    Растяните её на весь столбец D - в нём будут помечены уникальные значения и дубликаты.

    Теперь можно поменять основную формулу на:
    =UNIQUE(QUERY(FILTER(A1:D4;D1:D4="Unique");"Select Col1, Col2, Col3"))
    Ответ написан
    1 комментарий
  • Что это за разъем?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Тогда что-то вроде этого. Без названия. Просто кабель 8-пин.
    Там на оф. сайте ещё есть варианты.
    Ответ написан
    Комментировать
  • Архитектурный вопрос. Может ли клиент иметь бизнес логику?

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

    Назвать тонким клиентом можно. Но зависит от того, сколько логики выносится на клиент. Если много, то это уже не тонкий клиент. Например, игра типа шутера - основная логика на сервере, но и на клиенте прилично вычислений.
    Ответ написан
    Комментировать
  • Как транслировать C-функцию в JS?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    spoiler
    5cffc12bb1f03295195783.jpeg

    Но можно и самому легко. Там всё очевидно, как работает. Просто учти, что в JS символы условно двухбайтовые, то есть код символа где-то примерно от 0 до 65535.
    Ответ написан
    Комментировать
  • Хочу понять, с чего мне начать путь в геймдев?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    MrM4x1m1807, я лишь спросил про город в комментариях к самому вопросу) Это основное уточнение.

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

    Но судя по стилю письма ваши мечты далеки от реальности. И не уверен, что вам 21 год.
    Ответ написан
    Комментировать
  • Сортировка и вывод из двух массивов - как сделать?

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

    Примерно так:
    Код
    $Item = [
    	0, //нумерация с 1
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    	[ 'name'=>'название' ],
    ];
    
    $Model = [
    	0,
    	[ 'name'=>'название элемента из второго массива' ],
    	[ 'name'=>'название элемента из второго массива' ],
    	[ 'name'=>'название элемента из второго массива' ],
    ];
    
    $key1 = 1; //для $Item
    $key2 = 1; //для $Model
    while ($key1 < count($Item) || $key2 < count($Model)) { //итерируем оба массива
    	if ($key1 < count($Item)) echo("<div class='element'>$key1 ".$Item[$key1]['name']."</div>\n");
    	if ($key1 / 3 >= $key2) { //если соотношение достигло одной трети
    		//то вывести один элемент из второго массива
    		if ($key2 < count($Model)) echo("<div class='spec'>$key2 ".$Model[$key2]['name']."</div>\n");
    		$key2++; //и посчитать его
    	}
    	$key1++;
    }
    Результат
    <div class='element'>1 название</div>
    <div class='element'>2 название</div>
    <div class='element'>3 название</div>
    <div class='spec'>1 название элемента из второго массива</div>
    <div class='element'>4 название</div>
    <div class='element'>5 название</div>
    <div class='element'>6 название</div>
    <div class='spec'>2 название элемента из второго массива</div>
    <div class='element'>7 название</div>
    <div class='element'>8 название</div>
    <div class='element'>9 название</div>
    <div class='spec'>3 название элемента из второго массива</div>
    Ответ написан
    Комментировать
  • Как настроить nginx стрим что бы он работал на технике apple?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для Apple отдавай в формате только h264
    Ответ написан
    4 комментария
  • Как добавить уникальные свойства в название выпадающего списка?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    function makeDOM(html) { //Формируем DOM на основе структуры
    	for(let category in html) {
    		let det = document.createElement('details');
    		let cat = document.createElement('summary');
    		cat.innerText = category;
    		det.appendChild(cat);
    		html[category].forEach(o=>{
    			let button = document.createElement('button');
    			button.className = o.k;
    			button.innerText = o.id;
    			det.appendChild(button);
    		});
    		document.body.appendChild(det);
    	}
    }
    
    let html = {};
    function makeButton(o) { //Формируем структуру
    	if (typeof o !== "object") return;
    	if (o instanceof Array) {
    		let k = o[o.length-1];
    		o.forEach(e=>{e.k=k,makeButton(e)});
    		return;
    	}
    	if (!o.id) {
    		for(let k in o) makeButton(o[k].concat([k]));
    		return;
    	}
    	let summary;summary = html[o.category] ||(summary = html[o.category] = []);
    	summary.push({k:o.k,id:o.id});
    }
    
    window.addEventListener('DOMContentLoaded',e=>{
    	makeButton({A:A,B:B,C:C,D:D});
    	makeDOM(html);
    });
    Ответ написан
    4 комментария
  • Возможно ли создать слайдер с применением функций-генераторов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, возможно.
    Ответ написан
    Комментировать
  • Как вникнуть в ES2016, ES2017, ES2018?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Посмотрите в Википедии. Ну и Гугл тоже может помочь, как бы это оскорбительно и занудно ни звучало.

    Но вы не торопитесь юзать новые фичи. Не все оперативно обновляют свои браузеры. Так что ES2016 лучше начинать юзать в 2021, ES2017 - в 2022 и т.д. В этом плане ES2015 исключение, слишком крутой скачок, а дальше хоть трава не расти.
    Ответ написан
    2 комментария
  • Книги по логике, или как добиться математического склада ума?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Логика воспитывается в детстве, в школе. Это не столько знания, сколько навык. Так что книги не особо помогут. Хотя есть формальная логика - это целая наука, можете почитать учебники, но опять же желателен математический склад ума изначально, и далее просто заполнять пробелы и совершенствоваться.

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

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

    Собственно, сама математика (математические задачи) - лучший тренер логики. Можете брать прямо задачи для 5-7 класса и решать до тех пор, пока процент ошибок не станет равен нулю. Учебник нужен с ответами, чтобы проверять себя. Либо можете поискать интересные математические задачи типа олимпиадных (опять же, для детей), с каким-нибудь подвохом. Каждая сделанная ошибка будет делать вас лучше в плане логики. В момент осознания ошибки нужно остановиться и хорошенько вкусить смысл произошедшего, как так получилось, что помешало, как не допустить подобных ошибок в будущем и т.д. Кстати, в инете даже есть всякие списки вопросов на проверку идиотизма типа "сколько можно съесть яиц натощак", - вопросы там часто несуразные, но бывают прикольные. Если на 90% вопросов сможете ответить без подсказок, это хороший результат. Если нет - поздравляю, вы стали чуточку логичнее, чем были раньше.

    Наконец, пройдите тест на логику (взял с канала IFO) - это в любом случае тоже хорошая тренировка, заодно узнаете свой уровень. Также многие культурно-свободные тесты интеллекта - это на самом деле тесты на логику, так что можете их попробовать, например тест Равена (ссылку без регистрации и смс найти не удалось). Удачи!
    Ответ написан
    7 комментариев
  • Как правильно пользоваться Dev Tools (или где hover)?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Автор, на вашем скриншоте есть строка с Filter, а рядом кнопка :hov.
    Нажмите её, и выберите :hover, тогда появятся стили.
    Ответ написан
  • Как сделать кроссдоменный ajax запрос в chrome extensions (расширение для хрома)?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В расширениях для бразуера есть не только юзер скрипты, но и, так называемая, фоновая страница или фоновый скрипт (одно и то же). Это как бы скрытая вкладка самого расширения, которая всегда активна, пока активно расширение. В этой вкладке прямо в js можно хранить всё то, что нужно для работы расширения, а также выполнять задачи, затрагивающие расширение в целом. Например, можно делать ajax к любым доменам.

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

    Дать права можно в манифесте. Вот так выглядят права на все сайты (плюс на табы):
    "permissions": [
    	"<all_urls>", "tabs"
    ],

    Вот пример другого набора прав (на конкретные сайты плюс всякое):
    "permissions": [
    	"https://toster.ru/*", "https://habr.com/*", "notifications", "storage"
    ],
    Ответ написан
    1 комментарий
  • Какой бп взять в сборку?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Погуглите "калькулятор блока питания" - есть несколько удобных сайтов на эту тему.
    Ответ написан
    Комментировать
  • Почему MySQL возвращает пустое значение?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    print("Login: " .. tostring(inputs[1]))
    В общем, в ключевых местах расставьте print, - сразу увидите, что происходит.
    Также попробуйте на всякий случай: print(#tostring(inputs[1])), а то вдруг пробел в конце прицепился или ещё что.
    Ответ написан
  • Apple Watch это дыра в безопасности?

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

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

    Если получится так, что нашедший получит ваши часы и захочет присвоить себе (что в России довольно вероятно), то 99.99% шанс, что ему будут интересны только часы, а на ваши данные ему будет плевать, даже если часы разблокированы. Данные больше интересны хакерам, всяким троянам и вирусам на компьютере, но не ворам часов.

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

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

    Еще совсем недавно (12 дней назад) была интересная статья про кражу телефона. К часам все советы тоже применимы, почитайте, речь как раз про РФ, типичный случай "кражи".

    И да, потерять наручные (хоть и умные) часы - это надо умудриться. С учетом того, что они водонепроницаемы, их даже не нужно снимать перед плаванием. То есть они ВСЕГДА на руке. А сорвать их КРАЙНЕ сложно, даже в драке.

    P.S. А почему именно Apple Watch? Есть и другие часы, не хуже и не дешевле. Основной конкурент Garmin - вот, к примеру, хорошие часы. А если нужно подешевле, то Apple тем более не вариант, лучше взять Xiaomi и радоваться жизни.
    Ответ написан
    7 комментариев
  • Как вам пк,и будет ли он работать?

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

    Зависит от конкретной игры, от графических настроек игры и т.д.

    Вот у меня, к примеру, 32Гб оперативы. Но вчера запускал игру, и она жутко тормозила. А всё потому, что параллельно запущено 5 браузеров, в каждом 20-40 вкладок, плюс две виртуальные машины крутились.

    Как вам пк, и будет ли он работать?

    Отвечая конкретно на поставленный вопрос, могу сказать только одно:
    пк будет работать.
    Ответ написан