• Как транслировать 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 вкладок, плюс две виртуальные машины крутились.

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

    Отвечая конкретно на поставленный вопрос, могу сказать только одно:
    пк будет работать.
    Ответ написан
  • Как сделать Android приложение на Python + HTML5?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Используйте библиотеку
    <html>
      <head>
        <script src="/brython.js"></script>
      </head>
      <body onload="brython()">
        <script type="text/python" src="test.py"></script>
      </body>
    </html>

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Поменяйте кодовую страницу на нужную.

    chcp - выводит текущий кодовой страницы.
    chcp 65001 - поменять на UTF-8.

    А вообще что-то не сходится. Сомневаюсь, что символ ASCII не отображается. Любая русская буква - это НЕ ASCII-символ по определению. Так что расскажите больше, что именно за символ, и как и откуда вы его отображаете, желательно с примером.
    Ответ написан
  • Как анимировать примитивы на веб странице?

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

    Графически реализовать есть варианты. Самое простое - canvas.

    В качестве идеи могу подкинуть визуализацию ячеек памяти в виде квадратов. Остаётся задизайнить их расположение, название и прочее оформление. Скажем, массив - это склеенные ячейки (вертикально или горизонтально). Анимацией в этом случае будет представлено копирование из одной ячейки в другую (оператор присваивания). А оператор сравнения можно изобразить, как линию между ячейками, которая появляется в момент сравнения, плюс к ней какой-то мультик. Можно даже персонажа, который чешет репу, и виден ход его мыслей.
    Ответ написан
    1 комментарий
  • Как сделать интернет на Apple Watch в России, Беларуси, Украине, Европе?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Подождать, пока не произойдёт одно из двух:
    а) Легализуют eSIM
    б) Выпустят модель специально для стран СНГ с обычной nano

    А пока просто наблюдать со стороны, как развивается технология, и какие изменения претерпевает. Это же по сути игрушка, смартфон не заменяет, буст удобства сомнительный (с учетом всех ограничений).
    Ответ написан
    8 комментариев
  • Как использовать if с несколькими значениями?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    local x, y, z = streetIsMyHome()
    if x == 1 and y == 2 and z == 3 then
      print("Working")
    end


    Если не хотите "мусорить" переменными в пространстве текущего файла или текущей области видимости, то:
    Код
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    do
      local x, y, z = streetIsMyHome()
      if x == 1 and y == 2 and z == 3 then
        print("Working")
      end
    end

    Еще один вариант - написать свою собственную функцию сравнения:
    Код
    function isEqualAll(...) --сравнивает первую половину аргументов со второй
      local t = {...}
      local half = math.floor(#t/2 + 0.5);
      for i=1,half do
        if t[i] ~= t[i+half] then
          return false
        end
      end
      return true
    end
    
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    if isEqualAll(1,2,3,streetIsMyHome()) then
      print("Working")
    end

    Но самое правильное и красивое - делать отдельную функцию для каждой конкретной задачи:
    Код
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    function checkStreetIsMyHome(a,b,c)
      local x,y,z = streetIsMyHome()
      return a==x and b==y and c==z
    end
    
    if checkStreetIsMyHome(1,2,3) then
      print("Working")
    end
    Ответ написан
    Комментировать