Pull to refresh
15
0
Павел @gedeon_by

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

Send message

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети

Level of difficultyMedium
Reading time32 min
Views15K

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

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

Но, это доставляет и неудобства, например, если ты захочешь подключиться или хотя бы увидеть устройство за NAT в благих целях, то ты чисто теоретически не сможешь это сделать — у него относительно тебя нет IP-адреса.

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.
Читать дальше →
Total votes 76: ↑76 and ↓0+76
Comments25

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views184K

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

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

Читать далее
Total votes 191: ↑184 and ↓7+177
Comments177

Софт для самохостинга: что нового в 2023 году

Level of difficultyEasy
Reading time6 min
Views39K


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

В связи с этим стоит внимательнее посмотреть на стандартный софт для самохостинга, а также на последние новинки, которые имеют шанс заменить что-то из стандартного набора.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments92

Кодим безумный пассивный сниффер в виде модуля для Python

Reading time6 min
Views36K


Сразу скажу: то, чем мы с вами будем здесь заниматься, не претендует, скажем, на какую-то промышленную применимость. Более того, я признаю, что мой код в данном примере может быть ужасен, страшен и ненужен. И тем не менее — почему бы не поперехватывать пакеты посреди недели? Так, слегка.

Итак, сегодня мы вот что наколдуем:

1. Реализуем простейший пассивный перехватчик пакетов для TCP и UDP
2. Засунем его в C-библиотеку в виде расширения для Python
3. Приделаем ко всему этому интерфейс итератора, дабы байты сыпались, как из рога изобилия
4.…
5. PROFIT!
Берите стул, садитесь ближе к камину
Total votes 66: ↑60 and ↓6+54
Comments15

Организация react-компонентов с помощью dot-notation и почему я часто прибегаю именно к этому способу

Reading time11 min
Views20K

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

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

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

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

Общее введение в I2P

Reading time22 min
Views86K

В этой статье пойдет речь про I2P — некоммерческую сингулярность сетевой приватности и анонимности, где никто кроме вас не знает куда и кто передает вашу информацию. Сеть I2P (расшифровывается как «Invisible Internet Project», Проект невидимого интернета) — это оверлейная децентрализованная одноранговая сеть. Оверлейная — значит работает поверх других сетей, например, обычного интернета; децентрализованная — распределенная, не имеющая единой точки отказа: упадет один узел, полсети, или во всей сети останется 3 пользователя — I2P все равно будет функционировать. I2P является одноранговой сетью, так как все участники имеют равные права и возможности: каждый пользователь скрытой сети строит свои туннели через других участников и сам является потенциальным звеном в цепочке другого пользователя. При этом естественная сетевая активность никак не компрометирует абонента перед домашним провайдером или участниками скрытой сети.

Читать!
Total votes 42: ↑41 and ↓1+40
Comments9

Что же такого прекрасного в функциональном программировании?

Reading time18 min
Views20K

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

Однако вы можете задаться вопросом: должна же быть какая-то причина того, почему эти адепты настолько восхищены? По моему личному опыту, интерес к функциональному программированию обретают не ленивые и некомпетентные программисты. [Один из тех, кому я показал эту статью, прореагировал интересным образом. Он сказал что-то вроде: «Вообще-то я люблю функциональное программирование, потому что я ленивый и компетентный. Благодаря нему мне не приходится думать о многих вещах».] Скорее наоборот, осваивать его были склонны самые умные кодеры, которых я знал; люди, сильнее всех стремившиеся писать хороший код. (Хотя они обычно были исследователями.) И это вызывает вопрос: отчего же они все в таком восторге?
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments9

FreeRTOS — операционная система реального времени

Reading time13 min
Views29K

Существует целый ряд классов задач, которые должны быть выполнены за строго определённое время и не более. Среди подобных задач можно назвать: срабатывание предохранительных клапанов, катапультирование пилота из терпящего бедствие воздушного судна, срабатывание подушек безопасности у автомобиля, промышленную робототехнику и т.д. В сфере программного обеспечения также существует целый ряд задач, которые должны быть выполнены точно срок — для этого и служат операционные системы реального времени, одной из которых является FreeRTOS. Именно о ней мы и поговорим в этой статье.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments29

