Как стать автором
Поиск
Написать публикацию
Обновить
-12
@SUNsungread⁠-⁠only

Волшебник

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

Разработка высоконагруженных API: проблемы, решения, практические рекомендации

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

Ваш проект взлетел. Первые пользователи превратились в тысячи. Тысячи стали десятками тысяч. Метрики в дашбордах рисуют красивую кривую, устремленную вверх. Но есть и другие кривые, которые ползут вверх с не меньшей скоростью. Время ответа сервера. Количество ошибок 502 и 504.

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

Читать далее

Валидация данных в Go с go-playground/validator: полное руководство

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

Валидация входных данных — критически важная часть любого приложения. Без неё ваше приложение подвержено:

— паникам и ошибкам из-за неожиданных nil или невалидных значений,
— некорректной работе бизнес-логики при обработке невалидных данных,
— уязвимостям безопасности (SQL-инъекции, XSS и др.),
— сложностям в отладке из-за непредсказуемого поведения.

Рассмотрим типичный подход к валидации без специализированных библиотек...

Читать далее

Алгоритмы для работы с большими данными в Go: HyperLogLog и Count-Min Sketch

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

Алгоритмы для работы с большими данными

Всем привет! Для начала давайте разберем что такое вообще Алгоритмы для работы с большими данными, основная суть алгоритмов для работы с большими данными  — это эффективная обработка огромных объёмов информации при минимальных вычислительных ресурсах (памяти, CPU, диске). Их суть — жертвовать точностью ради скорости и масштабируемости.

Читать далее

Hibernate. Оптимизму здесь (не) место. Блокировки в БД

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

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

Сегодня мы рассмотрим работу блокировок в базах данных, уделив особое внимание оптимистичному подходу и его реализации во фреймворке Hibernate.  

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

Читать далее

Собираем комплекс для качественного офлайн-перевода текстов, работающий на самом обычном игровом компьютере

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

Всем привет. В последнее время перевод текстов с одного языка на другой уже не вызывает такой головной боли, как раньше: есть несколько качественных онлайн-переводчиков, есть большие нейросети, которые тоже можно попросить перевести текст, — в общем, варианты есть, их довольно много, и они выдают вполне приемлемый результат. Но у всех них есть одно ограничение: они работают онлайн (удалённо). Для кого-то это ограничение несущественно, а для кого-то может быть критично. Мне же просто захотелось иметь что-то, что сможет переводить тексты на хорошем (современном) уровне офлайн (сугубо на моём компьютере). Ну, люблю я, когда всё, что мне нужно, может работать и локально тоже. В общем, ниже я делюсь с вами тем, что мне удалось в итоге собрать, запустить и даже получить удовлетворяющий меня результат.

Читать далее

Ускоряем валидацию UTF-8 в 10 раз (>10 ГБ/с): реализация алгоритма Lemire-Keiser на Go с ARM NEON

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

UTF-8 валидация — одна из базовых операций при работе с текстом, которая выполняется миллионы раз в секунду в современных приложениях. Стандартная реализация в Go, хоть и корректная, далека от оптимальной по производительности. В этой статье расскажу, как мне удалось ускорить валидацию UTF-8 в 10 раз, используя SIMD‑инструкции ARM NEON и алгоритм из статьи «Validating UTF-8 In Less Than One Instruction Per Byte» Джона Кейзера и Дэниела Лемира.

Читать далее

Гид по выбору идеальной палитры для сайта

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

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

В этой статье разберем:

- Как цвета управляют нашим подсознанием.

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

- Где брать готовые палитры и как проверить, что цвета «не конфликтуют».

Читать далее

Почему sync.Map — почти всегда плохая идея

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

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

Сегодня разбираемся, почему sync.Map — выглядит аппетитно, но почти всегда оказывается не тем, чем вы ожидали.

Читать далее

AnLinux: простой способ установить Linux-окружение на Android-телефон без рута

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


Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.

Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Читать дальше →

Кейс: CRM-система для ЖКХ и управляющих компаний

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

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

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

Читать далее

Как принимать метеорологические спутники, не привлекая внимание санитаров

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

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

Читать далее

13 законов разработки ПО

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

Некоторые из них хорошо известны, другие — достаточно нишевые. Но все они очень полезны разработчикам и менеджерам. Любопытно, какие из них вам известны:

  1. Закон Паркинсона.
  2. Закон Хофштадтера.
  3. Закон Брукса.
  4. Закон Конвея (и обратный закон Конвея).
  5. Закон Каннингема.
  6. Закон Старджона.
  7. Закон Завински.
  8. Закон Хайрама.
  9. Закон Прайса.
  10. Эффект Рингельмана.
  11. Закон Гудхарта.
  12. Закон Гилба.
  13. Закон Мёрфи.

Поехали.
Читать дальше →

Что делает код трудным для чтения? Визуальные паттерны сложности

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

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

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

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

Предупреждение! Это туманная и плохо изученная область. В исследовании использовались различные источники: популярные метрики, научные статьи и практические мнения (включая мое собственное). Но в конце пути мы сведем всё ниже к 8 визуально различимым свойствам, которые помогут программистам любого языка улучшить читаемость кода.

Читать далее

Планировщик Go — самый подробный гайд простым языком

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

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

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

Приступить к проектированию

Гармония железа и кода: ускоряем Go, проектируя приложение с учетом архитектуры процессора

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

Представьте, что ваш код работает на 30% быстрее, при этом вы почти его не меняли. Звучит как магия? На самом деле это может стать реальностью, если учитывать архитектуру процессора при проектировании приложения и данных. 

Привет! Я Александр Шакмаев — технический лидер в Cloud.ru. В статье предлагаю разобраться, как небольшие изменения, основанные на знании архитектуры процессора, могут привести к значительному ускорению Go. Готовы раскрыть потенциал вашего кода? Тогда переходите под кат.

Заглянуть под кат

От теории к практике: как раскрыть потенциал NFC с помощью Flipper Zero

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

Все заметили, что технология NFC прочно вошла в нашу повседневную жизнь. Однако, помимо очевидного использования этой технологии, за кулисами существует целый мир экспериментов и исследований для тех, кто хочет заглянуть внутрь технологии NFC. Одно из самых интересных устройств, попавших в мои руки - это Flipper Zero, идеально подходящее для работы с различными протоколами беспроводной связи. В этой статье расскажу о своём опыте, взаимодействия с технологией NFC с помощью Flipper Zero.

Читать далее

Обзор BKHD N100 NAS — Лучшая материнская плата для домашнего NAS

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров38K
Для этого обзора я приобрёл плату BKHD-1264-NAS, которая широко известна в узких кругах строителей NAS и обладателей домашних лаб.

Плата интересна наличием шести SATA портов, четырьмя портами 2.5GbE на чипах Intel i226-V, а также современным и энергоэффективным процессором Intel N100 — и всё это в компактном формате Mini ITX!

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

Читать дальше →

Подключаем длинную линию 1-wire к Ардуино

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

Редкая самоделка на тему «умного дома» обходится без термометров. В интернете есть масса инструкций по подключению, но при этом обычно ограничиваются «классическим», учебно‑демонстрационным вариантом, наверняка его все видели:

Берется какая‑нибудь ардуиноподобная плата, или что‑то из серии ESP, один из выводов GPIO настраивается в прошивке как линия 1-wire, а микросхема DS1820 подключается примерно так:

Читать далее

Безумные и забавные факты о SQLite

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

  1. SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite.

    Её поддерживают три человека. Они не допускают внешних контрибьюторов.
Читать дальше →

Omatsuri: бесплатный инструмент с открытым исходным кодом для упрощения фронтенд-разработки

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

С Новым годом, друзья! 

Сегодня мы поговорим об одном из интересных инструментов для разработчиков. Omatsuri — это открытая платформа, состоящая из 12 удобных утилит для повседневных задач разработчика. Сайт omatsuri.app выполнен в минималистичном стиле и предлагает интуитивно понятный интерфейс. Это инструмент, который явно создан «с душой» для тех, кто ценит функциональность и простоту.

Читать далее

Информация

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