Pull to refresh
0
0
Send message

Защита браузера от фингерпринтинга — опыт Brave

Reading time7 min
Views7.6K

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

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments24

.xlsx изнутри. Разбор структуры файлов. Разбор каждого .xml файла

Reading time25 min
Views47K

Это статья о разборе excel изнутри. Вы узнаете как работать со стилями ячеек, листов через xml, как вносить данные и формулы в ячейки и мого другого.

Читать далее
Total votes 85: ↑85 and ↓0+85
Comments74

Node.js: шаблон сервера для аутентификации и авторизации

Reading time11 min
Views31K


Привет, друзья!


На досуге разработал шаблон Node.js-сервера для аутентификации/авторизации, которым хочу с вами поделиться. Надеюсь, кому-нибудь пригодится.


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


Также обратите внимание, что в коде имеется несколько console.log для облегчения процесса разработки приложения. В продакшне они не нужны. В производственном режиме также не следует возвращать столь информативные message.


Если возможностей, реализованных в шаблоне, окажется недостаточно, вот парочка более продвинутых инструментов:


  • oidc-client — разработчик отказался от дальнейшей поддержки, новый мейнтейнер пока не нашелся
  • oidc-provider — рекомендация моих более опытных коллег

Если вас интересует полноценная платформа для аутентификации/авторизации "из коробки", рассмотрите возможность использования Auth0.


Репозиторий


Сервер реализован с помощью Express.js


В качестве базы данных используется MongoDB Atlas

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

Веб-сервер на старом смартфоне Android

Reading time6 min
Views64K


Бывает такое, что смартфон становится ненужным — например, на нём разбивается экран или он просто старенький, тормозит даже браузер. Что делать с таким гаджетом, не выбрасывать же его? В самом деле, американцы летали на Луну с компьютерами, у которых характеристики много хуже, чем в вашем старом смартфоне. Скорее всего, в нём 4−8 процессорных ядер, 2−4 гигабайта оперативной памяти, блок бесперебойного питания с аккумулятором. Не слабее, чем некоторые компьютеры.

Попробуем найти этому смартфону полезное применение.
Читать дальше →
Total votes 54: ↑52 and ↓2+50
Comments91

Ася Казанцева: Зачем нужно спать и как делать это правильно

Reading time10 min
Views44K


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

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


Под катом конспект на 7 минут чтения часового выступления про сон Аси Казанцевой «Зачем нужно спать и как делать это правильно». Еще один поинт в копилку полезных материалов про сон — Sleep Hackers.
Читать дальше →
Total votes 78: ↑68 and ↓10+58
Comments62

Делаем сервер из Android-телефона

Reading time8 min
Views117K

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.


image


На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.


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


TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

За длинной версией под кат
Total votes 130: ↑129 and ↓1+128
Comments97

Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование

Reading time6 min
Views62K


Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
Читать дальше →
Total votes 74: ↑73 and ↓1+72
Comments62

Свой веб-сервер на NodeJS, и ни единого фреймворка. Часть 1

Reading time7 min
Views119K
Для многих людей JavaScript ассоциативно связан с обилием разнообразных фреймворков и библиотек. Разумеется, инструменты, которые помогают нам каждый день — это хорошо, но, мне кажется, нужно искать некий баланс между использованием инструментов и прокрастинацией, а также знать, как работают вещи, которыми ты пользуешься. Поэтому, когда я только сел разбираться с NodeJS, мне было особенно интересно написать полноценный веб-сервер, которым я мог бы пользоваться сам.
Читать дальше →
Total votes 46: ↑35 and ↓11+24
Comments97

Webtor.io и в чем его отличия от обычного сидбокса

Reading time4 min
Views10K

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

Читать далее
Total votes 10: ↑8 and ↓2+6
Comments9

Пример практического использования модулей

Reading time10 min
Views3.8K


Доброго времени суток, друзья!

ES6-модули, использующие синтаксис «import/export», являются довольно мощным инструментом и достойным конкурентом компонентам популярных фреймворков.

Позвольте мне продемонстрировать это на примере рисования различных фигур на холсте.

Источник вдохновения — этот раздел руководства по JavaScript от MDN.

Вот какой функционал будет реализован в нашем небольшом приложении:

  • автоматическое создание холста заданных размеров и его рендеринг на странице
  • возможность рисовать на холсте квадраты, круги и треугольники заданного размера и цвета
  • разделение кода на модули, содержащие логические части приложения

В процессе создания приложения мы уделим особое внимание дефолтному и именованному экспорту/импорту, а также статическому и динамическому импорту. Большая часть приложения будет написана с использованием синтаксиса классов.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Чему я научился, пока писал свой агрегатор цен на игры

