Ответы пользователя по тегу Веб-разработка
  • Что делать с тем, что я постоянно переписываю почти весь код?

    @nirvimel
    8113161e0442443c97c663931c502d11.jpg
    Ответ написан
    Комментировать
  • Какова архитектура P2P приложений?

    @nirvimel
    Как устроена архитектура P2P приложений?

    Идея, на которой построено большинство P2P сетей называется DHT (Distributed hash table) (рус), эталонной реализацией этой идеи является Kademlia (рус).

    Каждому клиенту будет необходимо узнать адреса других клиентов. Как они смогут получить друг у друга актуальный список?

    Не существует никакого общего списка, в котором были бы перечислены все пиры сети. Невозможно мгновенно (за один запрос) получить информацию об интересующем пире (существует ли он вообще? активен ли? каков его реальный IP для подключения), но эту информацию можно достать из сети за несколько запросов: Кто знает Х? Кто знает кого-то, кто мог бы знать X? Кто знает кого-то, кто мог бы знать кого-то, кто мог бы знать X? и.т.д.

    Если приложение действительно децентрализованное, у него ведь не должно быть какого-то пира, который всегда будет знать список более актуальный, чем другие, верно?

    Именно так.

    Или всё таки, должны быть в сети какие-то доминирующие пиры?

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

    Тогда если они разом каким-то образом падают, вся система должна сама выбрать других доминантов?

    Их падение никак не повлияет на функционирование сети и уже подключенных к ней пиров. Но новые пиры "по холодному" не смогут подключиться никак, если ни один из "первоначальных" пиров не будет доступен.
    Ответ написан
    7 комментариев
  • Формула расшифровки px из size?

    @nirvimel
    Нужно как минимум прочитать заголовок PNG (а точнее IHDR chunk, который идет первым), в нем указаны ширина и высота в пикселах. Без доступа к содержимому файла это определить невозможно.
    Ответ написан
    4 комментария
  • Зарегистрировал домен - в INSTAGRAM же его кто-то юзает как логин. Законно?

    @nirvimel
    Свои права на домены и публичные аккаунты (которые могут быть использованы для продвижения товара/услуги или для массового распространения позитивной/негативной информации о товаре/услуге/компании) могут предъявлять только владельцы прав на торговую марку (trade mark). Кто первым зарегистрировал торговую марку, тот и может заявлять права на все домены и публичные аккаунты, созвучные ей. Сам факт владения доменом, не дает права претендовать на все публичные аккаунты с созвучными именами.

    P.S.: Думаю, тег Юриспруденция будет уместен для подобного рода юридических вопросов.
    Ответ написан
    1 комментарий
  • Как замаскировать источник при скачивании файла?

    @nirvimel
    Маскировка IP == Проксирование трафика.
    Вам придется пропускать весь трафик скачиваемого файла через какой-то свой узел (не обязательно веб-хостинг), IP которого и будет виден конечному пользователю. Теоретически, это - единственный возможный способ. Но вот реализация этого может быть самая различная. Одну такую возможность описал Алексей С. . Другая альтернатива - настройка reverse-proxy на VPS. Классикой тут считается Nginx. Преимущества такого варианта:
    • Очень низкий расход ресурсов - кроме трафика по сути ничего не потребляется, ни CPU, ни RAM.
    • Минимальная задержка ответа сервера. Ответ скрываемого сервера + пинг до прокси, больше ничего.
    • Сколько угодно параллельных потоков без перерасхода потоков ОС, памяти и прочих накладных расходов.
    • Возможность развертывания на очень дешевом VPS. Подбор можно вести только по bandwidth и traffic limit.
    Ответ написан
    1 комментарий
  • Как защитить данные веб-приложения?

    @nirvimel
    Простая (ограниченная) защита от парсинга: Блоки, в которых отображаются защищаемые данные, выводить на странице в виде картинок, генерируемых на сервере. Например, каждое отдельное чисто/строку в маленькой PNG. Еще лучше слепить все в одну большую картинку (вперемешку), а на странице, в соответствующих позициях, вместо текста вставить img теги, в каждом указать смещение и размер соответствующего блока на большой картинке.
    Ответ написан
    Комментировать
  • Как и как Вы следите за новостями с сфере Ваших интересов и новостями в IT в целом?

    @nirvimel
    Серфинг? Сервисы? Закладки? RSS ? Соц. сети?

    Сойдет все, кроме соц.сетей, которые давно оккупированы маркетологами и распиаренными дебилами.
    Соц.сети способны только понижать уровень интеллекта пропорционально проведенному в них времени.
    Ответ написан
    2 комментария
  • Можно ли привлечь людей на сайт, добавив возможность расплачиваться биткоинами?

    @nirvimel
    В зависимости от типа услуги/товара, ниши рынка и ЦА.
    Приведу только один пример: В 2014 году на этой планете существовало более 250 тысяч хостингов (где-то читал такую статистику) и всего 4 (четыре!) конторы, торгующие VPS за биткоины, три из которых - откровенный скам. Мне пришлось выбирать одну контору из одной. Если бы они запросили хоть 200$, я бы заплатил в любом случае.
    Это пример того, как в некоторых случаях опция оплаты в биткоинах решает все.
    Ответ написан
    1 комментарий
  • Какие обязанности клиентской и серверной части?

    @nirvimel
    Если все, чем вы занимаетесь в web, сводится к CRUD, тогда роль бекенда в вашей работе может сводиться к:
    1. Аутентификация юзера.
    2. Проверка прав доступа.
    3. Валидация данных от юзера.

    Когда вы столкнетесь с более тяжелыми приложениями с некоторой бизнес логикой (даже!), тогда вы поймете, что фронэнд занимает такую долю в проекте, какую долю занимает кнопка "Пуск" во всей ОС Windows.
    Ответ написан
    Комментировать
  • Можно ли спарсить зашифрованный сайт?

    @nirvimel
    Возможно зашифрован ваш браузер. В моем браузере эта страница ни разу не зашифрована.
    2ac843ebfc4a43a287028efb8de4f63c.png
    Ответ написан
    1 комментарий
  • Копирование сайта. Законно ли это?

    @nirvimel
    Стал замечать рост предложений копирования любого понравившегося сайта.

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

    @nirvimel
    Собрание секты верующих в приватный режим браузера в этом треде. Волшебная кнопка "инкогнито" (слово то какое красивое) надевает на юзера шапку невидимку, защищает его от слежки и вообще от всего.

    Так что же такое приватный режим на самом деле?

    Privacy mode or "private browsing" or "incognito mode"[1] is a privacy feature in some web browsers to disable browsing history and the web cache. This allows a person to browse the Web without storing local data that could be retrieved at a later date. Privacy mode will also disable the storage of data in cookies and Flash cookies. This privacy protection is only on the local computing device as it is still possible to identify frequented websites by associating the IP address at the web server.

    https://en.wikipedia.org/wiki/Privacy_mode

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

    Чтобы окончательно развеять сомнения в своей уникальности, включаем приватный режим, проходим этот тест и наслаждаемся результатом (Show full results for fingerprinting -> Ctrl+F эту строку):
    Your browser fingerprint appears to be unique among the xxx,xxx,xxx tested so far.
    Ответ написан
    1 комментарий
  • Как сделать аутентификацию в современном веб-приложении?

    @nirvimel
    Как и везде:
    1. /api/auth принимает {"login":"user", "password":"qwerty"} возвращает {"session_id":"UUID:4545633896344"}
    2. Все остальные API принимают параметр session_id, без него отвечают 401, с неверным session_id отвечают 403.
    3. Сессии не вечные, через N минут после последнего api-вызова стираются.
    4. Если клиент внезапно получает 403, то не кричит об этом юзеру сразу, а пытается перелогиниться хотя бы один раз.
    Ответ написан
  • Как работают сервисы типа websvodka.ru?

    @nirvimel
    Как сделать простое текстовое сравнение понятно

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

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

    @nirvimel
    Объяснить так - скинуть ссылку, перейдя по которой он увидит: Все ваши файлы теперь зашифрованы, переведите $100500 на кошелек 64578934725243457938 чтобы получить ключ для расшифровки.
    Ответ написан
    Комментировать
  • Как реализовать сервис видео-загрузки файлов и отображения их на сайте?

    @nirvimel
    Если канал слабый да еще с оплатой по трафику, то о прямой трансляции видео можно забыть. Лучше на сервере открыть к каталогу с видео доступ по FTP или Samba. А на терминалах делать rsync удаленного каталога в локальный откуда идет трансляция. Это будет максимально экономично по трафику (насколько это вообще возможно) и любые проблемы с сетью могут в худшем случае только замедлить синхронизацию, трансляция же будет продолжаться бесперебойно.
    Перекодирование видео, загружаемого пользователями, конечно, необходимо. Но это уже отдельный вопрос.
    Ответ написан
    2 комментария
  • Насколько важны навигационные цепочки в продвижении сайта?

    @nirvimel
    Зависит от сложности и глубины структуры сайта.
    Чем выше глубина, тем большую важность приобретает навигация.
    Для простых блогов/cms цепочки типа Главная->Статья вообще не нужны.
    Если появляется один уровень категорий, то с каждой конечной страницы нужны ссылки в ее категорию и на главную, неплохо (но необязательно) если это будет выглядеть как цепочка.
    Если количество уровней категорий больше одного (т.е. главная>категория>категория>страница), то цепочка обязательна.
    Ответ написан
    Комментировать