Pull to refresh
2
0
Send message

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

Level of difficultyMedium
Reading time32 min
Views14K

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

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

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

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

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

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

Level of difficultyHard
Reading time102 min
Views17K

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

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

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

Level of difficultyMedium
Reading time127 min
Views57K

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

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

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

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

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

Level of difficultyMedium
Reading time10 min
Views6.8K

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

Читать далее
Total votes 2: ↑1 and ↓10
Comments3

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

Level of difficultyEasy
Reading time13 min
Views250K

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

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

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

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

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

Level of difficultyMedium
Reading time14 min
Views63K
Читать далее
Total votes 2: ↑2 and ↓0+2
Comments10

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

Reading time17 min
Views10K

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

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

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

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

Reading time6 min
Views18K

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

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

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

Reading time6 min
Views88K

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

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

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

Reading time12 min
Views19K

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

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

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

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

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

Reading time20 min
Views27K

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

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

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

Reading time3 min
Views2.6K

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

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

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

Reading time3 min
Views11K

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

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

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

Reading time3 min
Views16K

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

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

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

Reading time6 min
Views342K


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


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


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


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


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

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

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

Reading time5 min
Views95K

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

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

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

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

Oauth 2.1 spring authorization server + SPA

Reading time4 min
Views7.1K

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

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

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

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

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

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

Reading time5 min
Views76K

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

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

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

Reading time4 min
Views7.2K

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

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

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

Читать далее
Total votes 8: ↑5 and ↓3+2
Comments22
1
23 ...

Information

Rating
5,127-th
Registered
Activity