Pull to refresh
2
0
Send message

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

Level of difficulty Medium
Reading time 32 min
Views 14K

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

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

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

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

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

Собеседование на Java разработчика. Разбор 1606 вопросов и ответов. Часть 2 (с 170 по 269 вопрос)

Level of difficulty Hard
Reading time 102 min
Views 16K

Всем привет! Меня зовут Владимир Баганов. Я продолжаю серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 269 разобранных вопросов из 1606 вопросов.

Читать далее
Total votes 19: ↑11 and ↓8 +3
Comments 3

Собеседование по Java. Разбор 1606 вопросов и ответов. Часть 1 (с 1 по 169 вопрос)

Level of difficulty Medium
Reading time 127 min
Views 54K

Всем привет! Меня зовут Владимир Баганов. Я хочу начать серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 169 разобранных вопросов из 1606 вопросов.

Читать далее
Total votes 19: ↑11 and ↓8 +3
Comments 14

Как создать анимированные шейдеры в Jetpack Compose

Level of difficulty Easy
Reading time 3 min
Views 2.7K
Jetpack Compose — молодой, но бурно развивающийся фреймворк для разработки под Android, который обладает множеством не всегда очевидных фичей. Сегодня я хотел бы описать одну из таких встроенных возможностей: речь идет об использовании OpenGL-шейдеров. Они позволяют делать красивые анимированные интерфейсы, как на картинке ниже.
image
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 12

Паттерны проектирования на Dart с примерами кода. Часть 1

Level of difficulty Medium
Reading time 10 min
Views 6.7K

Если вы занимаетесь программированием на Flutter, то наверняка сталкивались с задачами, которые можно было бы решить более эффективно и легко, используя уже проверенные практиками решения. В этом и помогают паттерны проектирования на Dart — шаблоны, которые разработчики применяют для решения часто встречающихся проблем. В двух статьях команда Mad Brains рассмотрит 16 паттернов проектирования на Dart, как они могут быть использованы для улучшения качества кода и повышения эффективности разработки.

Читать далее
Total votes 2: ↑1 and ↓1 0
Comments 3

3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

Level of difficulty Easy
Reading time 13 min
Views 240K

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

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

Поэтому сегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.

Читать далее
Total votes 38: ↑37 and ↓1 +36
Comments 198

Вопросы и ответы для собеседования по Kotlin. Часть 1

Level of difficulty Medium
Reading time 14 min
Views 60K
Читать далее
Total votes 2: ↑2 and ↓0 +2
Comments 10

Мой опыт разработки программы для игры в шашки с помощью алгоритма минимакс

Reading time 17 min
Views 10K

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

Мне захотелось написать программу, которая будет играть в шашки на относительно высоком уровне. Для этого я использовал алгоритм минимакс и Unity.

Читать далее
Total votes 21: ↑21 and ↓0 +21
Comments 25

Как работают text2image модели?

Reading time 6 min
Views 18K

Вы, наверное, слышали про dalle-2, midjourney, stable diffusion? Слышали о моделях, которые по тексту генерируют картинку. Совсем недавно они продвинулись настолько, что художники протестуют, закидывая в стоки картинки с призывом запретить AI, а недавно, вообще, в суд подали! В этой статье будем разбираться, как такие модели работают. Начнем с азов и потихоньку накидаем деталей и техник генерации.

Читать далее
Total votes 79: ↑78 and ↓1 +77
Comments 4

Как стать Android разработчиком в 2023

Reading time 6 min
Views 86K

И так, давайте начнем с того, что должен знать и уметь человек, чтобы стать Android разработчиком? Скиллсет будем смотреть по вот этому Roadmap

Читать далее
Total votes 18: ↑16 and ↓2 +14
Comments 33

Как работает Activity. Часть 1

Reading time 12 min
Views 18K

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

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

В первой части совсем немного расскажу про Binder, про то, как происходит запуск Activity, как стартует процесс приложения и как на вызов Activity влияют флаги и launch mode. Во второй части будет про то, как вызываются методы жизненного цикла Activity, что происходит при сворачивании приложения, и более подробно расскажу про старт первой Activity.

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

Полное руководство по модулю asyncio в Python. Часть 2

Reading time 20 min
Views 27K

Публикуем вторую часть руководства по модулю asyncio в Python, в которой представлены разделы оригинала №3 и 4. Читать головокружительную первую часть.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 1

Big O нотация в Swift (часть 2 — Сокращение)

Reading time 3 min
Views 2.5K

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