Reading time10 min
Views4.1K

Этот пост не реклама моего проекта, а пример того, что дает человеку pet-project.


Я попробую рассказать, как, будучи тридцатипятилетним java-разработчиком, имеющим обязательства перед женой, маленьким ребенком и работодателем, сумел выделить время на самообразование и интересное хобби. Попутно расскажу, что я приобрел: какие сервисы, языки, фреймворки для себя открыл.


Сам проект представляет собой агрегатор цен online-магазина игр PlayStation Store. На данный момент с его помощью можно посмотреть, как менялась цена на игры в течение последних трех месяцев, увидеть список игр, которые обновили свои ценовые рекорды. В процессе разработки фича подписки на обновления цен.



Если интересно, добро пожаловать под кат.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Хакерский фольклор

Reading time11 min
Views22K

У некоторых компьютерных терминов необычное происхождение. Многие слова относятся к давно забытым технологиям. В этой статье мы сдуем пыль времён с некоторых терминов, которыми пользуемся каждый день.

Бо́льшая часть статьи взята из Википедии, но найти пояснения не так-то просто, если не знаешь, что искать.
Total votes 69: ↑64 and ↓5+59
Comments33

20 платформ для заработка на тестировании

Reading time7 min
Views273K
Чтобы протестировать веб-сайты из дома, вы должны быть знакомы с интернетом и хорошо говорить по-английски. Вам также понадобится базовое оборудование, такое как компьютер с микрофоном и камерой и стабильное подключение к Интернету. Большинство тестов занимает от 5 до 25 минут, и в среднем компании платят 10 долларов за тест.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments17

Много анонимности не бывает — скрываем User-Agent

Reading time4 min
Views124K
Очередной приступ паранойи был вполне обоснован — он наступил после прочтения статьи о методах анонимности в сети, где автор на примере браузера FireFox рассказывал о потенциальных утечках идентификационной информации. И стало интересно — а на сколько озвученные решения применимы, скажем, к браузеру Google Chrome?
Скрыть реальный IP — используем разные VPN сервера, отключить львиную долю отслеживающих скриптов — Adblock Plus и Ghostery, убрать Referer — не вопрос, что то ещё забыли… Ах да — User-Agent — своеобразный «отпечаток», по которому (в связке, скажем, с IP) легко идентифицировать пользователя. И с этим надо было что-то делать. Найденные решения лишь статично изменяли значение User-Agent, чего было явно недостаточно. Тогда и было решено написать плагин для скрытия реального User-Agent'a, а если быть точнее — подменять его на рандомный. Или почти рандомный.

Для нетерпеливых сразу: исходники на GitHub и расширение в Google Webstore.

Читать дальше →
Total votes 44: ↑35 and ↓9+26
Comments39

Полная домашняя автоматизация в новостройке

Reading time8 min
Views218K
Три года назад стал претворять свою давнюю мечту в реальность — максимальная домашняя автоматизация квартиры, купленной в новостройке с нуля. При этом «отделку от застройщика» пришлось принести в жертву умному дому image и полностью переделать, а вся электрика, не связанная с автоматикой приехала с известного китайского сайта. Паяльник не потребовался, но знающих мастеров, электриков и плотников пришлось искать долго.


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...
Total votes 138: ↑135 and ↓3+132
Comments514

Как конкуренты могут легко заблокировать ваш сайт

Reading time4 min
Views63K
Недавно мы столкнулись с ситуацией, когда ряд антивирусов (Касперский, Quttera, McAfee, Norton Safe Web, Bitdefender и несколько менее известных) начали блокировать наш сайт. Изучение ситуации привело меня к пониманию, что попасть в список блокировки крайне просто, достаточно нескольких жалоб (даже без обоснования). Детальнее проблему я опишу дальше.

Проблема довольно серьезная, так как сейчас почти у каждого пользователя установлен антивирус или файрвол. И блокировка сайта крупным антивирусом, таким как Касперский, может сделать сайт недоступным для большого количества пользователей. Хотелось бы привлечь внимание сообщества к проблеме, так как она открывает огромный простор для грязных методов борьбы с конкурентами.

Читать дальше →
Total votes 155: ↑152 and ↓3+149
Comments191

История видеопроцессоров, часть 4: появление General Purpose GPU

Reading time16 min
Views11K
image

Часть 1: 1976-1995 годы

Часть 2: 3Dfx Voodoo

Часть 3: консолидация рынка, начало эпохи конкуренции Nvidia и ATI

До прихода DirectX 10 не было смысла добавлять в чипы необязательную сложность, расширяя площадь кристалла, что повышало функциональность вершинных шейдеров, а также точность обработки чисел с плавающей запятой для пиксельных шейдеров с 24 до 32 бит для соответствия требованиям операций с вершинами. После появления DX10 вершинные и пиксельные шейдеры сохраняли высокий уровень общей функциональности, поэтому переход к обобщённым шейдерам избавил от большой части ненужного дублирования блоков обработки. Первым GPU, в котором применялась такая архитектура, стал легендарный G80 компании Nvidia.

Благодаря четырём годам разработки и 475 миллионам долларов был изготовлен монстр с 681 миллионом транзисторов и площадью 484 мм², впервые выпущенный на флагманской карте 8800 GTX и на 8800 GTS 640MB 8 ноября 2006 года. Разогнанный GTX под названием 8800 Ultra был вершиной мощи G80; он был выпущен в промежутке времени между двумя менее важными продуктами: 320MB GTS в феврале и GTS 640MB/112 с ограниченным тиражом 19 ноября 2007 года.

GTX, оснащённый новым алгоритмом Coverage Sample anti-aliasing (CSAA), благодаря своей несравненной производительности победил всех конкурентов как с одним, так и с двумя чипами. Несмотря на этот успех, в четвёртом квартале компания потеряла три процента рынка дискретной графики, которые благодаря силе OEM-контрактов перешли к AMD.
Total votes 18: ↑18 and ↓0+18
Comments7

Эпигенетические часы старения — а всё-таки, они тикают!…

Reading time32 min
Views34K


Что такое эпигенетические часы я когда-то уже писал. Если вкратце, на сегодняшний день это лучший показатель биовозраста, который точнее паспорта отражает, сколько нам осталось жить. Почему эпичасы так важны? Потому что я считаю, что старение — это эпигенетическая программа. Кто-то называет это моё убеждение религиозным. Да без проблем, готов считать этот тезис своим «Символом веры». Ну или «Символом Юры» — верую, что старение есмь эпигенетическая программа и чаю её взлом.

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

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

При этом наблюдается и обратный процесс: некоторые совсем ненужные нам гены, такие как вредоносные ретротранспозоны, в раннем возрасте не просто выключены, а находятся за семью печатями, но к определённому моменту печати почему-то распечатываются и эта «пятая колонна» начинает свою активность, подвергая бомбардировке наши гены своими копиями. Это приводит к гиперактивации врождённого иммунитета, то есть к пресловутому «инфламэйджингу» — стерильному возрастному воспалению, — которое поголовно наблюдается у пожилых людей и животных.
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments104

Создание пользовательских примитивов в САПР на MultiCAD .NET API

Reading time6 min
Views12K
Одним из главных недостатков традиционного .NET API в .dwg совместимых САПР является невозможность создания пользовательских примитивов (Custom Entities) на .NET. Пользовательские примитивы создаются на С++, для их использования в .NET необходимо создать управляемые обёртки на C++/CLI.

Технология MultiCAD .NET позволяет создавать пользовательские примитивы, не выходя за рамки управляемого кода. Помимо отсутствия промежуточных объектов на C++, в MultiCAD .NET максимально используются стандартные для .NET механизмы, как следствие нет необходимости во многих привычных для САПР программистов операциях: не нужно вручную описывать сериализацию, свойства в инспектор можно вывести без создания COM объекта и т.п.

В качестве демонстрации MultiCAD .NET мы рассмотрим пример приложения CustomObjects, содержащийся в комплекте поставки SDK. Этот пример создает пользовательский примитив, который представляет собой прямоугольную рамку с находящимся внутри текстом:

Sample TextInBox MultiCAD .NET Entity

Чертежи, содержащие наш тестовый примитив, могут быть открыты в любой .dwg совместимой САПР. Для изменения примитива необходимо загрузить сборку, содержащую код примитива, причём во все поддерживаемые САПР платформы загружается одна и та же сборка без перекомпиляции. Технология является родной для nanoCAD, для загрузки модуля в AutoCAD требуется модуль расширения (Object Enabler). Как это работает смотрите под катом.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments7

C# и AutoCAD. Некоторые приемы работы

Reading time7 min
Views21K

Цель данной статьи.


Целью данной статьи является рассмотрение некоторых приемов работы в связке Autocad + C#.
В основном буду опираться на статью «Начало работы с Autocad с помощью C#». В рамках данной статьи будут рассмотрены некоторые замечания по особенностям работы с Autocad с помощью SDK — ObjectARX.
Подробности
Total votes 21: ↑19 and ↓2+17
Comments14
1

Information

Rating
Does not participate
Registered
Activity