Pull to refresh
8
16
Сергей @serginho

Программист

Send message

Сначала войдите через Телеграм

Reading time5 min
Views38K

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

Читать далее
Total votes 56: ↑53 and ↓3+61
Comments51

Используйте Arc<[T]> вместо Vec<T>

Level of difficultyMedium
Reading time13 min
Views5.8K

В этой статье я хотел бы поговорить о том, почему вы могли бы предпочесть использование Arc<[T]> вместо Vec<T> в качестве варианта по умолчанию в вашем Rust-коде.

Читать далее
Total votes 16: ↑15 and ↓1+17
Comments19

WebRTC. Как установить p2p соединение между браузерами

Level of difficultyEasy
Reading time3 min
Views4.2K

WebRTC позволяет браузерам обмениваться информацией напрямую без сервера. Можно передавать видео, звук и данные. Установить WebRTC соединение можно разными способами. В статье описано как WebRTC соединение устанавливается между пользователями редактора схем dgrm.net.

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

Практическое руководство по Rust. 3/4

Level of difficultyMedium
Reading time26 min
Views5.1K



Hello world!


Представляю вашему вниманию третью часть практического руководства по Rust.



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


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Total votes 21: ↑20 and ↓1+26
Comments0

Как в Node.js контролировать потребление памяти при обработке сетевых запросов

Level of difficultyMedium
Reading time10 min
Views6.5K

Всем привет! Я Виктор Кугай, руководитель команды разработки спецпроектов в Тинькофф. Мы создаем геймификационные проекты, основанные на данных, чтобы познакомить пользователей с экосистемой компании и повысить узнаваемость бренда.

Расскажу, как с помощью Node.js Streams и механизма Back Pressure протокола TCP реализовать пакетную обработку сотен гигабайтов данных на машинах с жестким лимитом памяти.

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

Как работает код, который спит месяц

Level of difficultyMedium
Reading time7 min
Views12K

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

Тем не менее, если вы любите писать код с долгими периодами ожидания, потому что он хорошо согласуется с вашей моделью мышления, то Restate поможет вам реализовать это в полной мере. Если же вы цените устойчивое выполнение, но скептично относитесь к долго выполняющимся обработчикам и проблемам с их версионированием, то для этого есть решение. Ниже описаны несколько способов получить те же свойства путём добавления в этот механизм устойчивого обмена сообщениями и состояния.
Читать дальше →
Total votes 30: ↑26 and ↓4+39
Comments10

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

Reading time8 min
Views5K

«У вас отличные технические скиллы, но вам нужно улучшить навыки общения». — Ваш менеджер.

По мнению разработчика ПО Джордана Катлера*, такая обратная связь может фрустрировать программиста. Почему? Вероятно потому, что тот всегда был уверен: в своей должности ему достаточно «общаться» с помощью кода. Но нет. Зачастую концентрация только на коде ограничивает потенциал развития и продвижения по службе.

Преуспевание в коммуникациях — комплексная задача, и под катом автор рассматривает лишь то, что касается публичных выступлений. А именно:

— Наиболее важные нюансы языка тела, формулировок и тональности;

— Создание структуры презентации, которая заставит людей вас слушать.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

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

Мобильные экранчики в ваших проектах: большой и понятный о гайд о различных дисплеях

Level of difficultyMedium
Reading time18 min
Views23K
image


Пожалуй, немалая часть моих читателей так или иначе интересуется DIY-тематикой. И в различных самодельных девайсах порой есть необходимость вывести какую-либо информацию на дисплей, будь это текст, графики или даже какая-то анимация! Для разных задач существуют самые разные дисплеи и в сегодняшнем материале я хотел бы систематизировать и собрать подробнейший гайд об использовании дисплеев с нерабочих мобильных телефонов: какие бывают протоколы и шины данных, как читать схемы устройств и определять контроллеры дисплеев, какие дисплеи стандартизированы, а какие придётся реверсить самому и как быть с подсветкой. В практической части статьи мы подключим дисплей по протоколу MIPI DBI к RP2040 с использованием DMA. Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 88: ↑86 and ↓2+106
Comments116

Валидация данных на уровне бизнес-логики приложения

Level of difficultyMedium
Reading time2 min
Views3.6K

Данная статья продолжает тему статьи «Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя».

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

Подобная задача предельно типовая и поэтому должна иметь типовое решения. Далее рассматривается решение, основанное на трёхслойной архитектуре, в которой каждый слой (layer) состоит из трёх подслоёв (sublayer). Такая архитектура была описана в статье «Пример описания многослойной архитектуры, основанной на использовании наборов подслоёв и иерархии моделей данных».

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

При получении запроса функционал веб‑сервиса десериализует данные пользователя в объект типа UserDTO. В этом объекте в поле Email находится адрес электронной почты нового пользователя. Этот адрес электронной почты должен быть уникален на уровне соответствующего поля таблицы Users, в которой в базе данных хранятся данные пользователей приложения.

Читать далее
Total votes 6: ↑2 and ↓40
Comments29

13 конфигураций Kubernetes, которые ты должен знать в 2k24

Level of difficultyEasy
Reading time10 min
Views15K

Поскольку Kubernetes продолжает оставаться краеугольным камнем оркестрации контейнеров, освоение его механизмов и возможностей становится обязательным для специалистов DevOps. В 2024 году некоторые конфигурации Kubernetes выделяются среди прочих благодаря функциональности в части автоматизации и безопасности, а также улучшения производительности в облачных (cloud-native) окружениях. В данной статье рассматриваются 13 ключевых конфигураций Kubernetes – предлагается глубокое погружение в каждую из них со сценариями применения, преимуществами и примерами кода.

Читать далее
Total votes 16: ↑12 and ↓4+8
Comments14

«Плывите, сосиски»: гайд по командной работе

Level of difficultyEasy
Reading time34 min
Views4K

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

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

Это руководство делалось студентами экспериментального пространства для студентов экспериментального пространства (поэтому далее может проскакивать лексика университетов), но мы подумали, что такое руководство может помочь как другим студентам, так и людям, которые в своей профессиональной практике столкнулись с проблемами. Если отстраниться от конкретных студенческих примеров, то логику в этом руководстве можно спокойно переложить и на ситуацию работников в компаниях либо в стартап-проектах.

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

Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя

Level of difficultyMedium
Reading time10 min
Views8.3K

Слой Application - это не только про оркестрацию, но еще немного про бизнес-логику. Следует это простить и принять внутри себя. А иначе попытки продвинуться дальше в написании кода съедят программиста-перфекциониста живьем.

Можно долго искать решения, читать различные комментарии и книги про разделение бизнес-логики от приложения. И все равно ваша конкретная ситуация будет казаться вам уникальной, как будто ничего нельзя сделать либо надо снова переписывать Domain слой, дабы ни одно зернышко бизнес-логики не выпало за его пределы. А можно просто закрыть глаза на некоторые моменты, забыть об идеале и спать спокойно, рассчитывая, что все чудесным образом само разрулится.

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

Cloudflare открыла код Rust-фреймворка для программируемых сетевых сервисов — Pingora

Level of difficultyEasy
Reading time6 min
Views5.2K



Мы гордимся тем, что открываем исходный код Pingora — фреймворка на Rust, который мы используем для создания сервисов, обеспечивающих значительную часть трафика в Cloudflare. Pingora выпускается под лицензией Apache 2.0.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments2

Обзор библиотеки Actix в Rust

Level of difficultyEasy
Reading time6 min
Views4.5K

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

Actix появился на свет благодаря Николаю Киму, также известного в сообществе под ником fafhrd91. Николай создал экосистему, которая позволяет строить масштабируемые, надежные веб-приложения и микросервисы. Actix основан на модели акторов, концепции, которая была впервые предложена в 1973 году для симуляции активных компонентов в распределенных системах.

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

Туннелирование трафика через RDP-соединение

Level of difficultyMedium
Reading time2 min
Views12K

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

rdp2tcp - инструмент для туннелирования трафика и проброса портов через существующую RDP-сессию. Сама работа инструмента устроена следующим образом (оригинал):

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

«Ньютон» – мультитул для гитаристов

Level of difficultyEasy
Reading time5 min
Views17K

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

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

Краткий обзор поведенческих паттернов в Rust

Level of difficultyEasy
Reading time6 min
Views4.2K

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

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

Паттерны можно реализовать на любом ЯПе и сегодня рассмотрим, как их реализовать в Rust.

Читать далее
Total votes 16: ↑11 and ↓5+8
Comments18

Игра змейка на ардуино

Level of difficultyEasy
Reading time3 min
Views5.3K

Игра змейка на ардуино нано.

Логика игры проста, поедая яблоки змейка вырастает на один светодиод, если змейка натыкается на саму себя то вся матрица загорается красными светодиодами обозначая проигрыш. После этого игра начинается сначала.

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

Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20

Level of difficultyEasy
Reading time4 min
Views12K

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

Сегодня рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.

Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.

Читать далее
Total votes 22: ↑15 and ↓7+13
Comments201

Итак, вы думаете, что знаете Git? Часть третья: реально большие репозитории

Level of difficultyEasy
Reading time7 min
Views19K


Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.

Вам хочется использовать ванильный Git, чтобы управлять репозиторием с объёмом 300 ГБ в 3,5 млн файлов, которые без проблем получают пуш каждые 20 секунд от 4000 разработчиков? Тогда читайте дальше!


Вот агенда блога — наша блогенда:


Читать дальше →
Total votes 30: ↑28 and ↓2+36
Comments30

Information

Rating
337-th
Location
Россия
Registered
Activity