Как стать автором
Обновить
2
0

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

Отправить сообщение

Выжимаем из Go максимум производительности

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров17K

Разработчики, которые используют Go, сталкиваются с задачей выжать максимальную производительность из каждой строки кода. Но что делать, если оптимизировать уже нечего, а увеличивать скорость всё равно надо?

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

Читать далее
Всего голосов 76: ↑74 и ↓2+87
Комментарии40

Простое, но очень нужное устройство. Сигнализатор открытой двери холодильника

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров7.3K
Приветствую, Хабр!



Данное устройство было изготовлено и установлено уже более года назад. Работает отлично и «спасает» от возможных проблем с компрессором. Предыстория такова. Шел март 2023 года, на носу день рождения супруги, полный холодильник продуктов, через пару дней ждем гостей. Открываю дверцу холодильника и понимаю, что в нем нисколько не холоднее, чем в квартире…
Читать дальше →
Всего голосов 34: ↑30 и ↓4+43
Комментарии91

Эффективные трассировки в Go

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.7K

Пакет runtime/trace содержит мощный инструмент для понимания программ Go и устранения неполадок. Функциональность внутри позволяет создавать трассировку исполнения каждой горутины за определенный период времени. С помощью go tool trace command (или превосходного инструмента gotraceui с открытым исходным кодом) можно визуализировать и исследовать данные в этих трассировках.

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

Читать далее
Всего голосов 16: ↑15 и ↓1+15
Комментарии0

Прогнозируем результаты российского кинопроката с помощью ML

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.4K

Результаты российского кинотеатрального проката предсказуемы. До начала съемок самого фильма. С помощью ансамблевых моделей машинного обучения и исторических данных по прокату и характеристикам творческой группы.

Смотреть кино!
Всего голосов 7: ↑5 и ↓2+6
Комментарии13

Мультиван и маршрутизация на Mikrotik RouterOS

Время на прочтение30 мин
Количество просмотров245K
Адаптировано под ROS6 и ROS7. Редакция от 28.12.2021

Введение


Статья ориентирована на начинающих администраторов Mikrotik RouterOS (далее ROS). В ней рассматривается маршрутизация с резервированием для нескольких не связанных multihomed AS каналов интернет, работающих по протоколу IPv4. Так же есть настройки для обеспечения базовой безопасности. «Автоматическая» балансировка исходящего трафика по каналам в данной статье не описана по причине того, что ее реализация на таких исходных данных — это череда компромиссов и ограничений, требующая отдельного рассмотрения. Инструментарий для «ручной» балансировки в статье содержится и приведенные настройки являются хорошей базой для добавления «автоматической» балансировки, как минимум полудюжиной способов.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии24

Обзор библиотеки Go Kit

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров4.2K

Салют, Хабр!

Go Kit предоставляет стандартизированный способ создания сервисов, с ее помощью можно легко реализовать совместимость сервисов. С его помощью можно легко интегрировать различные транспортные протоколы, такие как HTTP, RPC, gRPC, и многое другое, а также реализовывать общие паттерны: логирование, метрики, трассировка. В общем, Go Kit хорошо подходит для разработки микросервисов на go.

Мотивацию создания этой либы разработчики описали так:

Go стал языком сервера, но он по-прежнему недостаточно представлен в так называемых «современных корпоративных» компаниях, таких как Facebook, Twitter, Netflix и SoundCloud. Многие из этих организаций обратились к стекам на основе JVM для создания своей бизнес-логики, во многом благодаря библиотекам и экосистемам, которые напрямую поддерживают их микросервисные архитектуры.

Чтобы достичь следующего уровня успеха, Go нужно нечто большее, чем простые примитивы и идиомы. Ему нужен всеобъемлющий набор инструментов для последовательного распределенного программирования в целом. Go Kit — это набор пакетов и лучших практик, которые обеспечивают комплексный, надежный и надежный способ создания микросервисов для организаций любого размера.

Читать далее
Всего голосов 10: ↑6 и ↓4+4
Комментарии2

Госайтишники никак не могут запилить реестр повесток, а россияне начали платить налог 43% с дивидендов из США

Время на прочтение5 мин
Количество просмотров20K

Почти все самые важные и интересные финансовые новости в России и мире за неделю: на фондовой бирже РФ произошло показательное бритье киви-инвесторов, китайскому рынку акций всё хуже и хуже, Биткоин упорно не растет, а тучи над Чанпэном Чжао продолжают сгущаться.

Читать далее
Всего голосов 46: ↑34 и ↓12+34
Комментарии94

Подбор пароля Wi-Fi утилитой aircrack-ng

Время на прочтение4 мин
Количество просмотров291K
Данная статья написана исключительно в ознакомительных и исследовательских целях. Призываем вас соблюдать правила работы с сетями и закон, а также всегда помнить об информационной безопасности.

Введение


В начале 1990-х годов, когда Wi-Fi только появился, был создан алгоритм Wired Equivalent Privacy, который должен был обеспечивать конфиденциальность Wi-Fi сетей. Однако, WEP оказался неэффективным алгоритмом защиты, который легко взломать.

На смену пришел новый алгоритм защиты Wi-Fi Protected Access II, который сегодня применяют большинство точек доступа Wi-Fi. WPA2 использует алгоритм шифрования, AES, взломать который крайне сложно.
Читать дальше →
Всего голосов 49: ↑26 и ↓23+3
Комментарии30

Здоровая конкуренция в GO. Главное не перехитрить самого себя

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров13K

Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно. Автор игрался c параметром GOMAXPROCS и показал, что увеличение этого параметра не всегда приводит к увеличению производительности. Под конец статьи он подобрал такое значение, которое будет максимально эффективным для его функции, на мое удивление, это значение оказалось равно единице! Т.е. его код работал максимально эффективно, если работал всего на одном ядре процессора! Однако, в одном из комментариев под той статьей я прочел, что все эти изыскания нелепы, поскольку та же самая функция из статьи запущенная всего в один поток оказывается эффективнее любой ее параллельной реализации.


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



Читать дальше →
Всего голосов 34: ↑32 и ↓2+40
Комментарии21

100 промптов для ChatGPT

Время на прочтение10 мин
Количество просмотров47K

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

Читать далее
Всего голосов 26: ↑17 и ↓9+10
Комментарии23

Golang. Паттерн Adapter

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров7.2K

Постараемся рассмотреть шаблоны проектирования на примере языка Go

В первой статье цикла рассмотрим один из самых простых паттернов - Adapter.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии12

Мониторинг и трассировка в Go: от Prometheus до Jaeger

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров9.5K

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

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

Инструменты мониторинга, такие как Prometheus, позволяют нам собирать метрики, настраивать правила оповещения и создавать графики для визуализации данных.

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1+12
Комментарии0

Легкий способ выучить язык (любой)

Время на прочтение7 мин
Количество просмотров11K
Хочу побыть санитаром леса хабра и описать мой опыт и опыт других людей, которых я знаю лично по изучению иностранного языка (любого). Критерий успеха в этом деле я вижу один — когда переводчик не нужен уже (99% времени), ни словарь, ни контекстный. И постараюсь показать как пройти этой же дорогой, до того уровня, который вам нужен.
Без регистрации, СМС, выбрасывания денег (часто больших) и кучи времени. Настолько легко и приятно, насколько это в принципе возможно.

Чтобы таким образом постов с разного рода помощью в изучении языка стало как можно меньше (в идеале ноль). Я не нашел ничего в таких постах за прошлые годы, что бы было как максимум интересно мне, или как минимум (исходя из опыта) полезно тем, кто изучает языки. В 99% это фантазии непонятно кого о том, как «можно было бы» изучать язык, но толку от этого нет, как показывает практика (или это даже вредно).

image
Читать дальше →
Всего голосов 13: ↑4 и ↓9-4
Комментарии27

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность