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

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

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

Сказки цифрового города: часть первая — Пакетик TCP

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

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

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

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

Пакетик начал свое путешествие с установления соединения. Он постучал в дверь Серверины, отправив специальный сигнал, называемый SYN (синхронизация). Серверина ответила ему сигналом SYN-ACK, подтверждая, что она готова к диалогу и добавила свой собственный сигнал подтверждения (ACK).

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

Пакетик, заметив, что его подтверждения не приходят вовремя, начал использовать использовал таймауты, о которых ему рассказал волшебник Конфигур (sysctl), настроенные в соответствии с параметрами sysctl.conf (net.ipv4.tcp_retries2 для
количества попыток передачи данных перед считыванием пакета потерянным и net.ipv4.tcp_syn_retries для количества повторных SYN-пакетов). Каждый раз, когда таймаут истекал без получения подтверждения от Серверины, Пакетик повторно отправлял данные, убеждаясь, что каждый бит информации будет доставлен.

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

NFC-видеотека для моих детей

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

В детстве у нас с сестрой была гора VHS-кассет, которые мы бесконечно пересматривали. Современная видеоколлекция моих детей сильно от них отличается. Она полностью цифровая и разбросана по разным сервисам. Я хотел поделиться с ними магией осязаемости носителя из моего детства.

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

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

Несколько лет назад я увидел, как кто-то распечатал любимые музыкальные альбомы с NFC-меткой внутри, и решил сделать что-то подобное для своих детей.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+62
Комментарии25

FUSE: как написать свою файловую систему

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

Меня зовут Максим, я ведущий разработчик в VK. Занимаюсь инфраструктурой доставки электронной почты в проекте Mail.ru. Наша команда разработала и довела до эксплуатации файловую систему (ФС) на FUSE в рамках проекта распределённой почтовой очереди. В проекте требовалось реализовать сетевую ФС, которая сохраняет данные в трёх копиях, в разных ЦОДах. Цель — повысить отказоустойчивость, чтобы даже полный выход из строя одного ЦОДа не приводил к нарушениям SLA. Эта статья для всех, кто интересуется файловыми системами и хранением данных. Мы обсудим:

- зачем писать свою ФС;

- как написать свою ФС с помощью фреймворка FUSE;

- какие подводные камни есть у эксплуатации FUSE в production.

Эта статья — результат трёх лет разработки ФС. Сейчас самое время заварить чай, рассказ будет долгим. 

Заварить чай и читать
Всего голосов 64: ↑64 и ↓0+79
Комментарии15

Используем REM для адаптива: комфортная резиновая вёрстка для всех устройств

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

Все верстальщики рано или поздно сталкивались с болью, которая заключается в адаптиве сайта под различные устройства. Существуют разные технологии, упрощающие подгонку размеров под определённые устройства, например, clamp(). Эта функция удобна, так как позволяет минимизировать использование брейкпоинтов, но у неё есть свои недостатки:

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

Что нужно знать о современном CSS (весна 2024 года)

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

Цель этого руководства — познакомить вас со списком новых (потрясающих) возможностей, недавно появившихся в CSS.

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

Читать далее
Всего голосов 36: ↑35 и ↓1+45
Комментарии11

Как запустить WebRTC на сервере, или как я пилю вебкам

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

Всем привет!

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

ДИСКЛЕЙМЕР: это не бескорыстный акт передачи знаний с моей стороны. Я пытаюсь найти инвестиции для своего проекта и создал чат в тг, где буду постить обновления и какие-то мысли касательно его запуска. Так что если интересно, то подписывайтесь, а еще можете поделиться ссылкой с теми, у кого есть лишние бабки =)

Предыстория

Значит решил я создать сервис для одиноких мужчин, где они могут пообщаться с прекрасными дамами, aka вебкам. Соответственно встал вопрос, как организовать видеосвязь в браузере. Обычно для этого используется WebRTC, эта технология позволяет установить p2p соединение между браузерами для передачи видео, звука и прочих данных в реальном времени с минимальной задержкой. Однако была одна проблема: что делать, если приходит жалоба от пользователя, что ему показали не то (или не показали), что он хотел. Поскольку это p2p соединение напрямую между пользователями, у меня как у владельца сервиса нет возможности провалидировать жалобу. Первое, что пришло в голову это вместо WebRTC использовать MediaRecorder API для записи видео небольшими кусочками и отправки их по вебсокету через сервер, попутно сохраняя. Я набросал прототип и столкнулся с тем, что если получатель пропустил первый пакет (там где есть метаданные), то видео у него не воспроизводится. Пришлось поиском определенного набора байт в первом пакете вычленять эти самые метаданные и сохранять их отдельно для отправки первым сообщением только что подключившемуся получателю, и это даже сработало. Вторая проблема этого решения - это задержка в пару секунд, и это только в локальной сети, что приемлемо для односторонней связи, но для двусторонней уже сомнительно. И третья проблема это то что видео у получателя со временем все больше и больше отстает, и нужно регулярно проматывать видео ближе к концу. Костыльность такого решения меня не устраивала, и я решил использовать WebRTC для связи собеседников и параллельно использовать MediaRecorder для отправки записи от модели к серверу. Некоторое время оно так работало, пока я пилил другие фичи, но неэлегантность этого решения все еще не давала мне покоя, т. к. оно повышает требования к интернет соединению модели.

