Pull to refresh
4
0
Андрей @UncleAndy

User

Send message

CPU Load: когда начинать волноваться?

Reading time5 min
Views225K
Данная заметка является переводом статьи из блога компании Scout. В статье дается простое и наглядное объяснение такого понятия, как load average. Статья ориентирована на начинающих Linux-администраторов, но, возможно, будет полезна и более опытным админам. Заинтересовавшимся добро пожаловать под кат.
Читать дальше →
Total votes 152: ↑143 and ↓9+134
Comments87

Как обрабатывать ошибки в Golang – рассказываем на собственном примере

Level of difficultyMedium
Reading time6 min
Views8.4K

Ошибки это один из самых важных аспектов любого языка программирования. То, как обрабатываются ошибки, влияет на приложения многими способами. То, как определяются ошибки в Golang, немного отличается от таких языков как Java, Python, Javascript. В Go ошибки – это значения.

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

Читать далее
Total votes 7: ↑4 and ↓3+3
Comments6

Мои налоги как Испанского ИП(Autonomo). Открыл после одобрения ВНЖ Цифрового Кочевника

Level of difficultyMedium
Reading time3 min
Views17K

На следующий день после одобрения ВНЖ, я открыл испанское ИП (Autonomo), через специальный сервис, который меня зарегистрировал в налоговой и в соцстрахе (Seguridad social), если кому то надо поделюсь ссылочкой, не уверен что тут можно.

У меня как испанского ИП есть 3 обязательства по «налогам»:

1. НДС (VAT)

2. Подоходный налог (IRPF)

3. Соцстрах (Seguridad social)

Читать далее
Total votes 18: ↑12 and ↓6+8
Comments18

Какие документы нужны для подачи на ВИЗУ Цифрового кочевника в консульстве Испании в Москве

Level of difficultyEasy
Reading time2 min
Views5.7K

😏Во первых поделюсь своим мнением думаю что, ЕСЛИ ЕСТЬ ВОЗМОЖНОСТЬ ВЪЕХАТЬ ПО ШЕНГЕНУ И ПОДАТЬСЯ СРАЗУ НА ВНЖ (которое выдается на 3 года), лучше въезжать по шенгену и податься на внж на месте!) 

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

Я даже слышал истории что людям в Москве по каким-то визам отказывали, они приезжали на месте подаваться на ВНЖ, оказывалось что оно уже одобрено.

👉Вот такая отсебятина, страхи и слухи, а теперь по делу

В случае визы можно будет въехать и находится в Испании до 1 года, затем только запрашивать ВНЖ.

Документы:

Читать далее
Total votes 21: ↑12 and ↓9+8
Comments13

Обнаружение утечек памяти в Go через Pyroscope

Level of difficultyEasy
Reading time3 min
Views4.1K

Для обнаружения аномально высокой длительности выполнения отдельных функций (а также избыточного выделения или утечек памяти) используются инструменты профилирования над виртуальной машиной (например, JProfiler или Visual VM для JVM) или интегрированные в выполняемый код, например встроенный механизм при компиляции Go-приложений. Альтернативой может стать использование универсальных механизмов профилирования, которые интегрируются со средой выполнения и отправляют результаты профилирования на сервер, который может анализировать аномальное поведение и визуализировать выделение памяти и время выполнения отдельных функций (и построить flame graph по результатам анализа приложения во время выполнения). В этой статье мы рассмотрим использование Pyroscope совместно с Go для обнаружения утечек памяти.

Читать далее
Total votes 14: ↑13 and ↓1+16
Comments1

Кащеева смерть — защищаем свои пароли с помощью аппаратного хранилища ключей Android

Reading time3 min
Views5.4K

Несколько лет назад меня начала посещать мысль, что менеджеры паролей всё-таки «для честных людей». Как раз все встречные и поперечные стали заявлять, что у них теперь сквозное шифрование… И настали типа спокойные и безопасные времена (ну если не считать миллиардов, которые крадут с криптобирж каждый второй день, прослушки всех этих чатов со сквозным шифрованием, слива баз паролей, взлома LastPass…)

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

Шли годы…

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

Как создать аппаратный эмулятор CD-ROM без паяльника

Level of difficultyMedium
Reading time19 min
Views16K

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