Читать далее
Total votes 8: ↑6 and ↓2 +4
Comments 15

Регистрация аккаунта разработчика в Apple: что может пойти не так

Reading time 3 min
Views 11K

Чтобы приложение появилось в App Store, нужно заполнить не одну форму, запастись документацией и терпением. В интернете есть гайды, которые подробно рассказывают, как опубликовать продукт. Но не всегда все идет по плану. Мы рассказали историю одной регистрации в Apple Developer Program, которая вместо двух недель затянулась на 3 месяца. О таких нюансах обычно не пишут в официальных инструкциях, но с ними может столкнуться каждый.

Читать далее
Total votes 5: ↑3 and ↓2 +1
Comments 25

Не работай как ИП

Reading time 3 min
Views 16K

Опрос в нашем телеграм-канале показал, что 20% работников ИТ получали серую зарплату или работали по ГПХ/ИП. В комментариях встречалось мнение, что работа по ГПХ/ИП — это благо. Тема подмены трудовых отношений договорными обширная и выходит за рамки одной статьи. Сейчас мы поговорим о работе в качестве ИП, а в следующих статьях затронем ГПХ, самозанятость и работу без договора.

Читать далее
Total votes 77: ↑39 and ↓38 +1
Comments 147

Ученые нашли упражнение, позволяющее худеть, сидя по 10 часов в день

Reading time 6 min
Views 341K


Недавно опять разгорелась дискуссия, как можно похудеть, работая в IT. Так вот, хороший (и научный) способ есть, и он на самом деле проще, чем можно было бы ожидать.


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


Например, было доказано, что независимо от уровня физической активности слишком много сидения увеличивает риск сердечных заболеваний, диабета, деменции и серьезных проблем со спиной. Более половины всех людей в мире сегодня уже страдают от этих проблем, и больше 80% людей в возрасте 60+.


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


Но похоже, есть способ ускорить обмен веществ в организме, даже сидя за ПК. И точно избежать проблем с метаболизмом и ожирением. Несколько недель назад вышла работа ученых под руководством Марка Гамильтона из Хьюстонского университета. Они разработали технику, позволяющую задействовать неожиданное свойство икроножных мышц, и делать для своего организма полноценную тренировку, не вставая со стула. Оказывается, похудеть, работая в IT, — это не так уж и сложно. Испытываю на себе, полёт нормальный. А какие у вас ноги будут прокачанные!

Читать дальше →
Total votes 179: ↑165 and ↓14 +151
Comments 296

Как вывезти наличные доллары (евро или другую валюту) из России. Личный опыт

Reading time 5 min
Views 95K

Как мы вывозили деньги (из России) за рубеж в условиях санкций. (июль 2022)

С чего начиналось.

Привет всем, я Михаил, решили мы с женой поехать в путешествие на 6 месяцев примерно, дело хорошее, но накладное. В обычной жизни взяли бы карты и погнали, но в условиях 2022 года для Русских нужен кэш. А так как путешествие длинное, то и кэша надо много. Цель попасть в Латинскую Америку, купить там машину и дальше уже двигаться на авто. Ну и заодно подать документы на ПМЖ, но это уже другая история.

Читать далее
Total votes 105: ↑73 and ↓32 +41
Comments 111

Oauth 2.1 spring authorization server + SPA

Reading time 4 min
Views 7K

Доброго всем дня уважаемые хабровчане!

До сего момента я являлся лишь читателем этого замечательного ресурса, но вот кажется и пришло время написать мою первую статью.

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

Из не очень приятного, из Oauth 2.1 убраны варианты получения токена.

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

Безопасный HTTPS-прокси менее чем за 10 минут

Reading time 5 min
Views 74K

Это руководство описывает развёртывание HTTPS-прокси с помощью dumbproxy на практически любом Linux-сервере. Потребуется только curl и рутовый доступ.

Читать далее
Total votes 54: ↑53 and ↓1 +52
Comments 85

Что выбрать IT-специалисту: работу по трудовому договору, самозанятость или ИП?

Reading time 4 min
Views 7.1K

Иногда бывает так, что компания, которая ищет сотрудника на ту или иную должность, дает выбор по виду сотрудничества: по трудовому договору, самозанятым или сотрудничество через ИП.

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

После прочтения статьи вы сможете сделать выводы и выбрать наиболее оптимальный для себя вариант.

Читать далее
Total votes 8: ↑5 and ↓3 +2
Comments 22

Information

Rating
5,062-nd
Registered
Activity