Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

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

Время на прочтение7 мин
Количество просмотров8.1K

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

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии24

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

Время на прочтение25 мин
Количество просмотров53K

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

Читать далее
Всего голосов 85: ↑85 и ↓0+85
Комментарии74

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

Время на прочтение11 мин
Количество просмотров35K


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


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


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


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


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


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

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


Репозиторий


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


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

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии6

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

Время на прочтение6 мин
Количество просмотров66K


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

Попробуем найти этому смартфону полезное применение.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+50
Комментарии91

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

Время на прочтение8 мин
Количество просмотров126K

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


image


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


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


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

За длинной версией под кат
Всего голосов 99: ↑98 и ↓1+128
Комментарии97

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

Время на прочтение6 мин
Количество просмотров68K


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

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

Время на прочтение7 мин
Количество просмотров123K
Для многих людей JavaScript ассоциативно связан с обилием разнообразных фреймворков и библиотек. Разумеется, инструменты, которые помогают нам каждый день — это хорошо, но, мне кажется, нужно искать некий баланс между использованием инструментов и прокрастинацией, а также знать, как работают вещи, которыми ты пользуешься. Поэтому, когда я только сел разбираться с NodeJS, мне было особенно интересно написать полноценный веб-сервер, которым я мог бы пользоваться сам.
Читать дальше →
Всего голосов 46: ↑35 и ↓11+24
Комментарии97

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

Время на прочтение4 мин
Количество просмотров12K

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

Читать далее
Всего голосов 7: ↑5 и ↓2+6
Комментарии9

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

Время на прочтение10 мин
Количество просмотров3.9K


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

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

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

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

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

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

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

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

Время на прочтение10 мин
Количество просмотров4.2K

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


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


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



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

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

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

Время на прочтение11 мин
Количество просмотров23K

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

Бо́льшая часть статьи взята из Википедии, но найти пояснения не так-то просто, если не знаешь, что искать.
Всего голосов 53: ↑48 и ↓5+59
Комментарии33

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

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


Читать дальше →
Всего голосов 14: ↑13 и ↓1+13
Комментарии17

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

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

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

Читать дальше →
Всего голосов 44: ↑35 и ↓9+26
Комментарии39

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

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


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

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...
Всего голосов 104: ↑101 и ↓3+132
Комментарии514

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

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

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

Читать дальше →
Всего голосов 115: ↑112 и ↓3+149
Комментарии191

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

Время на прочтение16 мин
Количество просмотров11K
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.
Всего голосов 18: ↑18 и ↓0+18
Комментарии7

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

Время на прочтение32 мин
Количество просмотров35K


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

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

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

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

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

Время на прочтение6 мин
Количество просмотров12K
Одним из главных недостатков традиционного .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). Как это работает смотрите под катом.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии7

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

Время на прочтение7 мин
Количество просмотров22K

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


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

Visual Studio hotkeys

Время на прочтение5 мин
Количество просмотров178K
image
Привет, хаброразработчик!
Нет, это не очередной конкурс спали клавиатуру А и получи клавиатуру Г. Сегодня мы поговорим о горячих клавишах в Visual Studio 2008.

Читать дальше →
Всего голосов 22: ↑13 и ↓9+4
Комментарии14
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность