Pull to refresh
30
0
fee1600d @AreD

Кручу байты

Send message

Kafka как хранилище данных: реальный пример от Twitter

Reading time6 min
Views12K
Привет, Хабр!

Нас давно занимала тема использования Apache Kafka в качестве хранилища данных, рассмотренная с теоретической точки зрения, например, здесь. Тем интереснее предложить вашему вниманию перевод материала из блога Twitter (оригинал — декабрь 2020), в котором описан нетрадиционный вариант использования Kafka в качестве базы данных для обработки и воспроизведения событий. Надеемся, статья будет интересна и натолкнет вас на свежие мысли и решения при работе с Kafka.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Сервер Lenovo ThinkSystem SR650 – универсальный солдат

Reading time8 min
Views7.4K
В этом обзоре мы расскажем вам об одном из самых продаваемых серверов в мире – Lenovo ThinkSystem SR650, а также поделимся результатами его нагрузочного тестирования в качестве сервера для СУБД MS SQL Server.

Lenovo ThinkSystem SR650 – это универсальный двухпроцессорный стоечный сервер 2U, который подходит для обработки широкого спектра задач предприятий любого масштаба, например: СУБД, виртуализация и облачные среды, инфраструктура виртуальных рабочих столов (VDI), корпоративные приложения, бизнес-аналитика, большие данные.


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

React 17: Ничего нового?

Reading time5 min
Views24K

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

Многообещающий Concurrent Mode не будет представлен в 17 версии, как и другие нововведения, над которыми активно работает команда. Грядущий релиз является частью стратегии постепенных обновлений.

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

Беспроводное управление моторчиками из Lego при помощи Steam Controller

Reading time3 min
Views7.7K


Когда я был молодым, мне всегда хотелось иметь наборы «техникс» от Lego, чтобы собирать из них всякие крутые штуки. Автономные танки с вращающимися турелями, стреляющими кирпичиками Lego. Но тогда такого набора у меня не было.

И даже обычных кирпичиков от Lego не было. У меня был только друг, у брата которого были все эти дорогие игрушки.

А теперь у меня самого сын такого возраста. И он строит танки, которые… тупо прут вперёд, пока не врежутся в стену :)

И вот, настало время для ESP32 и магии паяльника – соберём для них правильный пульт дистанционного управления!

Нет, я, конечно, знаю о существовании таких пультов. Но ни один из них мне не подходит полностью. Они либо инфракрасные, с технологией 80-х годов, либо слишком крупные. Или дорогие. А главное – ни об одном из них я не смогу сказать сыну: «Я сделал это специально для тебя!»

Так давайте же сделаем новый, улучшенный пульт, чтобы править всеми!
Total votes 15: ↑15 and ↓0+15
Comments9

В Европе одобрили Директиву об авторском праве — почему стриминговые платформы выступают против

Reading time4 min
Views15K
В этом году в Европе начнет действовать Директива об авторском праве. Она обяжет стриминговые платформы внедрить контентные фильтры, которые запретят пользователям загружать на площадку нелицензионный контент (в том числе музыкальный).

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

Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments17

Создание архитектуры программы или как проектировать табуретку

Reading time25 min
Views681K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Total votes 88: ↑85 and ↓3+82
Comments45

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

Reading time4 min
Views2.9K
image

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

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

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

В своём исследовании я обнаружил несколько ловушек, в которые могут попасться организации, внедряющие у себя подобные инструменты.
Читать дальше →
Total votes 13: ↑4 and ↓9-5
Comments2

LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»

Reading time12 min
Views22K
Каждый программист неоднократно сталкивался с необходимостью проверки пользовательского ввода. Занимаясь веб-разработкой уже более 10 лет, я перепробовал массу библиотек, но так и не нашел той единственной, которая решала бы поставленные мною задачи.

Основные проблемы, которые встречаются в библиотеках валидации данных

Проблема №1. Многие валидаторы проверяют только те данные, для которых описаны правила проверки. Для меня важно, чтобы любой пользовательский ввод, который явно не разрешен, был проигнорирован. То есть, валидатор должен вырезать все данные для которых не описаны правила валидации. Это просто фундаментально требование.

Проблема №2. Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста).

Проблема №3. Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде.

Проблема №4. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме.

Проблема №5. Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:
  • поле в интерфейсе может называться совсем по другому
  • интерфейс может быть не на английском
  • нужно различать тип ошибки. Например, ошибки на пустое значение показывать специальным образом

То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок.

Проблема №6. Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений.

Проблема №7. Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля.

Проблема №8. Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности.

Проблема №9. Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации.

Проблема №10. Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации.

3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments71

Имитация показаний датчиков с помощью массива точек пути

Reading time12 min
Views23K


Структура публикации


  • Оговорка про крен
  • Подготовка GPS-трека
  • Как из массива векторов получить углы Крылова-Эйлера
  • Имитация показаний гироскопа
  • Вектор ускорения свободного падения и направление «на север»
  • Имитация показаний акселерометра, компаса и барометра


Для отладки алгоритма, работающего с датчиками инерциальной навигации, может потребоваться имитировать показания этих самых датчиков. Например, вы имеете отладочную последовательность точек пути, имитирующую определённую ситуацию. Вы можете иметь некий GPS-трек, имеющий особенности, или напротив их не имеющий. В моём случае результат полевых испытаний есть, а плата ещё не готова (в производстве) — нужно чем-то заняться.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments4

Об образовательной робототехнике и кружках

Reading time5 min
Views33K
Звезды так сошлись, что в прошлом году я вплотную взялся за образовательную робототехнику. Мне не пришлось организовывать кружок. Школьный LEGO-кружок сам нашел меня – у меня подрос сын.

Сначала я включился в работу кружка помощником тренера и начал готовить команду сына к всемирной олимпиаде по робототехнике. Благо соответствующая экспертиза имеется: я доцент на кафедре электроники в местном университете, преподавал теорию управления и проектирование АСУ ТП, схемотехнику и программирование микропроцессорных систем, конструирование электронной аппаратуры, измерительную технику, обработку экспериментальных данных. Отвечаю за лабораторию измерительных технологий National Instruments. Да и практику прокачал на НИОКР, потом, как предприниматель, монтировал и пускал системы автоматики, сейчас – научный консультант в робототехнической компании.
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments48

Кружок Arduino и не только

Reading time2 min
Views58K
Ознакомившись с опытом различных преподавателей по обучению школьников основам программирования, в том числе и на Хабре, я решил добавить и свои 5 копеек. Работая в школе уже 4-й год, два года из них пытаюсь заниматься со школьниками техническим творчеством. Все начиналось с радиоточки и внутришкольного радио.

image
Читать дальше →
Total votes 49: ↑45 and ↓4+41
Comments69

Визуализируй это

Reading time10 min
Views82K
Несколько лет назад я делал сайт о рыбалке и публиковал на нём карту окресностей города, отмечая интересные места. Я так увлёкся картами, что и сегодня занимаюсь дизайном геосервисов, а на досуге экспериментирую с картографическими визуализациями. Недавно я визуализировал статистику работы московского велопроката, а ранее опубликовал высотную модель города в виде разноцветной сетки улиц.

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


Дома в центре Москвы разного цвета в зависимости от площади здания.
Данные: © Участники OpenStreetMap


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

Я задумал собрать что знаю про картографические визуализации и рассказать об этом. В итоге, у меня получился онлайн-курс «Визуализация геоданных»  —  серия мини-лекций об общих принципах и инструментах для работы с геоданными. К каждой части я собрал ссылки на дополнительные материалы и примеры рабочих файлов, чтобы можно было погрузиться в детали и попробовать что-то сделать самостоятельно. Этот пост собран из материалов курса.
Читать дальше →
Total votes 79: ↑78 and ↓1+77
Comments25

12 игр, которые обучают детей программированию

Reading time10 min
Views287K


Программирование сейчас очень популярно. По всему миру 36 миллионов детей принимают участие в мероприятиях движения «Час программирования». Цель этих мероприятий – помочь детям стать активными, а не пассивными пользователями технологий, а также получить знания, которые в будущем могут помочь устроиться на хорошую работу в нашем все более и более техническом мире.

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

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

Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments32

Обзор железок для занятий робототехникой с детьми

Reading time5 min
Views124K
UPD: к нижеприведенному материалу поступило множество дельных замечаний, поэтому он был полностью переработан: habrahabr.ru/company/makeitlab/blog/252015

Сейчас мы готовим новую площадку для детских занятий. В процессе подготовки стал вопрос выбора платформы, на которой будем обучать. По такому случаю мы подготовили обзор имеющихся платформ с обоснованием выбора. Документ, вроде, интересный получился, решил его здесь опубликовать. Некоторые вещи изложены сильно упрощенно, поскольку текст предназначен не только для хардкорных технарей.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments38

FLProg – альтернативная среда программирования Arduino. Описание проекта

Reading time5 min
Views55K

В предыдущем посте я рассказал о предыстории появления проекта FLProg. Сейчас я хочу поподробнее рассказать о проекте и его состоянии на сегодняшний день.
Основной целью проекта является включение в круг пользователей плат Arduino людей незнакомых с программированием. Это возможно благодаря опыту промышленного программирования, который накапливался годами производителями промышленных контроллеров.
Проект состоит из двух частей. Первая часть это десктоп приложение FLProg представляющее собой графическую среду программирования плат Arduino. Во вторых, это сайт FLProg.ru, с помощью которого члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы, ну и найти необходимую информацию по работе с приложением.
Подробности
Total votes 26: ↑23 and ↓3+20
Comments5

Как конкретно можно сделать детское образование в России лучше (и первый практический шаг)

Reading time10 min
Views60K


У нас 41-43 место из 65 по образованию по исследованию ОСЭР и 49 место по Education Index ООН.

После получения трёх высших, 13 лет я занималась тем, что учила айтишников, учёных и других странных людей, последний проект – Курсера в России. Год назад начала изучать детское образование. Ниже – моё ИМХО, но, думаю, многое вам хорошо знакомо. На мой взгляд, в детском образовании в России есть несколько важных областей для развития.

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

С позиции родителей и преподавателей:
  1. Дети недогружены: знаний даётся куда меньше, чем при СССР, например. С другой стороны они в конце обучения перегружены подготовкой к ГИА, ЕГЭ.
  2. Дети изначально живут в новой информационной среде, которая комфортна для них, но не очень комфорта для учителей.
  3. Дополнительное образование в крупных городах — это, порой, дичайшая логистика, например, нужно посреди дня везти ребёнка на другой конец города.
  4. Проблемы с кадрами: нужно быть реально круто замотивированным, чтобы полноценно и качественно работать с детьми.
Читать дальше →
Total votes 96: ↑86 and ↓10+76
Comments106

Несколько интересностей и полезностей для веб-разработчика #36

Reading time5 min
Views60K
Доброго времени суток, уважаемые хабравчане. Поздравляю всех с наступившим 2015 годом! За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Лучшее от Codrops за 2014 год




Я думаю многие из вас знакомы с потрясающими демками от Codrops. Авторы сайта буквально всегда реализуют интереснейшие UI/UX задумки с помощью HTML/CSS/SVG/JS и подробно рассказывают о том, как они это сделали. А это их собственная мега подборка с лучшими работам. Также рекомендую для вдохновения коллекцию самых популярных пэнов за 2014 год от CodePen.
Читать дальше →
Total votes 74: ↑72 and ↓2+70
Comments7

Учебник программирования для детей

Reading time1 min
Views148K
Сейчас на русском нет актуального учебника по программированию для детей (исправьте, если не прав). Поэтому я решил написать его и выложить в открытый доступ.
 
Читать дальше →
Total votes 56: ↑47 and ↓9+38
Comments65

01 Ссылки для UX-специалистов

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


Читать дальше →
Total votes 60: ↑57 and ↓3+54
Comments13

15 лучших JavaScript-библиотек для построения диаграмм и сводных таблиц

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

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

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

Читать дальше →
Total votes 71: ↑65 and ↓6+59
Comments17

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity