Pull to refresh
-5
@cosmolevread⁠-⁠only

User

Send message

Почему JWT — не панацея: разбор проблем сессий и безопасности

Level of difficultyMedium
Reading time6 min
Views25K

JWT для сессий: удобство или головная боль?

JSON Web Token (JWT) приобрёл популярность как удобный способ аутентификации и передачи данных между клиентом и сервером. Его ценят за простоту, stateless-подход и гибкость. Однако большинство гайдов рассказывают только о плюсах, забывая о недостатках.

В этой статье мы разберём основные проблемы использования JWT для хранения пользовательских сессий и обсудим более надёжные альтернативы.

Читать далее

Как создать скрипт-beautifier в Ghidra на Python?

Level of difficultyMedium
Reading time11 min
Views1.5K

Приветствую, дорогой читатель. Хочу представить вашему вниманию пример, как можно упростить себе жизнь при исследовании кода программ, используя скриптинг в Ghidra.

Если вы уже имели опыт работы с дизассемблером, то заметили, что читать его вывод не так легко, если целью является понять более высокие абстракции, заложенные в нём. Возможно, вы даже пытались декомпилировать его в псевдокод, но работать с переменными типа local_1-999 – то ещё удовольствие. Да, можно щёлкнуть на каждую из них и присвоить имя на основе логики. А что, если у вас 2000 строк и более?

Чтобы не натереть мозоль, давайте разберёмся, как написать скрипт, который сделает большую часть работы за нас.

Все манипуляции были проделаны на версии 11.1.2. Чтобы попасть в список доступных скриптов, откройте меню Window → Script Manager и там же создайте новый скрипт, нажав в правом верхнем углу кнопку Create New Script и выбрав язык Python.

Важное ограничение: Ghidra использует внутреннюю реализацию языка Python версии 2.7.

Читать далее

Перепрограммируем заводской датчик CO2 Zigbee от компании Tuya

Level of difficultyEasy
Reading time3 min
Views16K

Предыдущий проект о перепрограммировании заводского термостата вызвал достаточно большой интерес у сообщества (ссылка будет в конце статьи). И вот поступило предложение проверить, можно ли таким же образом избавиться от спама на датчике CO2.

Читать далее

Исповедь хакера: как работает финансовый рынок?

Level of difficultyEasy
Reading time21 min
Views27K

Это статья - еще один изумруд из недр интернет андеграунда. Гарантирую, что вы найдете в ней что-то интересное. Возможно, мысли автора выражены в несколько экспрессивной и утрированной форме, но учитывая такие исторические события как Азиатский финансовый кризис и Кризис 2008 года, рынок действительно напоминает сюрреалистическую зарисовку. И наше время определенно в этом плане выглядит еще более сюрреалистичным. Тот же Трампкоин, который все обсуждали несколько недель назад, откровенные манипляции с DOGE Илоном Маском, поэтому его экспрессивность понять можно, но мат я убрал)

Читать далее

Майнинг отопление загородного дома. Криптокотел. Опыт использования

Level of difficultyMedium
Reading time7 min
Views28K

Как я превратил майнинг в источник тепла: котел, который зарабатывает деньги

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

Казалось бы, отопление за счет майнинга – звучит как фантастика. Но после долгих расчетов, тестов и внедрения системы криптоотопления я убедился, что это реально. Теперь асики не просто добывают биткоины, но и согревают мой дом, зарабатывая сотни тысяч рублей в год.

Как это работает? Какие были сложности? И главное – насколько выгодно такое решение? В этом материале я расскажу всю историю своего пути – от первых видеокарт до криптокотла, который греет мой дом и кошелек.

Читать далее

Я взял кредит 700 тысяч на разработку своей визуальной новеллы, чтобы тебе не пришлось

Reading time12 min
Views33K

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

Читать далее

Использование оверлейных сетей для обхода NAT

Reading time15 min
Views16K

У меня, как и у многих посетителей Хабра есть raspberry pi. А ещё, почти честные сто мегабит от провайдера домашнего интернета. Идея о маленьком домашнем сервере от такой комбинации появляется сама по себе. Но сервер он ведь на то и сервер, чтобы работал независимо от факта нахождения пользователя в физической доступности. В связи с этим, возникает вопрос, как подключаться к такому серверу удалённо? Обычно провайдеры домашнего интернета прячут своих пользователей за NAT, так как IPv4 на всех не напасёшься. Мой провайдер исключением не является. Внешний статический IP он так же не предоставляет (по крайней мере, такой услуги в ЛК я не нашёл), да и совершенно ни к чему выставлять шлюз в локальную домашнюю сеть во внешний интернет. Shodan, ботнеты, сканеры и краулеры никто не отменял. Раньше для подобной задачи решение было очевидным – виртуальная частная сеть. Однако сейчас, с учётом нарушения сетевого коннекта по определённым протоколам, хочется иметь как минимум резервный удалённый канал связи. Да, нарушение коннекта по привычным для данной задачи протоколам неполное: можно отыскать протокол, который не забанен, можно поиграть с настройками, тем не менее хочется иметь возможность сделать это удалённо. Мой взгляд упал на нестандартные средства решения этой задачи.

Читать далее

Баг в дизайне коллекций

Level of difficultyEasy
Reading time4 min
Views2.9K

В этой статье речь пойдёт о фреймворке коллекций в Java. Относительно недавно (в 3 кв. 2023 года) эта библиотека вновь слегка обновилась. Я ознакомился с обновлениями, и скажу, что они меня разочаровали.

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

Итак случившееся обновление - добавление последовательных версий интерфейсов в коллекции, а именно SequencedCollection, SequencedSet и SequencedMap. Такие последовательные коллекции ещё во времена Рапиры, кажется, называли кортежами.

Читать далее

Еще один монитор CO2 без датчика CO2

Reading time5 min
Views34K

Там, где что-то стоит дорого и по определению не может стоить дешевле, ушлые производители обязательно предложат «полноразмерный макет» за полцены. Подобными «макетами» домашних мониторов CO2 много лет забиты все маркетплейсы.

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

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

Читать далее

Катастрофа в российской зоне проекта NTPPool.org

Level of difficultyEasy
Reading time4 min
Views93K

Привет, Хабр! Своим первым постом на площадке я хочу привлечь внимание к катастрофе, сложившейся на данный момент в RU-зоне проекта NTPPool.org. Я думаю, что проект в представлении не нуждается, тем не менее, для тех, кто никогда о нём не слышал - во многом благодаря ему все ваши компьютеры, смартфоны, серверы и прочие гаджеты имеют точное время.

Читать далее

Заточка кухонных ножей мусатом

Level of difficultyEasy
Reading time9 min
Views81K

Я инженер, «переболел» заточкой ножей. Поделюсь наименее очевидными элементами теории; и простейшей техникой поддержания кухонного ножа острым за одну минуту в неделю.

Читать далее

Grafana Stack: закрываем все современные потребности Observability

Reading time6 min
Views7.9K

Ни одна система не может функционировать без сбоев, всегда могут возникнуть ситуации, когда в работе софта возникают проблемы. И здесь важное значение имеет observability — понятие, включающее в себя мониторинг и наблюдаемость. С помощью мониторинга мы можем определить, когда возникла проблема, а наблюдаемость позволяет нам понять, почему она возникла.

В этой статье мы поговорим о том, как можно реализовать observability с помощью сервисов стека Grafana.

Читать далее

Null-безопасность в Java: когда нули тоже имеют значение

Reading time5 min
Views2.6K

В компании “Свой Банк” мы активно развиваем лучшие практики и стандарты в Backend-разработке. Но, прежде чем выработать хотя бы одну практику, необходимо изучить материалы, разобраться в теме и выработать подходящий вариант. Поэтому в данной статье затронем основные понятия и концепции работы null-безопасности в объектно-ориентированном языке программирования Java.

Что такое Null-безопасность и Nullability

Nullability — это концепция, которая описывает, может ли переменная или выражение содержать значение `null`. Несмотря на свою кажущуюся простоту, работа с `null` часто становится причиной сложных ошибок, таких как `NullPointerException` (NPE). Из-за этого возникла концепция null-безопасности, целью которой является защита кода от ошибок, связанных с `null`.

Null-безопасность означает, что в коде либо отсутствуют `null`-значения, либо они обрабатываются явно и безопасно. В Java существуют разные подходы к обеспечению `null`-безопасности, которые позволяют управлять возможностью появления `null` в коде и минимизировать риски, связанные с их использованием.

Итого Nullability - это способность объекта быть `null`.