Как раскрутить «Социальную сеть Ковчег», если это фантастическая трилогия

Reading time13 min
Views2.4K
Три книги с фантастикой и сайт для чтения – это проект, который длится уже 2 года.
И, чёрт возьми, мне это нравится. Сейчас расскажу, как я делал сайт для чтения своих произведений.

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

image

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

Читать дальше →
Total votes 132: ↑114 and ↓18+96
Comments83

Как избежать 10 частых ошибок в настройке NGINX

Reading time17 min
Views53K


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


  1. Недостаточное количество файловых дескрипторов;
  2. Директива error_log off;
  3. Отсутствие keepalive-соединения с вышестоящими серверами;
  4. Упущение механизмов наследования директив;
  5. Директива proxy_buffering;
  6. Неправильное использование директивы if;
  7. Чрезмерные проверки работоспособности;
  8. Незащищенный доступ к метрикам;
  9. Использование ip_hash, когда весь трафик поступает из одного и того же блока /24 CIDR;
  10. Игнорирование преимуществ вышестоящих групп.
Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments3

Как правильно готовиться к ШАД

Reading time4 min
Views35K

Я, Александр Лыков, кандидат физико-математических наук на мехмате МГУ и уже несколько лет я готовлю своих студентов к ШАД. В этой статье я решил разобрать наиболее важные моменты при подготовке к экзамену.

Читать далее
Total votes 23: ↑14 and ↓9+5
Comments6

Building an Arduino based RFID Emulator

Reading time7 min
Views13K

This project is aimed at creating an experimental device for emulating RFID labels of three widely available components. I simplified the explanation of the process so that it could be easily replicated. I also developed some helpful ideas along the way, including writing a special program for converting a serial number into the transmitted data, which will definitely prove useful.
Total votes 21: ↑20 and ↓1+19
Comments0

Космические рейнджеры или как я работал в «Межпланетном экспрессе»

Reading time5 min
Views23K

Дело было давно, как сейчас помню: 2003-ий год, март месяц, 7-ой класс. Все мысли о предстоящем Дне рождения и о том, что до конца учебного года осталось всего ничего. Где-то на фоне Колин Пауэлл размахивает пробиркой с "сибирской язвой", по миру шагает атипичная пневмония, но мне пофиг. Я иду в магазин компьютерных дисков, чтобы купить игру, которую очень настойчиво рекомендовал приятель.

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

Читать далее
Total votes 63: ↑59 and ↓4+55
Comments29

Водород

Reading time14 min
Views52K

По революционным праздникам в СССР проводились торжественные демонстрации. Для взрослых участие нередко было обязательным. Ну а детям -- им, что ни праздник, всё в радость. Торжественная обстановка, можно помаршировать со взрослыми в стройных колоннах, покричать "ура", поразмахивать красными флажками и надувными шариками...

Шарики. Кажется, именно с них-то всё и началось.

Согласно советским открыткам, демонстрация должна была выглядеть как-то так:

Читать далее
Total votes 293: ↑289 and ↓4+285
Comments206

Universal Radio Hacker — легкий способ исследовать цифровые радиопротоколы

Reading time3 min
Views43K

Universal Radio Hacker (URH) — невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GNU Radio, освоить его можно за пять минут, без мучений.
Главные особенности URH:

  • Работает на всех платформах — на macOS/Linux/Windows, из коробки! Не нужно часами компилять километры зависимостей.
  • Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
  • Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные.
  • Поддерживает передачу — для проведения replay-атаки достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!

В статье мы будем анализировать сигнал пульта от шлагбаума, при помощи народного RTL-SDR (радио из дешевого USB ТВ-тюнера) и macOS.

Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments23

Как получить температуру в -50°C (и ниже!) на дому или вихревая трубка Ранка-Хилша «под микроскопом»

Reading time13 min
Views66K

А что, если я скажу Вам, что можно «подуть» в Т-образную трубку — и с двух других её концов пойдет воздух «сильно минусовой» и «сильно плюсовой» температуры? Похоже на какой-то бред, не так ли? Тем не менее, такое замечательное устройство вполне себе существует и известно очень давно. Ученые до сих пор расходятся во мнениях относительно того, «как же оно всё-таки работает?!». Предлагаем и Вам ознакомиться с этим любопытным эффектом…
Total votes 177: ↑171 and ↓6+165
Comments100