Существует множество решений, как можно установить операционную систему с ISO-образа без записи его на оптический носитель. Я уже затрагивал тему ISO-образов в моих статьях: «Раскрываем секреты загрузочных ISO-образов» и «Что вам нужно знать о внешних загрузочных дисках».

В этой статье я хочу рассказать о ещё одном способе, который, как оказывается, вшит в ядро Linux. Если ваш одноплатный компьютер имеет USB OTG-разъём, и на него возможна установка Linux, то вы c большой долей вероятности можете сделать из одноплатника аппаратный эмулятор привода оптических дисков.

Меня этот способ заинтересовал. Я проверил его сам и, получив положительный результат у себя, решил поделиться с вами.

Я сам узнал много интересного, систематизировал свои знания, поэтому надеюсь, что чтение будет познавательно и интересно для вас.
Читать дальше →
Total votes 94: ↑94 and ↓0+94
Comments17

Как я приложение с Go на Rust переписывал

Level of difficultyEasy
Reading time8 min
Views18K

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

Не так давно решил написать для себя небольшое приложение-бенчмарк для теста HTTP API серверов и написал его на Go. Но размер в 5 с лишним Мбайт, несоблюдение целевого RPS и некоторые другие проблемы заставили посмотреть в сторону более производительного Rust + Tokio + Hyper.

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

Читать далее
Total votes 42: ↑27 and ↓15+20
Comments56

Совместные конфиденциальные вычисления на пальцах

Reading time5 min
Views4K

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

Начну немного издалека, я в целом интересуюсь темой распределенной обработки данных с сохранением конфиденциальности, в частности активно смотрю на развитие такого направления, как Federated Learning. Часто попадаются статьи и материалы на эту тему, в которых наблюдаю некоторую терминологическую путаницу, тк термины Federated Learning и Confidential Computing часто используют как синонимы, но это не совсем так. Может быть я не совсем прав, но набор методов, для "обучения" (learning) и для "вычислений" вообще-то отличаются и не являются подмножеством друг друга. Поэтому в первую очередь хочу высказаться про мое понимание их фундаментальной разницы:

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

Методы обфускации трафика. Гомоморфное шифрование

Reading time3 min
Views6.6K

Схема гомоморфного шифрования (HE)

В последнее время на Хабре всё чаще поднимается тема обфускации/маскировки трафика. Для этих целей разработаны различные инструменты и методы, такие как Pluggable Transports и Project V. Но особый интерес привлекают схемы с использованием FHE (полностью гомоморфного шифрования), поскольку это самый передовой рубеж развития криптографической науки.

Если в двух словах, FHE позволяют производить вычисления над зашифрованными данными без их расшифровки. Это открывает совершенно новые возможности. Например, можно обрабатывать на сервере конфиденциальные данные пользователей без их раскрытия серверу.
Читать дальше →
Total votes 15: ↑13 and ↓2+13
Comments5

Bittorrent с нуля на Go

Reading time15 min
Views21K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

Читать дальше →
Total votes 50: ↑47 and ↓3+53
Comments9

Go 1.20 и арена памяти

Reading time3 min
Views16K

Одной из революционных особенностей Go в сравнении с другими компилируемыми языками стало автоматическое управление освобождением памяти от неиспользуемых объектов (сборка мусора). В то же время она может привести к потере производительности при передаче контроля процессу управления памятью, но альтернативного механизма в Go представлено не было. Начиная с Go 1.20 появляется поддержка экспериментального решения для управления памятью, которое позволяет совместить безопасное выделение динамической памяти и уменьшить влияние интегрированного в скомпилированный код управления памятью на производительность приложения. В этой статье мы рассмотрим основные аспекты использования Memory Arena в Go 1.20.

Читать далее
Total votes 31: ↑28 and ↓3+30
Comments31

VPN Gate, или — неубиваемая Великим Китайским Файрволом распределённая сеть VPN

Reading time3 min
Views71K

Сегодня речь пойдёт о технологии распределённой сети VPN Gate, своего рода недруга Поднебесной в области интернет цензуры. На Хабре много статей на тему SoftEther VPN (нижележащий слой VPN Gate), но нет ни одной технически всесторонней статьи про саму распределённую сеть и такое чувство, что в рунете про неё вообще забыли.

VPN Gate — академический эксперимент Дайу Нобори. Проект представляет собой интернет-сервис научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальных распределенных открытых ретрансляторов VPN».

