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

    lastuniverse
    @lastuniverse
    Без энтузиазма


    Так как известный мне JavaScript считает синтаксически неверными записи типа
    [21: 31, 22: 14, 23: 1, 24: 35, 25: 6, 26: 16, 27: 13, 28: 78, 29: 1,30: 42, 31: 21, 32: 31, 33: 15,34: 20, 35: 24]
    и [[24: 35], [21: 31]]

    взял на себя смелость заменить на
    {"21":31,"22":14,"23":1,"24":35,"25":6,"26":16,"27":13,"28":78,"29":1,"30":42,"31":21,"32":31,"33":15,"34":20,"35":24}
    и {"21":31,"24":35} соответственно.
  • Что толкового можно написать опираясь на модуль Net (Nodejs)?

    lastuniverse
    @lastuniverse
    Да что угодно, опирающееся на сетевой стэк. Например свой FTP, minecraft server, proxy и другие сервера и клиенты, включая узкоспециализированные такие как vnc клиент с последующей трансляцией управления в браузер. Перечислять можно бесконечно.
    Лично я, как любитель изобретать велосипеды, написал для собственных нужд 2 класса, позволяющих достаточно легко обмениваться служебными json сообщениями:
    детский трехколесный велик

    сам недомодуль (красоты не ждите:):
    const net = require("net");
    
    function send(event, data){
    	this.write(
    		JSON.stringify({
    			event: event,
    			data: data
    		})+"\n"
    	);
    }
    
    class Server extends EventEmitter {
    	constructor(options={}){
    		super();
    		this.clients = {};
    		this.host=options.host||'0.0.0.0';
    		this.port=options.port||'8020';
    		this.server = net.createServer ((client)=>{
    			client.send = send;
    			client.on('data', data=>{
    				try{
    					const str = data.toString();
    					const json = JSON.parse(""+str);
    					if( json && json.event && json.data!==undefined){
    						this.emit(json.event, json.data, client);
    					}
    				}catch(err){
    					console.log('\n\nError parse json', err);
    				}
    			});
    
    			client.on('close', data=>{
    				// ...
    			});
    		});
    	}
    
    	listen(host, port){
    		this.host=host||this.host;
    		this.port=port||this.port;
    		this.server.listen(this.port, this.host);
    		console.log('Server was ben started as ' + this.host + ':' + this.port);
    	}
    }
    module.exports.Server = Server;
    
    
    class Client extends EventEmitter {
    	constructor(options={}){
    		super();
    		this.host=options.host||'192.168.0.1';
    		this.port=options.port||'8020';
    		this.client = new net.Socket();
    		this.client.send = send;
    		this.client.on('data', data=>{
    			data.toString().split(/[\n\r]+/).forEach(str=>{
    				if( !str || str.search(/^[\s\n\r]+$/)+1 ) return;
    				try{
    					const json = JSON.parse(""+str);
    					if( json && json.event && json.data!==undefined){
    						this.emit(json.event, json.data, this.client);
    					}
    				}catch(err){
    					console.log('\n\nError parse json ', err);
    				}
    			});
    		});
    
    		this.client.on('close', ()=>{
    			console.log('Connection closed');
    			this.emit("disconnect", {});
    			setTimeout(()=>{
    				this.connect()
    			}, 6000);
    		});
    
    		this.client.on('error', ()=>{
    			console.log('Connection error');
    			this.emit("disconnect", {});
    			this.client.destroy();
    			
    		});		
    	}
    
    	
    	connect(host, port){
    		this.host=host||this.host;
    		this.port=port||this.port;
    		this.client.connect(this.port, this.host, (err)=>{
    			this.emit('connect', {}, this.client);
    			if(err) reject(err);
    		});
    	}
    }
    module.exports.Client = Client;


    узкоспециализированный сервер на его базе:
    const storrage = require("./modules/storrage.js");
    const users = storrage("../config/users.json",{});
    const config = storrage("../config/config.server.json",{});
    
    const NU = require("./modules/net-union.js");
    const server = new NU.Server();
    const clients = {};
    
    function getUser(data){
        if( !data || !data.login || !data.password )
            return false;
        const user = users[data.login];
        if( !user || user.password != data.password)
            return false;
        return user;
    }
    
    server.on("avance", (data, client )=>{
        const user = getUser(data.auth);
        if( !user ) return client.end();
        
        const username = data.auth.login;
        clients[username] = client;
        user.points-=data.avance;
        client.send("points", user.points);
    });
    
    server.on("unlock", (data, client )=>{
        console.log("unlock", data);
        const user = getUser(data);
        if( !user ) return client.end();
    
        const username = data.login;
        clients[username] = client;
        user.points--;
        client.send("points", user.points);
    });
    
    function update_points(username,amount) {
        if( !amount ) return;
        
        const user = users[username];
        if( !user ) return;
    
        const client = clients[username];
        if( !client ) return;
    
        client.send("points", user.points);
        client.send("message", "Количество минут "+(amount<0?"уменьшено":"увеличено")+" на "+amount+".\nОсталось "+user.points+" минут");
    }
    
    server.listen(config.url.host, config.url.port);
    
    module.exports.server = server;
    module.exports.update_points = update_points;


    ну и клиент)
    const manage = require("./modules/manage.js");
    const storrage = require("./modules/storrage.js");
    const config = storrage("./config/config.client.json",{});
    
    
    const NU = require("./modules/net-union.js");
    const client = new NU.Client();
    
    var count = 0;
    var avance = 0;
    var server;
    var isConnect = false;
    
    // при подключении к серверу отправить запрос на авторизацию
    client.on("connect", (data, serv )=>{
    	if(isConnect) return;
    	isConnect = true;
    	server = serv;
        console.log('\n\nПодключился к ' + client.host + ":" + client.port);
        if(avance)
        	server.send("avance", {auth: config.auth, avance: avance});
    });
    
    // при отключении к серверу переходим в автономный режим
    client.on("disconnect", (data)=>{
    	console.log("client.on disconnect");
    	isConnect = false;
    });
    
    
    // при получении количества баллов обновить счетчик
    client.on("points", (points, serv )=>{
    	console.log("client.on points", points);
    	count = points;
    	notify();
    });
    
    // при получении сообщения - вывести уведомление
    client.on("message", (message, serv )=>{
    	console.log("client.on message", message);
    	manage.notify("Таймер", message);
    });
    
    client.connect(config.url.host, config.url.port);
    
    function notify() {
    	if(count>8 && count%10===0){
    		manage.notify("Таймер", "Осталось "+count+" минут");
    	}else if(count==5){
    		manage.notify("Таймер", "Осталось "+count+" минут");
    	}else if(count>1 && count<5){
    		manage.notify("Таймер", "Осталось "+count+" минуты");
    	}else if(count==1){
    		manage.notify("Таймер", "Осталась 1 минута");
    	}else if(count<1){
    		manage.notify("Таймер", "ВРЕМЯ ВЫШЛО");
    		lock()
    	}
    }
    
    function lock() {
    	setTimeout(function() {
    		manage.lock(config.auth.login);
    	}, 20000);
    }
    
    function observe_session() {
    	console.log("next time");
    	manage.isLocked(config.auth.login, isLocked=>{
    		if(isLocked) return;
    
    		if( isConnect ){
    			server.send("unlock", config.auth);
    		}else{
    			count--;
    			avance++;
    			notify();
    		}
    	});
    	setTimeout( observe_session , 60000 );
    }
    setTimeout( observe_session , 10000 );

  • Нейронная сеть под мою задачу с чего начать?

    lastuniverse
    @lastuniverse
    Гораздо более подходящая задача для начинабщего в ИНС - создание и обучение ИНС дающей оценку например опасности ситуации на шашечном поле (игра в шашки) всего будет 256 входов и один выход, количество скрытых слоев и колличество нейронов в них подбираете сами. Обучающие, тестовые и контрольные выборки составляются на основе сыгранных партий, записей которых в инете множество.

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

    Далее уже можно изучать рекуррентные ИНС и различные их вариации (lstm и прочие)
  • Поиск программы для изменение изображения?

    lastuniverse
    @lastuniverse
    Очевидно, что данное изображение не является результатом програмной обработки фотографии а нарисованно человеком. Об этом говорит наложение теней штрихами. Штрихи имеют произвольные направления на всем пространстве изображения, но при этом в местах где тени бросают относительно ровные геометрические объекты, такие как скосы крыш, направления штрихов выбраны так, как это сделал бы человек. Любому алгоритму, предназначенному для обработки изображений достаточно сложно объяснить, чем отличаются грани скоса крыш от тех же скосов колон или деревьев.
    Так же обратите внимание на штрихрвку большого дерева слева. Штрихи выполнены группами с различным направлением штриховки, при этом некоторые из групп имеют незначительные наложения в зонах контакта с соседними группами, а концы штрихов имеют характерные закругления, возникающие когда штриховка делается рукой (не программно).
    Так же обратите внимание на вертикаль коллон. Они кривые, не вертикальные и не параллельные. Это также указывает на руку художника а не на програмную обработку фотографии.
    Конечно вполне возможно написать алголитм преобразования фотографий в подобную картинку, но такой алгоритм будет очень узкоспециализированным, и на мой узгляд вкладывать много времени в его разработку, написание и отладку нецелесообразно.

    Само изображение скорее всего рисовалось с использованием графического планшета и программы для рисования типа krita
    https://ru.m.wikipedia.org/wiki/Krita
  • Как сделать 2.5D игру html5?

    lastuniverse
    @lastuniverse
    однозначно надо делать что то типа алиеншутера да еще и с сетевой игрой)))
  • Как сделать 2.5D игру html5?

    lastuniverse
    @lastuniverse
    Дмитрий Петров, надо бы обменятся контактами, но не хочу светить ту мыло и телефон)
  • Как сделать 2.5D игру html5?

    lastuniverse
    @lastuniverse
    profesor08, и я о том же. С точки зрения мерности пространства никаких дробных D в принципе существовать не может. Это не более чем пиар термин. И соответственно под него можно подвести все, что хоть чуть выбивается из классического 2D но не дотягивает до полноценного 3D
  • Как сделать 2.5D игру html5?

    lastuniverse
    @lastuniverse
    Как вариант изометрию можно назвать 2.5D. Так же, можно назвать и первый wolf, и многое другое. Термин 2.5D используется достаточно часто и к месту и не к месту, но всилу своей надуманости не имеет четких границ применимости (рожден пиар менеджерами а не мерностью пространства)
  • Jquery не пашет, что со мной не так?

    lastuniverse
    @lastuniverse
    Вова, тут совершенно не место для того чтобы показывать свой "стиль" общения. На тостере в почете спокойный, деловой стиль, с четкими формулировками поясняющими суть вопроса. Перечитайте последний комментарий profesor08, в нем содержится ответ на Ваш вопрос.
  • Почему не работает роутинг в Express.js через Router?

    lastuniverse
    @lastuniverse
    Михаил, все 3 ответа верные, но этот более правильный с точки зрения понятности и переносимости кода
  • Какая библиотека поможет в реализации следующего drag n drop на React?

    lastuniverse
    @lastuniverse
    Приложение полностью офтопик, но в нем есть немного drag & drop, возможно будет интересно ознакомится

    5c8ac2f98e63c274013366.png
  • WebSocket js как изменить host?

    lastuniverse
    @lastuniverse
    Сделать параллельно второе подключение к другому адресу и при отправке сообщения указывать какому из алресатов (по какому из соединений) его отправлять.
  • Как сделать клон сайта, который сам является клоном?

    lastuniverse
    @lastuniverse
    Почему бы Вам не задать вопрос по существу?
    Например такой "Какие существуют способы/сервисы/библиотеки для автоматического распознавания/подбора капчи?"
  • Построение 3D модели человека на основании фото. Как сделать быстро и удобно?

    lastuniverse
    @lastuniverse
    То что вы говорите - теория. Практика же показывает что возможны варианты. У тех же растянутых футболок есть за что зацепится. Градиент освещенности, изгибы и складки самой материи и многое другое. Спорить не буду, растянутая футболка может существенно понизить точность модели, но почему вы решили что полученной точности недостаточно для достижения поставленных целей? При этом надо учитывать, что достаточное количество фотографий с хорошим разрешением напротив, способны существенно повысить точность модели.
  • Как можно решить проблему с addEventListener('click')?

    lastuniverse
    @lastuniverse
    Совсем не хочется открывать ! )
  • Какой календарь на js тут выбрать?

    lastuniverse
    @lastuniverse
    Александр Козак, вижу тенденцию, что бесплатные продукты ведущих коммерческих компаний вовремя поддерживают и продвигают только то, что позволяет привязать пользователей к их продуктам, а потому повторюсь, эти продукты в топку :)
  • Как вывести различия между двумя многомерными массивами в javascript?

    lastuniverse
    @lastuniverse
    Илья, а порядок следования и их индексы элементов с одинаковыми id в обоих сравниваемых массивах одинаков?