• Почему я могу вызвать функцию раньше чем она была создана?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Функции, объявленные через Function Declaration, отличаются от Function Expression тем, что интерпретатор создаёт их при входе в область видимости (в начале выполнения скрипта), так что они работают до объявления.

    http://learn.javascript.ru/javascript-specials#fun...
    Ответ написан
    Комментировать
  • Большое кол-во данных mysql?

    Jump
    @Jump
    Системный администратор со стажем.
    Большое кол-во данных mysql?
    Где?
    Вот это "стран: 236 (норм), Городов: ~4,716,527 на сумму 239.8 мб" - очень малое количество данных, просто смешное.
    Решил протестировать все это дело. Например по запросу Россия скрипт думал 12 сек.
    Ну если у вас скрипт медленно "думает" значит надо написать нормальный скрипт.
    Выборка из такого количества будет занимать доли секунды на самом старинном сервере.
    Более того - за 12секунд или около того реально даже вручную выбрать эти данные из БД напечатанной на бумаге.
    Ответ написан
  • Room socket.io?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Будет выводиться как только вы клиенту его отправите, или всем клиентам.

    Вы отправляете сообщение в room_1, а в неё никто не заходит.

    Чтобы дошло надо клиенту join в нужную комнату.
    Либо делать emit/броадкаст,
    Ответ написан
    5 комментариев
  • Как создать реализацию событий?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Из вашего вопроса не до конца ясно, чего конкретно вы хотите добиться, но давайте рассмотрим пример с WebSocket.

    Используя современные возможности javascript, реализовать такое поведение довольно просто:
    1. Создаём новый экземпляр "класса" MyWebSocket.
    2. Сразу же запускаем подключение по указанному адресу.
    3. Подключение - асинхронная операция, поэтому возвращаем Promise.
    4. Объявляем свойство onopen так, чтобы при задании ему значения вызывалась функция-сеттер.
    5. Внутри сеттера говорим, что callback (та функция, которую пользователь записал в onopen) должен вызваться после того, как promise, возвращаемый методом connect, выполнится (обработку ошибок для упрощения не рассматриваем). Так как промисы состоят в равных пропорциях из радуги, пыльцы фей и слёз единорогов, callback мы можем установить в любой момент - если соединение ещё не установлено, наша функция дождётся, если соединение уже установлено в прошлом, функция будет выполнена сразу же.
    6. В данном случае мы делаем двухсекундную задержку соединения. Попробуйте убрать setTimeout - код будет работать как ни в чём не бывало.
    7. Наконец, вызывается наша функция-callback.

    var MyWebSocket = function(url) {
      this.url = url;
    
      this.connection = this.connect();  // 2
    
      Object.defineProperty(this, 'onopen', { // 4
        set: function(cb) {
          this.connection.then(cb.bind(this)); // 5
        }
      });
    }
    
    MyWebSocket.prototype.connect = function() {
      console.log('connecting to %s', this.url);
    
      return new Promise(function(resolve, reject) {  // 3
        setTimeout(resolve, 2000); // 6
      });
    }
    
    var socket = new MyWebSocket('example.com:8081'); // 1
    
    socket.onopen = function() {
      console.log('connection to %s established', this.url); // 7
    }

    https://jsfiddle.net/koceg/p2utcp9j/
    Ответ написан
    7 комментариев
  • Область видимости nodejs?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Любые модули в js сделаны на замыканиях, поэтому и не видят переменные и функции друг друга
    Главная задача, которую решают модули - как раз таки разграничение области видимости.

    В node.js встроена модульная система CommonJS, вот ее основы:
    1) Модули подключаются синхронно и отрабатывают 1 раз за время жизни приложения, после результат кэшируется
    2) В качестве результата работы модуля используется значение module.exports, которое модуль может изменять
    3) Если присвоить в module.exports новое значение, после того как модуль отработал - это никак не отразится на внешних подключениях модуля, однако если module.exports объект, можно менять поля этого объекта
    4) По умолчанию module.exports содержит новый пустой объект, ссылка на этот объект содержится так же в переменной exports
    Ответ написан
    Комментировать
  • Область видимости nodejs?

    @sergeystepanov1988
    Все файлы подключаемые через require имеют свою область видимости.
    Ответ написан
    Комментировать
  • Как правильно настроить nodeJs для php приложения?

    @sergeystepanov1988
    Есть такая штука, под названием DNode: https://github.com/bergie/dnode-php
    Еще как вариант теоретически можно использовать RabbitMQ. Он как раз сделан для того, чтобы соединять две системы, которые друг с другом не совместимы.
    А вообще самый простой вариант тот, который был предложен в теле вопроса, то есть повесить ноду на локалхосте на каком-нибудь порту и стучаться к нему курлом. Если порт закрыт для http-запросов, то проблем с безопасностью быть не должно.
    Ответ написан
    Комментировать
  • Что мой провайдер знает обо мне?

    @nirvimel
    Когда я захожу на определенный сайт, провайдер видит URL?

    Да.

    А если я захожу на https?

    Известен IP сервера и имя домена. Больше ничего.

    Откуда провайдер узнает, что я скачиваю определенный фильм/программу через torrent?

    Торрент-клиент общается с трекером по HTTP. Все видно насквозь: конкретные торренты + вся статистика (когда начато скачивание, когда закончено, когда пошла раздача, сколько роздано). Возможно подключение к трекеру и по HTTPS, но rutracker.org такой возможности не дает (мне тоже интересно почему).

    Все пакеты которые я получаю и раздаю значит провайдер скачивает себе, чтобы узнать что это за фильм/программа?

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

    Или он отслеживает факт скачивания .torrent файла, а затем делает вывод по идущим пакетам, что это скачивается?

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

    Когда я пользуюсь VPN, что видит провайдер?

    Видит шифрованный траффик на конкретный IP. По IP можно узнать, что этот диапазон продается под VPSы. Сам факт шифрованного трафика вешает абонента в списки тех, "кому есть что скрывать", а значит подозреваемых при любом розыске.

    Что я зашел на определенный IP и с него идут зашифрованные потоки?

    Дальнейшее направление трафика от VPN-сервера отследить невозможно (по крайней мере, на оборудовании провайдера в автоматическом режиме). Но при целенаправленной слежке за абонентом в принципе возможно по временным меткам сопоставить трафик абонента с трафиком любого сервера.

    OpenVPN будет работать через VPN IP и в браузере и при обновлении Windows, драйверов, ...?

    В зависимости от настройки. Но в общем случае, да, так.

    Читал, что в Windows есть такая особенность, что если провайдер как-то урезает пакет, то VPN отключается и сайту показывается мой реальный IP?

    Это не связанно с провайдером. Это особенность Windows. Когда VPN отваливается, весь трафик вылетает наружу в открытом виде. Опять же зависит от настроек. Но это еще одна цена "удобства" при использовании Windows.

    При этом провайдер видит на каком я сайте, что скачиваю?

    VPN отвалился - хацкер спалился.

    Таких фишек много?

    Смотря о чем речь. В сфере сетевой безопасности и анонимности различных нюансов вообще много.

    Как от них защитится?

    Учить мат.часть. Разбираться в сетевых протоколах и в устройстве ОС.

    Если пользуюсь каким-то расширением типа ZenMate, dotvpn, провайдер аналогично как и с VPN видит что что-то отправляется и приходит на определенный VPN IP?

    Расширения очень разные. Они могут базироваться на совершенно разных технологиях. Ни один специалист вам не скажет за все расширения. Не исключено, что многие из них, по сути - honeypot, то есть созданы с целью слежения за любителями анонимности, привлекают своим удобством и дают ложное чувство безопасности.

    При использовании Tor, кто-то пользуется моим IP, пока я пользуюсь чужим?

    Нет. Если у вас не сконфигурирован Exit Node.

    Что при этом видит провайдер, что я получаю потоки данных с определенных IP и каждый раз разный IP?

    У них есть система точного обнаружения использования Tor. Это факт остается в логах с теми же последствиями, что и для VPN.

    Провайдер видит URL?

    Через Tor и VPN - нет.

    Каким образом можно полностью управлять сетью на ПК, видеть что, куда и когда отправляется или приходит на ПК (Windows, Linux)?

    Видеть все: https://www.google.com/search?q=Wireshark
    Блокировать все лишнее: https://www.google.com/search?q=Comodo+Firewall
    Ответ написан
    22 комментария
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    Из документации socket.io (отправка сообщений)
    // отправить текущему сокету сформировавшему запрос (туда откуда пришла)
    socket.emit('message', "this is a test");
    
    // отправить всем пользователям, включая отправителя
    io.sockets.emit('message', "this is a test");
    
    // отправить всем, кроме отправителя
    socket.broadcast.emit('message', "this is a test");
    
    // отправить всем клиентам в комнате (канале) 'game', кроме отправителя
    socket.broadcast.to('game').emit('message', 'nice game');
    
    // отправить всем клиентам в комнате (канале) 'game', включая отправителя
    io.sockets.in('game').emit('message', 'cool game');
    
    // отправить конкретному сокету, по socketid
    io.sockets.socket(socketid).emit('message', 'for your eyes only');
    Ответ написан
    19 комментариев