Pull to refresh
15
0
Дмитрий Беляев @bingo347

Разработчик Rust

Send message

почитал про WPA2 Enterprise, и мне оно показалось слишком замороченным для домашней сетки.


А цель-то какова?

Обезопасить домашнюю сеть от посторонних, при этом иметь возможность дать доступ гостям, а при необходимости иметь возможность отозвать доступ для конкретного девайса.

Прочитал статью, возник вопрос, на сколько безопасно будет мое решение:
У меня самодельный роутер, на борту Debian 9, WiFi рулится через hostapd
Во-первых, думаю отключить вообще авторизацию по паролю, оставить только wps
Во-вторых, сделать одноразовые пинкоды с привязкой к мак адресу и ограниченым сроком жизни.
Генерить пинкоды будет самописная тулза с помощью крипторандома, а выдавать их буду через вебморду, которая смотрит только в локалку, то есть чтоб подключить новый девайс нужно иметь уже подключенный девайс по WiFi или витухе.
Позже еще думаю добавить возможность авторизации через NFC-метку (приложил смартфон — получил доступ)


Вопросы следующие:


  1. Насколько в целом безопасно такое решение?
  2. Нужен ли https для вебморды выдающей пинкоды или будет достаточно шифрования wpa2?
  3. Какое максмальное время жизни пинкода можно ставить при таком подходе?
Каждый раз, когда я вижу подобный код:
class Counter {
  counter = 0;

  handleClick() {
    this.counter++;
  }

  constructor() {
    this.handleClick = this.handleClick.bind(this);
  }
}
мне хочется оторвать руки написавшему это…

Ну во-первых, не стандарт. Какой мне плагин к бабелю нужно подрубить, чтоб это заработало? Проще поправить:
class Counter {
  constructor(elem) {
    this.counter = 0;
    this.handleClick = this.handleClick.bind(this);
    // очевидно нужно еще событие навесить, чтоб заработало
    elem.addEventListener('click', this.handleClick);
  }

  handleClick() {
    this.counter++;
  }
}
теперь заработало… вот только я таких счетчиков решил 500 штук повесить на странице, и… забью память на 500 штук однотипных функций, единственная роль которых запомнить контекст для вызова метода. Уж не лучше тогда было стрелочник в конструкторе повесить:
class Counter {
  constructor(elem) {
    this.counter = 0;
    this.handleClick = () => this.counter++;
    elem.addEventListener('click', this.handleClick);
  }
}
уже лучше, вот только в памяти по прежнему 500 функций… Нехорошо.
Почему бы не реализовать интерфейс EventListener и использовать его?
class Counter {
  constructor(elem) {
    this.counter = 0;
    elem.addEventListener('click', this);
  }

  handleEvent() {
    this.counter++;
  }
}
Теперь идеально, на все 500 объектов в памяти одна единственная функция в прототипе.

На openVZ, насколько знаю, об актуальности ядра тоже говорить не приходится.
Мне вот интересно, почему до сих пор нет предложений на базе lxc? Или я плохо гуглю?

В ES6 существует одно различие между компонентами LexicalEnvironment и VariableEnvironment. Оно заключается в том, что первое используется для хранения объявлений функций и переменных, объявленных с помощью ключевых слов let и const, а второе — только для хранения привязок переменных, объявленных с использованием ключевого слова var.

Тут неточность, function declaration работает аналогично var а не let и const, то есть всплывает на верх лексического окружения функции (даже если объявлено в блоке), что в терминах статьи соответствует VariableEnvironment (на самом деле такого нет)

Существует два типа лексических окружений:

Начиная с ES6 — существует три типа окружений, не хватает еще блочного (оно используется для let и const в блоках)

притом биндинг реализуется гораздо проще, без тонн лишних абстракций
достаточно посмотреть, как webpack оборачивает es6 export — 3 строки кода в шапке бандла и по одной доп строке на каждый export

Сомнения есть, что те кто создает законы — знают о машинном обучении и понимают как оно работает, а следовательно добро на применение данной технологии не будет получено

А не логичнее ли в современных реалиях вынести общий коннект в ServiceWorker? Он будет гарантированно один на все вкладки одного сайта. Так же из плюсов вижу, что браузер его прибьет сам (а с ним и коннект) при длительном отсутствии активности во всех подключившихся к воркеру вкладок.

привык пользоваться подобными вещами из терминала…
вечером попробую наладить запуск линуксовой ноды из виндового VSCode, после поделюсь результатами
не пробовал, но скорее всего потребуется драйвер в самой винде. Как писал в статье, WSL не имеет прямого доступа к железу, так что со сканером думаю будет облом
тут скорее опыт личного использования, я запускаю некоторые процессы, такие как базы данных, из под пользователя отличного от своего основного
Скорее это последствие сжатия png скриншота. Мне не захотелось вставлять мегабайтную картинку в статью.
возможно ошибаюсь, но думаю речь идет про получение this и arguments из замыкания
У for...of под капотом вызов метода под ключом Symbol.iterator на старте и вызов метода next полученого итератора на каждой итерации, так что он не дешевле в плане вызовов.
кроме того, если понадобится поддержка старья — понадобятся и полифил для Symbol (по крайней мере с тем, что генерит из for...of babel)
про сортировки, в большинстве случаев на вопрос о сортировке проходит: метод sort будет более читабельным и более быстрым, т.к. под капотом у него или qsort или ksort (в зависимости от движка)
однако, в бытность фрилансером-оутсорсером, собеседующие познакомили меня с сортировкой подсчетом, которая наиболее эффективна для больших массивов состоящих из небольшого набора возможных значений

к чему я это: если спрашивают какой-нибудь «пузырек» — это бред, но иногда у бизнеса могут быть специфические данные, задав вопрос про сортировку подсчетом и объяснив предпочитаемое решение, собеседующие заполнили мой пробел в знаниях критичный для предстоящей задачи
для ФП стиля, нужно в reduce вторым аргументом передать 0, иначе на пустом массиве будет ошибка
никогда не делай на js то, что можно сделать на css
в задаче стоит условие «нет потомков», при пробеле или переносе строки в потомках окажется текстовая нода
Давайте разберем некую абстракцию:
У нас есть некий программный продукт. Есть несколько разработчиков, каждый ответственный за свою часть. Есть пользователи продукта, которые отправляют фидбэк об ошибках и пожеланиях.
Рассмотрим 2 подхода к организации процесса разработки:
1. все разработчики получают все отзывы пользователей (шина событий)
2. отзывы пользователей собирает менеджер и по ним заводит таски на конкретных разработчиков (менеджер — машина состояний, разработчики — наблюдатели)

Какой подход по Вашему лучше?
Facebook предложил идею flux и собственную его реализацию. redux, насколько знаю, создан питерским разработчиком.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Lead