• Пользователь + socket.io, как подключить этого же пользователя в разных вкладках браузера?

    @globalmac
    Socket.io действительно генерирует каждому подключению свой уникальный handshake и это правильно и в порядке вещей.
    Если интересует вывод пользователей онлайн в списке на сайте, например, то решить проблему можно при помощи callback() функции.
    Мы будем передавать на сигналер-сервер user_id, например через PHP и затем проверять, есть ли этот user_id в массиве подключенных пользователей.
    Пример server.js:
    userlist = {}; // Массив юзеров
    io.sockets.on('connection', function(socket) {
    	socket.on('connect', function(data, callback) {
    		socket.user_id = data.user_id; // в user_id передаём идентификатор пользователя
    		if(socket.user_id in userlist) {
    		    callback(false); // Ага, этот юзер уже открыл вкладку, значит ничего не делаем
    		} else {
    		    callback(true); // А вот тут он новенький
    		    userlist[socket.user_id] = data; // Фигачим его в массив
    		    UpdateUserList(); // Обновляем список онлайн юзеров
    		} 
    	});
            // При дисконнекте
            socket.on('disconnect', function() {
                 delete userlist[socket.user_id];
                 // Тут немного магии, чтобы юзеры в списке онлайн на клиенте не моргали, когда например они ходят по ссылкам сайта
                 setTimeout(function () {
                     UpdateUserList();
                 }, 1000);
            });
        
            function UpdateUserList() {
    		io.sockets.emit('updateusers', userlist);
    	}
    });
    Ответ написан
    1 комментарий
  • SQL Подсчет уникальных значений?

    EreminD
    @EreminD
    Кое-что умею
    Запрос выше выдаст список уникальных значений

    Этот запрос выведет количество
    SELECT COUNT(DISTINCT user_id) FROM orders
    Ответ написан
    Комментировать
  • Есть ли в объекте события поле, в которое записывается количество срабатываний события?

    Парный клик это дабл клик?
    Одиночный, Дабл, Трипл клик отслеживается
    button.addEventListener('click', event => {
      console.log(event.detail);
    });

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

    @qid00000000
    Мало что знаю, но информацию найду в гугле
    Можешь попробовать отыскать владельца ботнета и попросить вежливо передать его.

    "Медленно положи ботнет на землю и отойти от него"
    Ответ написан
    Комментировать
  • Как получить информацию по api?

    XanXanXan
    @XanXanXan
    data - объект, а не массив, поэтому у него нет метода .forEach()
    Ответ написан
    9 комментариев
  • Как добавить фото в бот Telegram, если пишет ошибку "Please send me the picture as a 'Photo', not as a 'File'."?

    jerwright
    @jerwright
    while True: coding()
    При загрузке фотографий нажмите на кнопку возле надписи «Сжать изображение».
    Ответ написан
    3 комментария
  • Как оптимизировать базу данных DLE, чтобы увеличить скорость ответа сервера?

    kotomyava
    @kotomyava
    Системный администратор
    Для начала, стоит посмотреть, что вообще происходит при обработке запросов к сайту. Понять, где именно узкое место. Разобраться, в базе-ли вообще проблема, что совсем не обязательно. Посмотреть на объём данных, запросы, посмотреть explain частых и долгих запросов. Возможно что-то подкрутить в конфигурации mysql. Возможно добавить где-нибудь индексы, возможно переписать что-то.

    Ваша задача не решается в каком-то общем виде, каким-то однозначным путём: она требует работы квалифицированного специалиста, в ответе на вопрос этому научить просто невозможно.
    Ответ написан
    Комментировать
  • Как избавиться от: "an upstream response is buffered to a temporary file"?

    Slash-Zn
    @Slash-Zn Автор вопроса
    Сделал так:
    error_log /var/www/httpd-logs/site.error.log crit;
    Теперь предупреждения не появляются.
    Ответ написан
    1 комментарий
  • Спрашивать ли бюджет у клиента или сразу называть свою цену?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Умные книги учат продажников не говорить цены/бюджеты первыми, т.к. это приведет к тому что оппонент будет иметь эту информацию, а вы нет. Т.о. он будет строить свой диалог, чтобы снизить\повысить уже названную цену
    Всегда цена - это предмет переговоров и компромиссов.

    Если стороны отказываются от переговоров (по причине низкой\высокой цены), то это фейл обеих сторон.
    Конечно если бюджет озвучен неадекватный - то с таким заказчиком\исполнителем можно попрощаться, либо объяснить что мы не можем работать за такие деньги, возможно он поймет и изменит свои цифры.

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

    . Вася Пупкин сделает сайт за 1000$, а Тёма Лебедев за 10000$. В обоих случая качество может быть одинаковым, или даже Вася выиграет по клиенто-ориентированности. Но если Вася может с клиента взять 2000$ -- то я пожму руку такому Васе. Но это не значит что Вася должен дожимать клиента, это должны быть переговоры равных. Т.о. нет ничего плохого в том, что если клиент согласен платить повышенную стоимость, то пусть платит. В конце концов, никто в этой жизни не спонсор чужому делу.

    Когда договор заключен то это всё win-win. Значит заказчик готов работать по данному бюджету, и исполнитель готов работать также. Т.о. все в выигрыше.
    Ответ написан
    Комментировать