Уроки Symbian OS — фиаско топ менеджеров, колосс на глиняных ногах, или неотвратимость бытия?

Reading time13 min
Views29K


Страшно представить как летит время, но с 1 января 2021 года прошло уже 7 лет, с момента когда корпорация Nokia прекратила поддержку Symbian OS. В 2014 году разработчики ОС окончательно поставили крест на еще недавнем монополисте в сегменте мобильных операционных систем. Как такое вообще возможно? Всего за 2-3 года из абсолютного лидера превратиться в безусловного аутсайдера полностью утратив рынок новых девайсов и еще через пару лет стать официально похороненной платформой.

Как-то полемизируя с коллегой о жизненном цикле ПО прозвучала фраза, что как и любой живой организм программы также имеют свои стадии — рождения, становления и конечно же смерти. Более того, развивая свою мысль мой оппонент утверждал, что благодаря интенсификации технологического прогресса, с каждым новым десятилетием этот жизненный цикл программных продуктов сокращается. При некоторой очевидной схожести процессов протекающих в цифровом мире и мире живой природы, все же на сколько корректно такое сравнение? По сути, если оценить статистику распространенности ИТ-сервисов в мире, за последние лет 30, можно констатировать, что мы с вами стали свидетелями грандиозных, по своим масштабам, взлетов и падений. То, о чем 20 лет назад можно было услышать лишь в «курилках» кремниевой долины, через 10 лет покоряет мир. То, что еще 10 лет назад казалось вечным и непоколебимым — сейчас валяется в руинах. Если мой коллега действительно прав в своих аналогиях, в каком мире мы окажемся через 10 лет? Реальность где OS Android скатилась к околонулевой доле рынка, а ее официальная поддержка прекратилась и осуществляется сообществом маргиналов-олдфагов, а корпорация Apple тем временем продала свое мобильное подразделение и занялась выпуском «микроволновок».

Так все же почему умер Symbian OS? Стратегические ошибки менеджмента, критические изъяны архитектуры, заложенные еще в первые годы становления системы, или все же фатальная неотвратимость жизненных циклов? Об этом и не только мы далее поговорим в статье.
Total votes 42: ↑37 and ↓5+32
Comments106

Поддержание аккуратной истории в Git с помощью интерактивного rebase

Reading time5 min
Views42K

Interactive rebase — один из самых универсальных инструментов Git'а. В этой статье от автора Git-клиента Tower рассказывается, как корректировать сообщения при коммитах и исправлять свои ошибки.

Читать далее
Total votes 55: ↑54 and ↓1+53
Comments44

Эмулятор RFID на Arduino

Reading time7 min
Views28K

Многие читали мой пост "Эмулятор RFID", где я в деталях рассказывал об устройстве EM Marine, о том как намотать антенну, и как сделать RFID-эмулятор из трёх деталей. Но, будем честны, несмотря на гениальную простоту того устройства, оно достаточно сложно для повторения. Не каждый имеет дома осциллограф, для того чтобы поймать резонанс, да и для прошивки ATtiny85 требуется отдельный программатор.

Поэтому я принял решение сделать такой эмулятор, который может повторить даже ребёнок. Все компоненты продаются чуть ли не в каждой деревне. При этом его функциональность может быть даже расширена. Например, можно сохранять в нём несколько карт или можно добавить ещё считыватель, и сохранять все карты в одном устройстве, или же использовать его для… В общем, поехали.
Total votes 56: ↑56 and ↓0+56
Comments26

Страх и ужас SS7

Reading time9 min
Views38K
В одной из недавних статей нашего блога: “Безопасные телефоны, градация прослушек, и методы защиты”, было обсуждение общих принципов атак на сотовые телефоны. Теперь поговорим одном из конкретных векторов, а именно — взломе на основе уязвимости в протоколе: SS7. Так ли страшен черт, как его малюют?
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments14
1
23 ...

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity

Specialization

Frontend Developer
Git
JavaScript
TypeScript
Redux
React