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

    lastuniverse
    @lastuniverse
    Alice Smith, да, действительео, пропустил скобочки. Исправил )))
  • Нужна помощь с вебсокетами?

    lastuniverse
    @lastuniverse
    kirillbelash93, это уже тема отдельного вопроса)
  • Как вынесли переменную?

    lastuniverse
    @lastuniverse
    Это ничем не отличается от:

    const foo = () => new Promise((res) => setTimeout(() => {
      console.log('async')
      res('data')
    }, 2000))
    
    foo().then(n=>{
      console.log(n)
      // тут вставляем весь ваш код использующий n
    })
  • Как вынесли переменную?

    lastuniverse
    @lastuniverse
    Михаил, нафига больше кода. Тут и так все понятно. Человек недопонимает асинхронность.
    Не возможно получить во внешнюю переменную значение возвращаемое асинхронно, раньше чем это значение будет возвращено)))

    Поэтому либо промисы либо async/await и пересмотр архитектуры кода
  • Процентное соотношение двух чисел обратно, как?

    lastuniverse
    @lastuniverse
    Кирилл Резанов, не глупо ли добавлять умножение на 0.1 если можно просто расстояние по умолчанию уменьшить в 10 раз?
  • Нужна помощь с вебсокетами?

    lastuniverse
    @lastuniverse
    kirillbelash93, осталось только получить на них сертификат и прописать в вашем dns сервере а запись для одного из поддоменов, указывающую на IP вашего vds, а на самой vds подключить сертификат к вашему wss серверу
  • Выбор движка для 2D игры на Android?

    lastuniverse
    @lastuniverse
    Алексей Глобин, unityscript (ака js) уже почти выпилили из unity. Так что работать придется на C#
  • Нужна помощь с вебсокетами?

    lastuniverse
    @lastuniverse
    kirillbelash93, у вас же есть домен? Если есть, заведите на нем домен 3-го уровня и настройте А запись этого поддомена на IP вашей VPS.
  • Нужна помощь с вебсокетами?

    lastuniverse
    @lastuniverse
    перенести сервис на ноде на основной хостинг, или связаться с администрацией VPS на предмет "как подружить вашу VPS с https" (если сами не можете настроить nginx и letsencrypt на своей VPS).
  • Как запомнить текст, который выполняется в функции?

    lastuniverse
    @lastuniverse
    fraps01

    тык сюда (версия для очень старого js)

    var request = require("request");
    
    
    // создаем класс для кэширования результатов запросов
    var СacheRequest = function() {
    	// конструктор
    	// создаем ассоциативный массив для кэширования результата
    	this.cache = {};
    };
    
    // основной метод класса, предназначен для получения данных по ссылке
    // принимает url в качестве параметра
    // возвращает выполненный промис если запрос есть в кэше
    // или промис в ожидании выполнения запроса
    СacheRequest.prototype.get = function(url) {
    	var self = this;
    
    	// если такой запрос уже был, возвращаем промис с результатом из кэша
    	if( this.cache[url] )
    		return  Promise.resolve(this.cache[url]);
    	
    	// иначе возвращаем промис с ожиданием результата
    	return new Promise(function(resolve,reject){
    		// делаем запрос на указанный url
    		request(url, function(error, response, body){
    			// если ошибка - реджектим )
    			if( error )
    				return reject(error);
    			
    			// иначе запоминаем в кэше ответ
    			self.cache[url] = body;
    
    			// и резолвим body
    			resolve(body);
    		});			
    	});
    };
    	
    // метод отчищает кэш
    СacheRequest.prototype.clear= function(){
    		this.cache = {};
    };
    
    
    // создаем экземпляр кэша
    var cacheRequest = new СacheRequest();
    
    // так как request асинхронный, то для того, чтобы получить 
    // результат запроса используем метод .then у возвращаемого промиса
    
    // выполняем запросы:
    // запросим "http://google.ru/" (будет сделан фактический запрос)
    cacheRequest.get("http://google.ru/")
    .then(function(body1){
    	console.log("\n\n\nBODY:", body1, 111);
    
    	//теперь еще раз запросим "http://google.ru/" (будет взято из кэша)
    	cacheRequest.get("http://google.ru/")
    	.then(function(body2){
    		console.log("\n\n\nBODY:", body2, 222);
    
    	});
    });
    	
    
    // раз в сутки отчищаем кэш
    setTimeout( function(){
    	cacheRequest.clear();
    }, 1000*60*60*24 ); // 1000*60*60*24 это количество миллисекунд в сутках

  • Как запомнить текст, который выполняется в функции?

    lastuniverse
    @lastuniverse
    а ничего, что request асинхронный, а автор похоже собирается получать доступ к body сразу после вызова request(...) не дожидаясь отработки)))
  • Как реализовать такой функционал на JS?

    lastuniverse
    @lastuniverse
    DeniSidorenko, от такого выражения мыслей хочется громко ругаться матом
  • Как работают пиксели ретаргетинга?

    lastuniverse
    @lastuniverse
    Антон Морозов, не всегда, пиксель на самом деле собирательное понятие с анахроничным названием. Вместо реального пикселя это может быть и js скрипт, хранящий данные в локалсторадже, и iframe и многое другое.
  • Как работают пиксели ретаргетинга?

    lastuniverse
    @lastuniverse
    Антон Морозов, учитесь формулировать вопросы)

    1. Q. почему пиксель?
    A. потому что прозрачный пиксель не видно на странице и его можно вставить в любое место страницы.

    2. Q. Что дает вставка пикселя?
    А. Тут все просто, пиксель грузиться со специальной страницы (ВК, ОК и т.д.). При этом, скрипт этой страницы не просто отдает картинку, но также и обрабатывает запрос картинки, вычисляя и запоминая с какого сайта пришел запрос, какой пользователь ВК, ОК и т.д. Посетил сайт с пикселем (если конечно посетитель авторизован в ВК, ОК, и т.д.

    3. Q. Каким образом ВК, ОК и т.д. узнают, с какого сайта пришел запрос на пиксель?
    А. Очень просто: referer заголовок, передающийся вместе с запросом

    4. Q. Каким образом ВК, ОК и т.д. узнают, какой пользователь посетил сайт с пикселем?
    А. Очень просто: Cookie (Если пользователь в настоящий момент авторизован в ВК, ОК и т.д., то соответственно ВК, ОК и т.д. отдают ему некий токен, соответствующий его текущей сессии в ВК, ОК и т.д., При запросе пикселя, так как запрос идет на домен ВК, ОК и т.д., в теле запроса передается и этот токен, по которому скрипт на сайте ВК, ОК и т.д. отдающий пиксель и определяет пользователя посетившего сайт с пикселем)
  • Как работают пиксели ретаргетинга?

    lastuniverse
    @lastuniverse
    Антон Морозов, опять же, вы пишите:
    вопрос был о технической части работы абстрактного пикселя ретаргетинга.

    Теперь скажите, описание по моей ссылке рассказывает о "психической части" или о "философской части" или еще о какой то (не технической) части?

    Да возможно по ссылке раскрыто не все, что можно отнести к технической части, но извините, вы что и правда верите, что на столь общий вопрос получите детализированный ответ на 3-4 листа?
    Хотите нормальный ответ, выражайтесь яснее (конкретизируйте вопрос).
  • Как работают пиксели ретаргетинга?

    lastuniverse
    @lastuniverse
    Антон Морозов, вы сами свой вопрос читали?

    Вот вы пишите:
    Подскажите, пожалуйста, как работают пиксели ретаргетинга (ОК, ВК, ФБ)?

    А на мой взгляд это вполне адекватный ответ на данную часть вопроса. Разве нет?
  • Как с помощью bcrypt зашифровать в строку?

    lastuniverse
    @lastuniverse
    Адель Халитов, этого нельзя сделать с помощью bcrypt, разве что брутфорсом. Модуль bcrypt не шифрует данные а вычисляет хэш от текста без возможности последующей расшифровки.

    документация к модулю BCrypt
    API модуля BCrypt
    genSaltSync(rounds, minor)
            rounds - [OPTIONAL] - the cost of processing the data. (default - 10)
            minor - [OPTIONAL] - minor version of bcrypt to use. (default - b)
        genSalt(rounds, minor, cb)
            rounds - [OPTIONAL] - the cost of processing the data. (default - 10)
            minor - [OPTIONAL] - minor version of bcrypt to use. (default - b)
            cb - [OPTIONAL] - a callback to be fired once the salt has been generated. uses eio making it asynchronous. If cb is not specified, a Promise is returned if Promise support is available.
                err - First parameter to the callback detailing any errors.
                salt - Second parameter to the callback providing the generated salt.
        hashSync(data, salt)
            data - [REQUIRED] - the data to be encrypted.
            salt - [REQUIRED] - the salt to be used to hash the password. if specified as a number then a salt will be generated with the specified number of rounds and used (see example under Usage).
        hash(data, salt, cb)
            data - [REQUIRED] - the data to be encrypted.
            salt - [REQUIRED] - the salt to be used to hash the password. if specified as a number then a salt will be generated with the specified number of rounds and used (see example under Usage).
            cb - [OPTIONAL] - a callback to be fired once the data has been encrypted. uses eio making it asynchronous. If cb is not specified, a Promise is returned if Promise support is available.
                err - First parameter to the callback detailing any errors.
                encrypted - Second parameter to the callback providing the encrypted form.
        compareSync(data, encrypted)
            data - [REQUIRED] - data to compare.
            encrypted - [REQUIRED] - data to be compared to.
        compare(data, encrypted, cb)
            data - [REQUIRED] - data to compare.
            encrypted - [REQUIRED] - data to be compared to.
            cb - [OPTIONAL] - a callback to be fired once the data has been compared. uses eio making it asynchronous. If cb is not specified, a Promise is returned if Promise support is available.
                err - First parameter to the callback detailing any errors.
                same - Second parameter to the callback providing whether the data and encrypted forms match [true | false].
        getRounds(encrypted) - return the number of rounds used to encrypt a given hash
            encrypted - [REQUIRED] - hash from which the number of rounds used should be extracted.


    Если у вас возникает вопрос зачем такое вообще надо, то вот вам простой пример использования:

    У вас есть некая авторизация пользователей принимающая логин и пароль. При этом в целях безопасности вам нельзя хранить пароль в БД или файле в открытом виде (вдруг злоумышленник сможет получить доступ к такому хранилищу и узнает пароли всех пользователей, включая администраторов). Для решения этой задачи и используются хэш-функции.
    1. при установке нового пароля пользователю в БД записывается не сам пароль а его хэш
    2. при авторизации, веденный пользователем пароль хэшируется тем же алгоритмом что и на шаге 1
    3. хэш введенного пароля сравнивается в хэшем из БД. если совпали, то пользователь ввел верный пароль, если не совпали - пользователь посылается куда подальше )

    PS: для реализации вашей задачи вы можете использовать одну из следующих библиотек:
    RSA Javascript encryption
    RSA and ECC in JavaScript
    cryptico
    или любую другую, реализующую принцип открытого/закрытого ключей. Таких библиотек множество