Null-безопасность - это свойство языка программирования безопасно работать с `null`.

Читать далее

Курсы врут? Уникальные торговые предложения

Level of difficultyEasy
Reading time11 min
Views9K

Купи курс, и тебя обманут, а я расскажу, как. Но самое главное — раскрою секрет, как сделать так, чтобы больше никогда не было проблем с курсами или их отделами продаж!

В мире бизнесов есть термин УТП (USP) — расшифровывается как «уникальное торговое предложение». И это один из главных засранцев, которые заставляют тебя покупать бесполезные курсы, игнорируя здравый смысл, потребности и ценность предложений. Заходя на лендинг какого‑нибудь продукта, мы сразу видим под шапкой и названием кучу УТП, которые разработали маркетологи. Все они разные. Есть для вашего удобства, для выгоды и даже решающие ваши страхи и проблемы. Они направлены на разные сегменты клиентов, но 90% из них — это словоблудие, за которым ничего не стоит. Давай разберем мой топ самых мерзких и даже опасных УТП.

Читать далее

Создаем свою библиотеку на C++ с тестированием, CMake и блекджеком: часть 2

Level of difficultyMedium
Reading time30 min
Views8.1K

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

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

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

Некоторые из вас могут подумать, что мы изобретаем велосипед. А я в ответ спрошу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Добро пожаловать во вторую, скорее всего финальную часть статьи! Здесь мы окончательно допишем код, исправим некоторые ошибки.

Читать далее

Часы Уоррена: устройство, которое совершило революцию в электросетях

Level of difficultyEasy
Reading time10 min
Views27K

Сколько в истории было случаев, когда человек придумывает какое-нибудь устройство для достаточно узкой задачи, а потом выясняется, что совершается революция совсем в другой отрасли? На самом деле подобных случаев немало. Например, «Виагру» разрабатывали как средство нормализации высокого давления, а «Кока-колу» — для облегчения мигрени.

Сегодня расскажем про Генри Уоррена, который просто хотел сделать часы с электроприводом. А в результате получил устройство, синхронизирующее частоту электрической сети на 95% электростанций США. 

Читать далее

Секреты айтишной карьеры, о которых лучше не рассказывать…

Level of difficultyEasy
Reading time11 min
Views89K

Секреты айтишной карьеры, о которых лучше не рассказывать...

...но которыми всё же с нами поделился QA lead "ITQ Group" Сергей Мурашов.

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

Читать далее

Как мы делали просмотрщик BIM-моделей: взлеты, падения и уроки

Level of difficultyMedium
Reading time4 min
Views3.6K

Привет, Хабр! Если вы открыли эту статью, вероятно, вам интересна разработка BIM‑приложений, а конкретно — просмотрщиков 3D‑моделей (Viewer). Возможно, у вас уже есть свое BIM‑приложение, и вы столкнулись с трудностями, или вы только планируете начать разработку и собираете информацию. В любом случае, вы попали по адресу.

Я расскажу вам историю о том, как мы создавали наш 3D Viewer, какие подводные камни встретились на пути, и какие уроки мы извлекли. Поехали!

Читать далее

ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага

Level of difficultyHard
Reading time14 min
Views5.5K

Про байт‑код написано уже немало. Он везде, и никого этим не удивить: его генерирует компилятор, переупаковывает система сборки, «портит» обфускатор и изредка читают программисты. Естественно, для работы с байт‑кодом есть немало инструментов, которые используются в разных областях и на разных платформах. Среди них и ByteWeaver — инструмент для патчинга байт‑кода во время сборки, который может быть полезен разработчикам под Android.

Меня зовут Александр Асанов. Я Android‑разработчик в OK, Tracer, ByteWeaver. В этой статье я разберу, что такое байт‑код, как и зачем с ним работать, расскажу о ByteWeaver и покажу примеры работы с байт‑кодом.

Читать далее

Создаём быстрые gRPC-сервисы с Tonic и Rust

Level of difficultyEasy
Reading time5 min
Views1.7K

Сегодня посмотрим, как с помощью фреймворка Tonic и языка Rust создавать gRPC-сервисы для задач машинного обучения. Если в вашем проекте нужно максимально эффективно строить распределённые системы, а производительность и асинхронное программирование — это то, что вы цените, то Rust в связке с Tonic станет отличным инструментом

Читать далее

Information

Rating
Does not participate
Registered
Activity