Отличительной особенностью данной сети является её функционирование в виде роя. То есть каждый желающий пользователь может поделиться своей пропускной способностью с другими. Я знаю, что вы подумали, очередной неудачный dVPN пиар на основе блокчейна.

Однако это не так, данный проект уже насчитывает 8634 узлов и 534 петабайта трафика за всё время существования. К примеру даже у TOR-а узлов — 7 тысяч.

Читать далее
Total votes 68: ↑67 and ↓1+79
Comments101

3D-графика в Go

Reading time9 min
Views9K

В большинстве случаев, когда речь заходит об использовании Go, вспоминается backend или DevOps и в самую последнюю очередь можно подумать об использовании Go для создания мобильных или десктопных приложений. Но в действительности, благодаря возможностям интеграции с нативными библиотеками (в том числе, OpenGL и OpenAL для пространственного звука) Go может использоваться и для создания игр (в том числе для мобильной платформы).

В этой статье мы обсудим несколько библиотек, которые могут помочь в создании 3D-графики на Go и обсудим вопросы портирования приложений на мобильные платформы.

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

Укрепление Nginx с помощью Fail2ban: тестируем и оцениваем «профит»

Reading time10 min
Views21K

«Только запустил Nginx-приложение, а в access.log уже десятки записей с непонятными запросами, переборами паролей и другого» — типичная ситуация для незащищенного сервера. Это следствие работы «ботов» для сканирования белых сетей, поиска открытых портов, сбора информации о версиях запущенных служб и подбора паролей к сервисам.

В статье расскажу, как с помощью open source-инструмента Fail2ban укрепить Nginx и защитить сервисы от взлома. А также продемонстрирую способы блокирования DDoS-атак. Подробности под катом.
Читать дальше →
Total votes 45: ↑43 and ↓2+49
Comments47

Под капотом у компилятора Go: добавление нового оператора в Go — часть 1

Reading time11 min
Views9.7K

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

Мы собираемся изменить компилятор Go, добавив новую (условно) языковую фичу, и собрать модифицированный компилятор, чтобы ее опробовать.

Читать далее
Total votes 17: ↑14 and ↓3+12
Comments2

Разбираемся в Go: пакет io

Reading time8 min
Views84K

Перевод одной из статей Бена Джонсона из серии "Go Walkthrough" по более углублённому изучению стандартной библиотеки в контексте реальных задач.


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


Пакет io является одним из самых фундаментальных во всей стандартной библиотеке. Он предоставляет набор интерфейсов и вспомогательных функций для работы с потоками байтов.


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

Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments31

Величайшие программисты 21 века. Джон-Движок Кармак

Level of difficultyEasy
Reading time9 min
Views48K

Джон Кармак вместе с тёзкой Джоном Ромеро стали родоначальниками игрового жанра FPS. На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов с эффектом присутствия, что стало бомбой для 1993 года — в эпоху пошаговых стратегий и отсутствия скроллинга. Казалось, тут вмешалась чёрная магия…

В принципе, примерно так и есть. В разработке Wolfenstein 3D, Doom и движка Quake Джон Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантированно идёт следом.

Уровень программирования Doom и Quake до сих пор считается непревзойдённым образцом хакерских оптимизаций, а сам Джон Кармак — эталон сверхэффективного разработчика. Благодаря высочайшему качеству программирования Doom стал феноменом, который изменил мир.
Читать дальше →
Total votes 85: ↑81 and ↓4+113
Comments63

Библиотека алгоритмов на графах на языке Go. Часть 1

Reading time5 min
Views9K

Приветствую тебя, дорогой читатель! Мне 21, я студент и младший Go-разработчик, а это - мой первый пост на Хабре. Недавно в компании с одногруппником мы решили взяться за амбициозный проект и я решил, что он, как никакой другой, подходит под первую статью. Проект заключается в создании библиотеки, содержащей основные алгоритмы на графах.

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

Когда TCP-сокеты отказываются умирать

Reading time10 min
Views32K

Когда TCP-сокеты отказываются умирать

В поисках причин, почему установленные соединения не разрываются в некоторых случаях, я набрёл на отличную статью в блоге Cloudflare. Которая в итоге помогла найти не только решение моей проблемы, но и помогла лучше понять как работают таймауты TCP соединений в Linux.

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

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis