Search
Write a publication
Pull to refresh
2
0
Send message

Как мессенджеры шифруют сообщения (end-to-end) на самом деле

Level of difficultyMedium
Reading time9 min
Views15K

В этой статье мы углубимся в реализацию шифрования (end-to-end) сообщений на стороне клиента с использованием JavaScript и Web Crypto API, разобрав практический пример, который будет в самом конце статьи.

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

Если вкратце, без сложных слов и терминов, попробую объяснить суть сквозного (end-to-end) шифрования

Читать далее

Как я создал Telegram-бота Favie и решил проблему «Избранного»

Level of difficultyEasy
Reading time5 min
Views6.8K

В современном мире мы ежедневно сталкиваемся с потоком информации: ссылки, фото, видео, документы — всё это быстро накапливается и теряется в хаосе закладок, медиатеки или чатов. Я устал от этой проблемы и решил её раз и навсегда, создав Telegram-бота Favie. Это инструмент, который упрощает хранение данных, предлагает умный поиск по тегам и работает на любом устройстве, и в этой статье я расскажу о нём и как он появился.

Читать далее про Favie

Тестирую 10 программ для записи экрана ПК

Level of difficultyEasy
Reading time6 min
Views10K

На днях смотрел видос про искусственный интеллект и его дальнейшее развитие в монтажном софте. Ну такой типичный вебинар: спикер показывал фишки в DaVinci Resolve и параллельно в маленьком окошке транслировалась говорящая голова.

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

Затестил 10 вариантов, делюсь в обзоре мыслями.

Читать далее

Как красиво признаться в любви не покупая цветы и конфетки с плюшевым мишкой на память, используя чистый HTML и CSS с JS

Level of difficultyEasy
Reading time4 min
Views3.4K

Хочу поделиться идеей, как сделать признание в любви особенным, запоминающимся и искренним, не прибегая к классическим цветам или банальным текстам в телеграме/вацапе на миллиард строк. Я расскажу про интерактивный веб-сайтик, который можно создать своими руками, чтобы передать свои чувства. Это не просто слова, а целая история, которая разворачивается на экране, погружая человека в атмосферу тепла и эмоций. Код, который я приложил, пример такого проекта, и сейчас я объясню, как он работает и почему это может стать идеальным способом признаться в любви.

Просмотреть

Microsoft Edit: легкий текстовый редактор с открытым кодом для Windows

Reading time4 min
Views8.5K

Microsoft удивила ИТ-сообщество, возродив текстовый редактор Edit — впервые он появился в MS-DOS 5.0 в 1991 году. Edit предлагает простоту, открытый исходный код и возможности, сравнимые с Linux-редакторами вроде vim. Давайте разбираться, что такое Edit, зачем Microsoft его вернула и почему он может стать находкой для разработчиков.

Читать далее

Пишем на C самоизменяющуюся программу x86_64

Level of difficultyMedium
Reading time14 min
Views17K

«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!»

Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из любопытства.

Самоизменяемые/самомодифицируемые программы не обладают особой полезностью. Они усложняют отладку, программа становится зависимой от оборудования, а изучение кода превращается в очень утомительный и запутанный процесс, если только вы не опытный разработчик на ассемблере. Единственный разумный сценарий применения самоизменяемых программа в реальном мире — это механизм маскировки зловредного ПО от антивирусов. Моя цель исключительно научна, поэтому ничем подобным я заниматься не буду.

Предупреждение: в этом посте активно используется язык ассемблера x86_64, в котором я ни в коем случае не являюсь специалистом. Для написания статьи мне пришлось изучать приличный объём материалов, и, возможно (почти наверняка), в ней есть ошибки.
Читать дальше →

Скрытые языки: как инженеры передают информацию внутри команды, избегая документации

Level of difficultyHard
Reading time5 min
Views4.6K

Технические команды часто избегают лишней документации, но информация всё равно каким-то образом передаётся, сохраняется и развивается. В этой статье — попытка разобрать скрытые механизмы общения внутри инженерных команд: как выстраиваются негласные соглашения, каким образом рождаются "внутренние диалекты" и зачем вообще всё это, если есть JIRA, Confluence и куча других инструментов. Много примеров, блоков кода на разных языках и немного личного опыта.

Читать далее

Топ-10 антипаттернов в разработке ПО, которых стоит избегать

Level of difficultyMedium
Reading time17 min
Views16K

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

Читать далее

Мифы (ч. 2) об изучении языков

Reading time5 min
Views7.5K

На основе разговоров с выпускниками ведущих вузов Москвы и комментариев на Хабре.

___Военные/сотрудники спецслужб быстро и/или эффективно выучивают языки

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

А спалишься на любой мелочи. Обычная шпана вычисляет самозванцев с полпинка: «Кого знаешь?» Штирлица не то, что не было – его быть не могло, потому что никогда ещё он не был так близок к провалу, как КАЖДУЮ СЕКУНДУ. Тем более под лупой гестапо. (Окей, персонаж Ю.Семёнова правдоподобный: набор исключительных качеств + хорошая легенда.)

Поэтому в реальной жизни разведчик работал не под видом местного, а под видом иностранца. И разведданные получал через завербованных МЕСТНЫХ чиновников и военных. Оно и сейчас так происходит. (То, что язык для разведчика – только полдела, мы даже не обсуждаем.)

Нет и не было никогда у спецслужб никаких суперэффективных методик. Уровень среднего выпускника ВИИЯ подразумевал вполне легальную работу военного переводчика, которому до носителя как до луны.

___Про детей

Никто не спорит с тем, что они круто усваивают языки. Миф заключается в том, что они якобы делают это «легко» и/или «быстро». Очень многим детям ставят диагноз «задержка развития речи», и причины далеко не всегда патологические. Дети даже без этого диагноза в 3-м классе пишут прошедшее время глагола «цвести»: «цвестил», «цвестила». Школьные учителя могут и пострашнее истории рассказать...

По поводу детей и ин.языков: 42 секунды и с 30:02 до 36:07

Читать далее

«Люди сами не знают, чего хотят»: как читать сигналы команды

Level of difficultyEasy
Reading time4 min
Views1.9K

Привет, Хабр!

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

Люди редко приходят к вам и прямо говорят: «Я выгорел», «Я не хочу делать эту задачу» или «Ты задолбал меня микроменеджить». Но явно читаются по определенным сигналам.

Читать далее

Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP

Level of difficultyMedium
Reading time13 min
Views2.2K

В современном интернете всё, что подключено к сети, может быть найдено — было бы желание и подходящий инструмент. Сканеры вроде Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP давно вышли за рамки «поисковиков для хакеров» и стали рабочими лошадками для специалистов по кибербезопасности, Red Team, SOC‑аналитиков и OSINT‑энтузиастов. Они позволяют буквально заглянуть в «техническое подбрюшье» интернета: найти уязвимые камеры, забытые базы данных, тестовые серверы без авторизации и промышленное оборудование, случайно выставленное наружу.

В этой статье приводится сравнение шести наиболее популярных и полезных поисковых систем открытых хостов. Рассматриваются особенности архитектуры, синтаксис запросов, доступность функций, а также возможности каждой платформы — включая API, интеграции с другими решениями, систему алертов, поиск по сертификатам, изображениями и т. д. Отдельное внимание уделено примерам практического применения и оценке релевантности данных. Это первая часть серии, посвящённой сравнительному обзору. В ней подробно рассматриваются возможности Shodan и ZoomEye. В следующих частях будет проведён анализ Censys, FOFA, Netlas и Criminal IP.

Читать далее

Электромагнитное формование как интересный способ обработки металлов

Level of difficultyMedium
Reading time10 min
Views5.4K
Картинка — Brgfx (Freepik), Bert Hickman

Для чего только не используется электромагнитное поле — с его помощью записывают и считывают информацию, перемещают тяжёлые грузы и даже стреляют.

Но есть ещё один интересный способ его применения, о котором, наверняка, мало кто слышал, — электромагнитное формование, с помощью которого можно с большой скоростью деформировать токопроводящие предметы. Посмотрим, что же это такое…
Читать дальше →

Контейнер с нуля

Level of difficultyHard
Reading time9 min
Views3.6K

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

Читать далее

Сначала лягте, потом читайте: как перестать уставать на работе

Level of difficultyEasy
Reading time13 min
Views54K

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

Меня зовут Валерия Зелёная, я старший менеджер по развитию образовательных программ в YADRO и автор Telegram-канала о ментальном здоровье канала «Рефлексант». Объясню, откуда берется усталость, как мозг реагирует на постоянную нагрузку, зачем нам нужны осознанные перерывы, что отличает качественный отдых от его имитации и как на самом деле работает тайм-менеджмент.

Читать далее

Docker на каждый день: Ключевые команды в одной статье-шпаргалке

Level of difficultyMedium
Reading time9 min
Views17K

Забудьте о том, что Docker — это некий таинственный инструмент исключительно для DevOps-инженеров. В современном мире разработки Docker стал таким же незаменимым швейцарским ножом, как Git или ваш любимый редактор кода. Он позволяет любому разработчику писать код, который будет одинаково работать на машине коллеги, на тестовом стенде и в продакшене, забыв о кошмаре "а у меня на машине все работает". Если вы еще не погрузились в мир контейнеризации или вам нужен удобный источник команд, эта статья — ваш экспресс-билет.

Читать далее

Как работает Node.js

Level of difficultyMedium
Reading time22 min
Views14K



После прочтения этой статьи вы хорошо поймете следующее:


  • как работает цикл событий (event loop) в Node.js, включая все его фазы
  • как Node.js выполняет JavaScript в одном потоке (single thread)
  • как Node.js использует библиотеку libuv и внутренние API для обработки асинхронных операций
  • почему знание работы цикла событий так важно для написания эффективного серверного кода

Понять, как JS работает "под капотом" в браузере (см. эту короткую 15-минутную статью), проще, чем понять устройство Node.js. В браузере нет сложных фаз и многослойных механизмов, как в Node.js.


Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?

Читать дальше →

Теория мертвого 2GIS

Level of difficultyEasy
Reading time62 min
Views58K

Выбрали хороший ресторан (врача, СТО, юриста, риэлтора) по отзывам и высокому рейтингу в 2GIS, а оказалось, что там если не ужас-ужас-ужас, то как-то средне, явно не похоже на то, что вы бы ожидали от рейтинга 4.8 или даже 5 баллов. Знакомо?

Все знают, что в 2GIS могут быть накрученные фейковые отзывы (а их там всего 10-20 на весь город или там 99% фейковых? Есть ведь разница!), но не все умеют их легко опознавать. У 2gis, похоже, еще нет антифрода (что вполне нормально для пет-проекта, который делают веб-программисты в свободное время), но вы теперь можете различать ботов-зомби-инопланетян через мой антифрод af2gis, и выбирать себе те заведения, которые нравятся людям, а не ботам.

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

Прочитать и получить волшебные очки!

Некоторые неочевидные особенности Django ORM (filter и exclude)

Level of difficultyMedium
Reading time7 min
Views1.5K

TLDR: В статье рассказывается о некоторых особенностях Django ORM, а именно, как при неправильном использовании некоторых встроенных методов (filter(), exclude()) можно незаметно, но очень больно, выстрелить себе в ногу при работе со связями many-to-many и one-to-many (связь, обратная к FK). Статья может быть полезной не слишком искушенному в тонкостях Django ORM разработчику.

Интересно...

Кратко про XHTTP для VLESS: что, зачем и как

Level of difficultyMedium
Reading time8 min
Views20K

Просили нас тут рассказать про протокол технологию XHTTP в контексте XRay, VLESS и прочих. Просили — рассказываем!

Для начала немного истории. Классическое использование VLESS и подобных прокси‑протоколов (в том числе с использование XTLS‑Reality) предполагает подключение клиента напрямую к прокси‑серверу, который крутится на каком‑нибудь VPS. Однако во многих странах (и в России тоже) под блокировки (или замедления) начали попадать подсети популярных хостеров целиком, а в других странах цензоры начали отслеживать подключения к «одиночным» адресам с большим объемом трафика. Поэтому еще с давних времен обдумывались и проверялись идеи подключения к прокси‑серверам через CDN (сети доставки контента). Чаще всего для этого использовался websocket‑транспорт, но у этого варианта есть два больших недостатка: у него есть один характерный признак (не буду указывать его тут, чтобы не облегчать работу РКН), а во‑вторых, число CDN, которые поддерживают проксирование вебсокетов, не так уж велико, и хотелось бы иметь возможность проксироваться и через те, что не умеют.

Поэтому сначала в известном проекте Tor для бриджей (мостов) придумали транспорт meek, который позволял передавать данные с помощью многочисленные запросов‑ответов по HTTP, и таким образом позволял подключаться к мостам (прокси) через любые CDN. Чуть позже этот же транспорт реализовали в ненадолго воскресшем из мертвых V2Ray. Но у meek есть два очень существенных недостатка, которые вытекают из его принципа работы: скорость работы очень низкая (по сути дела у нас полудуплексная передача и огромный оверхед на постоянные запросы‑ответы), и из‑за огромного количества GET/POST‑запросов каждую секунду, бесплатные CDN довольно быстро могут нас выгнать на мороз, а платные — выкатить солидный счет.

Читать далее

Один за всех, и этого достаточно: мой эзотерический язык программирования Single

Level of difficultyEasy
Reading time2 min
Views2K

Годами люди писали программу «Hello world!» на языке Unary, но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.

Читать далее

Information

Rating
6,232-nd
Registered
Activity