Читать далее
Всего голосов 21: ↑16 и ↓5+16
Комментарии12

Удобное управление тестовыми окружениями в docker-compose

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

Всем привет, хочу рассказать о своей утилите dcw (Docker Compose Workspace) для удобного управления тестовыми окружениями на базе docker-compose.

Читать далее
Всего голосов 28: ↑28 и ↓0+33
Комментарии19

Кластер MicroK8s

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

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

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

DIY: Ваше собственное облако на базе Kubernetes (часть 1)

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

Мы очень любим Kubernetes и мечтаем чтобы все современные технологии поскорее начали использовать его замечательные паттерны.

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

Да, вы могли бы возразить что Kubernetes для этого не предназначен и почему бы не использовать OpenStack для Bare Metal-серверов а внутри него запускать Kubernetes как положено. Но поступив так, вы просто переложите ответственность с ваших рук на руки OpenStack администраторов. Что добавит как-минимум ещё одну сложную и неповоротливую систему в вашу экосистему.

Зачем так всё усложнять? - ведь на данный момент Kubernetes уже имеет всё необходимое для запуска Kubernetes кластеров.

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

Шпаргалка по рекомендательным системам

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

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

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

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

Неизвестно полезный CSS

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

CSS не отстаёт от JavaScript. Постоянно развивается. Классно же. Мне особенно радостно видеть, как старые задачи, которые я решал при помощи костылей, теперь можно сделать при помощи одного свойства.


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


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


Больше не буду затягивать. Давайте посмотрим, что я вам подготовил.

Читать дальше →
Всего голосов 59: ↑58 и ↓1+75
Комментарии16

Как мне захотелось систематизировать виды тестирования

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

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

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

Применение преобразований PCA и t-SNE для снижения размерности данных

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

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

В этой статье мы рассмотрим методы снижения размерности данных, такие как: «Преобразование главных компонент» (PCA) и "t-SNE" (t-distributed Stochastic Neighbor Embedding). Оба метода обладают своими уникальными характеристиками и предназначены для разных типов данных и задач.

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

Заметки об основах программной архитектуры

Время на прочтение9 мин
Количество просмотров20K
Это вводное руководство для архитекторов программного обеспечения. В настоящее время звание «архитектор» очень популярно во всем мире, но не существует настоящего руководства, как стать архитектором программного обеспечения.

1. Общая концепция архитектуры программного обеспечения
2. Архитектурные стили
3. Технология
4. Софт скиллз (принятие архитектурных решений, методы анализа рисков, навыки подачи материала, отношения с командой менеджеров, ведение переговоров, планирование карьеры архитектора)
5. Принципы проектирования
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии3

Как контролировать задачи в MODX Revolution — делаем TODO виджет для админки

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

В CMF MODX Revolution изначально не предусмотрена возможность ставить задачи и привязывать их к ресурсам. Такое дополнение я тоже не нашел, да и было интересно разобраться в создании виджетов, поэтому придумал решение, как можно быстро реализовать такой функционал на своем сайте. Собственно, в этой статье хочу им поделиться.

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

(Микро)фронтенды и микросервисы с помощью Webpack

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

Привет! Меня зовут Максим, я фронтенд-разработчик компании Тинькофф, лид команды фронтендов, которые пилят международные проекты. Я работал как фронтом, так и бэкером — это дало мне релевантный опыт и в микрофронтендах в том числе.

Статья будет о фронтендах, но сначала предлагаю немного обсудить монолиты. Они бывают разные.

Читать далее
Всего голосов 22: ↑21 и ↓1+22
Комментарии30

Как меняется рынок вакансий системных аналитиков: перспективы, скиллы, зарплаты

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

Коллеги из Chosy собрали цифры по рынку труда для системных аналитиков. Статью разобьем на три части: 

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

2. Покажем срез по международному рынку труда для системных аналитиков: какие зарплаты обещают специалистам в Грузии, Армении, Турции и ряде европейских стран.

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

Бегу читать
Всего голосов 8: ↑6 и ↓2+4
Комментарии7

Теория алгоритма, дающего смысл словам

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

Существующие алгоритмы работающие с о смыслом слов:

Векторное представление слов, GPT-3 - статистика

Алгоритм Леска - подбор значения многозначного слова по статистике встречаемости слов в предложении

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

В других вариантах - по сути поиск закономерностей через нейросети.

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

Deepfake. Реализация технологии замены лиц в видео. Часть 1

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

Deepfake. Выбор архитектуры для реализации. Autoencoder vs GAN.

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

Как настроить SSH-Jump Server

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

Для работы с облачной инфраструктурой рекомендуется создавать SSH Jumpstation. Это позволяет повысить безопасность и удобство администрирования серверов. В этой статье мы расскажем, как настроить единую точку входа для подключений по ssh – SSH Jump Server. Для реализации выбраны два проекта с открытым исходным кодом.

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

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность