Pull to refresh
59
Karma
0.3
Rating

Программист

HDMI OLED-дисплей в стиле стимпанк

RUVDS.com corporate blog Abnormal programming *CAD/CAM *DIY
Translation

Чёрт возьми! Я не мог оставить без внимания тот факт, что мой предыдущий дурацкий проект получил настолько живой отклик. Вряд ли мне когда-либо удастся превзойти такое соотношение приложенных усилий и полученных за них «интернет-очков». Дурацкий, глупый и бесцельный — похоже, это мои дежурные слова. А что станет наиглупейшим апгрейдом для глупейшего дисплея, как ни придание ему вида а-ля стимпанк? Но в моём представлении это никак не цепляние к шляпе покрашенных в золото шестерёнок. Если я говорю стимпанк, то подразумеваю фрезерованную латунь и накатку.
Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Views 5.4K
Comments 8

От микросервисов к монолиту — маршрут построен

AGIMA corporate blog PHP *API *Microservices *

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

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 3.6K
Comments 13

Знакомство с ООП на примере JavaScript

RUVDS.com corporate blog JavaScript *Programming *ООP *
Translation
Tutorial

Всем привет! В этой статье мы рассмотрим основные характеристики объектно-ориентированного программирования (ООП) на практических примерах JS-кода. В ходе обсуждения мы осветим основные принципы ООП, а также ответим на вопросы, почему и когда этот стиль может быть полезен.
Читать дальше →
Total votes 44: ↑39 and ↓5 +34
Views 19K
Comments 32

KiCad: скругление дорожек и каплевидные пады, часть 2

RUVDS.com corporate blog Python *Manufacture and development of electronics *
Translation

В первой части мы разобрались, зачем вообще могут быть нужны скруглённые дорожки и каплевидные подводы, а также реализовали необходимые для этого плагины. Эта же часть будет посвящена подстройке полученных плагинов под версию KiCad 6, в которой, к сожалению, пока полноценного функционала для скругления не появилось.
Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Views 3.9K
Comments 4

Как я делал сайт визитку на Angular

JavaScript *Angular *

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

Читать далее
Total votes 11: ↑11 and ↓0 +11
Views 7.4K
Comments 18

Пишем чистый код при помощи деструктуризации объектов в JavaScript

Skillbox corporate blog JavaScript *Programming *Lifehacks for geeks
Translation

Сравниваем традиционный способ извлечения значений и деструктуризацию (ES6) в JavaScript

В этой статье мы рассмотрим традиционное присваивание значений из объектов в переменные и новый синтаксис деструктуризации в ES6. Материал адаптирован на русский язык совместно с тимлидом группы frontend-разработки в Skillbox Иваном Казанцевым.

Читать далее
Total votes 26: ↑21 and ↓5 +16
Views 9.3K
Comments 20

SQL HowTo: разные варианты работы с EAV

Тензор corporate blog PostgreSQL *SQL *Database Administration *ERP-systems *

Соблазн использовать модель EAV (Entity-Attribute-Value) при организации структуры БД весьма велик, особенно когда предметная область заранее плохо известна (или разработчик просто не хочет в нее углубляться). Это ведь так удобно - создать "универсальный" способ описания характеристик объектов, который больше не потребует доработок базы ни при появлении новых типов объектов, ни при возникновении новых атрибутов...

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

Читать далее
Total votes 24: ↑23 and ↓1 +22
Views 4.5K
Comments 7

Как Kubernetes создает и запускает контейнеры: Иллюстрированное руководство

DevOps *Kubernetes *
Sandbox
Translation

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

Kubernetes позволяет выполнять много полезной работы без глубокого понимания деталей. Утилита командной строки kubectl и дашборды в Openshift помогают управлять вашими контейнерами. Однако, как только вы заглянете глубже в Kubernetes все может быстро усложниться.

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

Такая аналогия правдива и для работы с Kubernetes. Просто сказать: "Давайте оставим это на усмотрение разработчиков" - недостаточно, с таким же успехом можно предоставить выбор системы кондиционирования обычным рабочим со строительной площадки. За каждой хорошо спроектированной системой стоит как множество деталей, так и архитектор, который понимает их значение.

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

Читать далее
Total votes 11: ↑9 and ↓2 +7
Views 20K
Comments 2

Согласование импедансов: о пользе формул

Manufacture and development of electronics *Electronics for beginners

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

Подставить значения
Total votes 35: ↑35 and ↓0 +35
Views 7.3K
Comments 10

18 атрибутов хорошей PCB

Programming microcontrollers *Manufacture and development of electronics *

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

Читать далее
Total votes 44: ↑37 and ↓7 +30
Views 8.9K
Comments 76

JavaScript: ускоряем загрузку изображений с помощью Imgproxy, Cache API и Service Worker API

Timeweb Cloud corporate blog Website development *JavaScript *Node.JS *



Привет, друзья!


В этой статье я хочу поделиться с вами результатами небольшого эксперимента, связанного с ускорением загрузки изображений с помощью Imgproxy, Cache API (далее — кеш) и Service Worker API (далее — СВ).


Мы с вами разработаем простое приложение на React, в котором используется несколько изображений, и добьемся того, что загружаемые изображения будут более чем в 10 раз легче (меньше по размеру) оригиналов (imgproxy), а также практически мгновенной загрузки (доставки) изображений (СВ и кеш).


Обратите внимание: в части, касающейся imgproxy, особых препятствий на пути использования рассматриваемого в статье подхода к загрузке изображений в продакшне нет, но в части, касающейся СВ, следует проявлять крайнюю осторожность, поскольку данная технология является экспериментальной — это означает, что поведение СВ во многом определяется конкретной реализацией (браузером), что в ряде случаев делает его довольно непредсказуемым. Возможно, для кеширования изображений лучше предпочесть старые-добрые HTTP-заголовки Cache-Control и Etag. Но эксперимент на то и эксперимент, чтобы, в том числе, искать новые ответы на старые вопросы.


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


Остальных прошу под кат.

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 4.7K
Comments 13

Руководство по CI/CD в GitLab для (почти) абсолютного новичка

Git *DevOps *
Sandbox

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


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


результаты


В статье будет рассмотрена базовая настройка непрерывной интеграции и поставки для проекта библиотеки классов на .Net Core в GitLab, с публикацией документации в GitLab Pages и отправкой собранных пакетов в приватный фид в Azure DevOps.


В качестве среды разработки использовалась VS Code c расширением GitLab Workflow (для валидации файла настроек прямо из среды разработки).

Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 136K
Comments 8

Tile server на коленке: навигация по старинным картам

Python *Django *Nginx *OpenStreetMap *ReactJS *

Я являюсь full stack разработчиком на культурно-историческом IT портале Königsland, который успешно начал свою работу примерно месяц назад. Этот ресурс посвящается культуре и истории Восточной Пруссии и является своеобразной летописью времен, которая больше всего напоминает вирутальный музей, где можно получить довольно полную информацию об истории этого великого края, а эта информация пополняется по мере возникновения у меня свободного времени.

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

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 3.8K
Comments 14

Согласование импедансов: переходные процессы и переходные отверстия

Manufacture and development of electronics *Electronics for beginners

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

Металлизировать отверстия
Total votes 68: ↑67 and ↓1 +66
Views 11K
Comments 25

Ставим электромотор на сап борд своими руками

Robotics DIY Transport Electronics for beginners

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

Последнее не для нас - надо ставить электромотор.

Поставить мотор!
Total votes 48: ↑47 and ↓1 +46
Views 18K
Comments 33

Docker: заметки веб-разработчика. Итерация третья

Timeweb Cloud corporate blog Node.JS *ReactJS *DevOps *VueJS *


Привет, друзья! Продолжаю делиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических. Если быть более конкретным:



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


Репозиторий с кодом приложения.


Если вам это интересно, прошу под кат.

Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Views 11K
Comments 7

Мой опыт с Webpack 5 Module Federation

Website development *JavaScript *ReactJS *Microservices *
Tutorial

Всем привет. Меня зовут Михаил, я - фронтенд-разработчик в Лиге Цифровой Экономики.

В последнее время я пробую себя в должности руководителя направления фронтенд-разработки, однако я хочу с вами поделиться опытом разработки приложения с применением Webpack Module Federation, о том, какие задачи приходилось решать и проблемы, которые возникли на этом пути. Не буду вдаваться в теорию о микрофронтах и module federation, об этом уже много написано и предполагается, что вы знакомы с базовой настройкой. Мы же поговорим о самом «вкусном», некоторые моменты будут опущены в целях сосредоточения на деталях.

Читать далее
Total votes 22: ↑22 and ↓0 +22
Views 8.1K
Comments 22

Микросервисы для чайников: как на них перейти с монолита с нуля

Конференции Олега Бунина (Онтико) corporate blog Авито corporate blog High performance *IT Standards *Microservices *

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

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

Читать далее
Total votes 29: ↑27 and ↓2 +25
Views 23K
Comments 29

Высокопроизводительные микросервисы на Kotlin с использованием gRPC. Долгий путь к DSL

OTUS corporate blog Programming *Kotlin *Microservices *

Очень часто при проектировании высоконагруженных систем, основанных на микросервисной архитектуре, обнаруживается что «узким» местом, ограничивающим производительность системы и возможности ее масштабирования, становится передача сообщений и временные затраты на сериализацию-десериализацию сообщений и дополнительные расходы на установку соединения и начальные согласования. Решением может стать использование протокола gRPC с кодированием сообщений с применением Protocol Buffers (protobuf).

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

Читать далее
Total votes 22: ↑21 and ↓1 +20
Views 5.3K
Comments 0

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

Website development *JavaScript *ASP *TypeScript *WebAssembly *

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее
Total votes 41: ↑39 and ↓2 +37
Views 9.4K
Comments 17

Information

Rating
1,524-th
Date of birth
Registered
Activity