Pull to refresh
0
0
Евгений Бескончин @inf2k

User

Send message

8 инструментов для разработчиков, которые стоит попробовать

Level of difficultyEasy
Reading time5 min
Views6.9K

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

Читать далее
Total votes 12: ↑10 and ↓2+11
Comments4

Асинхронный Rust в трех частях. Часть вторая: Tasks

Level of difficultyEasy
Reading time12 min
Views1.8K

Во введении мы сказали, что async/await это про futures и задачи. В первой части мы рассмотрели futures и теперь пришло время задач. Благо, мы с ними уже встречались, хоть мы их так и не называли.

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

Введение в Traefik 2.0

Reading time13 min
Views154K

Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.


Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:


  • обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах;
  • осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами;
  • обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети;
  • организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).

В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.


image

Читать дальше →
Total votes 13: ↑12 and ↓1+16
Comments31

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

Level of difficultyEasy
Reading time13 min
Views472K

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

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

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

Читать далее
Total votes 33: ↑32 and ↓1+36
Comments206

Как поднять OpenVPN сервер на Ubuntu 22.04?

Level of difficultyMedium
Reading time5 min
Views107K

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

Присоеденится
Total votes 11: ↑4 and ↓7-3
Comments31

Пошаговое повышение производительности алгоритма

Reading time11 min
Views1.9K

Недавно мне довелось работать над новым алгоритмом приближённого поиска ближайших соседей, который называется RaBitQ. Автор этого алгоритма уже предоставил достаточно скоростную реализацию на C++. Я попытался переписать этот алгоритм на Rust (ещё один случай «а почему бы не переписать на Rust»). Однако, я обнаружил, что моя реализация гораздо медленнее оригинальной. Далее я расскажу, как шаг за шагом доработал её производительность.

Читать далее
Total votes 10: ↑8 and ↓2+13
Comments4

Развлекаемся с итераторами в Go

Level of difficultyEasy
Reading time4 min
Views2.7K

Релиз версии Go 1.23 добавил поддержку итераторов и пакет iter. Теперь можно перебирать константы, контейнеры (map, slice, array, string) и функции. Сначала создание итератора показалось мне неудобным, хотя в то же время его использование выглядело простым.

Моя проблема с подходом к итераторам в Go заключается в том, что их нельзя «связывать» так,как это можно делать в JavaScript:

Читать далее
Total votes 10: ↑10 and ↓0+12
Comments3

Паттерны многопоточности в Go

Level of difficultyEasy
Reading time16 min
Views10K

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

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

Читать далее
Total votes 24: ↑22 and ↓2+25
Comments12

Пишем калькулятор на Rust с GUI

Level of difficultyEasy
Reading time18 min
Views16K

Зачем еще один калькулятор? Да незачем, просто как тестовый проект для рассмотрения GUI-библиотеки.

Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.

Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.

Читать далее
Total votes 23: ↑22 and ↓1+26
Comments85

Введение в AI Selfie Background Remover с использованием TensorFlow.js для React-приложений

Level of difficultyMedium
Reading time4 min
Views1.7K

Я создал "React Selfie AI Background Remover" — компонент React, который использует TensorFlow.js для удаления фона с изображений людей прямо в браузере.

✨ Основные особенности:

🤖 Использует MediaPipe Selfie Segmentation для точной сегментации объектов.

⚙️ Легко интегрируется в любое React-приложение.

🖼️ Доступно live demo для тестирования.

Вы можете найти компонент здесь:

📦 NPM

💻 GitHub

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

Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

Level of difficultyMedium
Reading time25 min
Views10K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я пишу код на С++ для систем хранения данных в YADRO. Помимо основной работы, интересуюсь машинным обучением и его возможностями, в том числе на «плюсах». Недавно мне стало интересно разобраться, как развернуть модель компьютерного зрения на мобильном устройстве с операционной системой Android.

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

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android. 

В первой части цикла мы:

• создадим проект в IDE Android Studio,

• реализуем сессию непрерывного захвата изображений камеры,

• преобразуем изображения в матрицу OpenCV, чтобы сделать дальнейшую работу удобной.

Читать далее
Total votes 27: ↑26 and ↓1+30
Comments6

Эти документы помогут объяснить ФНС РФ, что человек не должен подавать отчет о движении денег по зарубежным счетам

Reading time12 min
Views4.5K

Сейчас идет период вопросов от ФНС по финансовым счетам физлиц-резидентов РФ открытых за пределами территории РФ, в прошлом или даже позапрошлом году, так как ФНС добирается до сведений переданных партнерами РФ по CRS, там где еще работает.

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

Мне показалось, что сейчас будет полезно составить несколько письменных документов, которые упростят соприкосновение с ФНС по вопросам зарубежных счетов, позволят быстро отписаться от вопросов налоговиков.

Читать далее
Total votes 12: ↑9 and ↓3+9
Comments17

Kotlin Coroutines. Часть 1: Первое погружение

Reading time10 min
Views10K

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

Меня зовут Соловьев Андрей, я Java-разработчик в «Рексофт». Сегодня мы поговорим про Kotlin Coroutines. Это моя первая серьезная публикация, и я буду рад вашему фидбеку.

Ну что ж, давайте начинать!

Читать далее
Total votes 13: ↑11 and ↓2+11
Comments8

Structured concurrency в Swift

Reading time12 min
Views13K

Примечание переводчиков: В Swift 5.5 появилась новая концепция языка async/await. Мы решили опубликовать перевод статьи, чтобы разобраться с structured concurrency.

За время подготовки перевода оригинал успели переписать, и в статье ниже мы совместили обе версии: сначала идет развернутая версия, а в конце — краткие чек-листы с избранной информацией.

Если у вас есть код, который нужно запускать одновременно с другим кодом, для работы важно выбрать правильный инструмент. В статье мы:

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

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

Как сделать удобное взаимодействие с Kotlin из Swift: обзор проблем и решений

Reading time14 min
Views3.2K

В июне 2022 года наш технический директор Алексей Михайлов выступал на конференции мобильных разработчиков Mobius — рассказывал о том, какие есть проблемы в работе с Kotlin со стороны Swift, и рассматривал способы их решения. Эта статья — первая часть транскрипта этого выступления.

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

Как зарегистрировать аккаунт разработчика в Google Play в 2024 году: пошаговая инструкция

Level of difficultyEasy
Reading time4 min
Views14K

Мы часто помогаем клиентам не только с модерацией приложений, но и с регистрацией аккаунта разработчика в Google Play. Казалось бы — что такого? Вводишь данные и готово. Но лицензия платная, а на пользователях РФ санкции. Как в таких реалиях создать аккаунт, чтобы опубликовать мобильное приложение — рассказываем в статье.

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

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views296K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 273: ↑272 and ↓1+323
Comments353

Bitcoin in a nutshell — Cryptography

Reading time12 min
Views120K
Одна из причин, почему Bitcoin продолжает привлекать столько внимания — это его исключительная «математичность». Сатоши Накамото удалось создать систему, которая способна функционировать при полном отсутствии доверия между ее участниками. Все взаимодействия основаны на строгой математике, никакого человеческого фактора — вот в чем была революционность идеи, а не в одноранговой сети, как многие думают. Поэтому первую главу я решил посвятить именно математическим основам Bitcoin.

Ниже я постараюсь объяснить вам самые базовые вещи — эллиптические кривые, ECC, приватные / публичные ключи и так далее. По возможности я буду иллюстрировать свои слова примерами кода, преимущественно на Python 2.7, если что-то непонятно — спрашивайте в комментариях.

intro
Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments10

«Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

Reading time5 min
Views52K
«Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
— к/ф «Трасса 60»



Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

Содержание


Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
Глава 3 What You Can't SayО чем вы не можете сказать.
Глава 4 Good Bad AttitudeСлово «хакер».
Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
Глава 6 How to Make WealthКак стать богатым.
Глава 7 Mind the GapОсторожно, разрыв.
Глава 8 A Plan for SpamПлан для спама.
Глава 9 Taste for MakersВкус — созидателям.
Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
Глава 12 Beating the AveragesLisp: побеждая посредственность.
Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
Глава 14 The Dream LanguageБыть Популярным, часть 2.
Глава 15 Design and ResearchПроектирование и исследование.

Под катом хронология переводов и благодарности.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments25

Разблокируем интернет с помощью Mikrotik и VPN: подробный туториал

Reading time3 min
Views154K

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

В качестве VPN я выбрал SoftEther: он настолько же прост в настройке как и RRAS и такой же быстрый. На стороне VPN сервера включил Secure NAT, других настроек не проводилось.

В качестве альтернативы рассматривал RRAS, но Mikrotik не умеет с ним работать.  Соединение устанавливается, VPN работает, но поддерживать соединение без постоянных реконнектов и ошибок в логе Mikrotik не умеет.

Настройка производилась на примере RB3011UiAS-RM на прошивке версии 6.46.11.
Теперь по порядку, что и зачем.
Читать дальше →
Total votes 44: ↑40 and ↓4+63
Comments75
1

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Lead
From 300,000 ₽
.NET
ASP.NET MVC
JavaScript
React
TypeScript