Pull to refresh
6
0
Иван GiB$ON @gibson_dev

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

Send message

Как сделать простой UPS для NAS

Level of difficultyMedium
Reading time11 min
Views28K

Как известно, большинство UPS подключаются между розеткой 220В и NAS. При этом ничто не мешает разместить UPS внутри корпуса NAS или хотя бы позаботиться об этом заранее.

Рассмотрим вариант дизайна такого UPS, который можно разместить внутри корпуса для тех NAS, которые для работы требуют только одного напряжения питания 12В.

Всё ещё хочешь собрать UPS?

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

Level of difficultyEasy
Reading time8 min
Views7.4K

Этот материал посвящён формированию культуры технических собеседований, проводимых с учётом потребностей людей и с уважением к ним.

Читать далее

Переходите на микрофронтовую архитектуру

Reading time9 min
Views19K

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

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

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

Полезная ссылка с подробным объяснением концепции микрофронтенда.

Читать далее

KVM: Что такое Kernel-based Virtual Machine?

Level of difficultyMedium
Reading time17 min
Views74K

Начнем с простого вопроса:

Что означает QEMU/KVM или QEMU-KVM?

Можно ответить - это QEMU + KVM или qemu-system, запущенный с kvm в качестве ускорителя. Но в какой-то степени это еще и анахронизм, так как с появлением KVM его разработчики для интеграции с QEMU поддерживали отдельный форк qemu-kvm, но начиная с QEMU версии 1.3 (декабрь 2012) все основные изменения из qemu-kvm были перенесены в главную ветку QEMU, а qemu-kvm объявлен устаревшим.

В разных дистрибутивах до сих пор еще можно встретить исполняемый файл qemu-kvm или просто kvm, но это лишь обертки над qemu-system:

exec qemu-system-x86_64 -enable-kvm "$@"

или симлинки:

/usr/bin/kvm -> qemu-system-x86_64

А в самом qemu существует проверка:

Читать далее

Знакомство с частотными фильтрами. Часть 1: как спроектировать и немного схитрить

Level of difficultyMedium
Reading time7 min
Views120K
https://stroitelcentr.ru

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

Используйте навигацию, если не хотите читать текст полностью:

Что такое частотный фильтр
Очередной резистивный делитель, или из чего состоят фильтры
Немного о параметрах частотных фильтров
Рассчитывать фильтры — это сложно
Собираем фильтр Чебышева
Читать дальше →

Заметка о хуке useSyncExternalStore

Level of difficultyHard
Reading time7 min
Views11K


Hello, world!


Представляю вашему вниманию перевод этой замечательной статьи.


useSyncExternalStore — это один из хуков, представленных в React 18. Наряду с хуком useInsertionEffect, он считается хуком для библиотек (library hook):


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


В списке изменений React 18 речь также идет о библиотеках:


Добавлен useSyncExternalStore для помощи в интеграции с React библиотек внешних хранилищ (external store libraries)

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

Ищем и скачиваем непопулярные и старые файлы в интернете

Reading time14 min
Views214K
Преимущественно медиафайлы. На полном серьезе, без шуток.

Введение

Бывает, случается так, что вы хотите скачать альбом 2007 года исполнителя, который кроме вас известен 3.5 людям, какой-нибудь испанский ска-панк или малопопулярный спидкор европейского происхождения. Находите BitTorrent-раздачу, ставите на закачку, быстро скачиваете 14.7%, и… все. Проходит день, неделя, месяц, а процент скачанного не увеличивается. Вы ищете этот альбом в поисковике, натыкаетесь на форумы, показывающие ссылки только после регистрации и 5 написанных сообщений, регистрируетесь, флудите в мертвых темах, вам открываются ссылки на файлообменники вроде rapidshare и megaupload, которые уже сто лет как умерли.

Попытка скачать хотя бы один файл
Увы, частая ситуация в попытке хоть что-то скачать

Такое случается. В последнее время, к сожалению, случается чаще: правообладатели и правоохранительные органы всерьез взялись за файлообмен; в прошлом году закрылись или были закрыты KickassTorrents, BlackCat Games, what.cd, btdigg, torrentz.eu, EX.ua, fs.to, torrents.net.ua, и еще куча других сайтов. И если поиск свежих рипов фильмов, сериалов, музыки, мультиков все еще не представляет большой проблемы, несмотря на многократно участившееся удаления со стороны правообладателей контента из поисковых систем, торрент-трекеров и файлообменников, то поиск и скачивание оригинала (DVD или Blu-Ray) фильмов и сериалов или просто ТВ-рипов 7-летней давности на не-английском и не-русском языке — не такая уж простая задача.
Читать дальше →

Тонкая настройка сети в Linux

Level of difficultyMedium
Reading time7 min
Views33K

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

Читать далее

«Разделяй и властвуй» для OpenStreetMap мира в PostgreSQL

Level of difficultyMedium
Reading time28 min
Views8K

Продолжу рассказ "Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap" секретами о геоданных OpenStreetMap, на которых множество компаний построили бизнес но не все делятся подробностями... Что ж, сегодня приоткроем завесу!

База данных в PosgreSQL после загрузки из дампа занимает больше 587 GB. Это уже по меркам СУБД большая база и одна огромная таблица на каждый тип объектов не сработает. Для управляемости такие данные надо секционировать, хорошо что PostgreSQL поддерживает декларативное секционирование данных. Осталось лишь придумать как разделить географические данные. После поисков и сравнений мне на помощь пришла иерархическая гексагональная геопространственная система индексирования H Все это было реализовано в моем проекте openstreetmap_h3 для быстрой обработки и загрузки мира в базу.

Читать далее

С — не низкоуровневый язык

Reading time11 min
Views80K


Ваш компьютер не является быстрой версией PDP-11


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

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →

Логическая репликация из PostgreSQL в Erlang

Reading time5 min
Views6.9K

Довольно типичная схема при разработке системы, когда основная логика обработки сосредоточена в приложении (в нашем случае Erlang), а данные для работы этого приложения (настройки, профили пользователей и т. д.) в базе данных (PostgreSQL). Приложение Erlang кэширует настройки в ETS для ускорения обработки и снижения нагрузки на БД путём отказа от постоянных запросов. При этом изменение этих данных происходит через отдельный (возможно, внешний) сервис.


В таких ситуациях встаёт задача поддержания закэшированных данных в актуальном состоянии. Есть разные подходы для решения этой задачи. Один из них — это логическая репликация PostgreSQL. О нем и пойдёт речь ниже.

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

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Reading time8 min
Views327K

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать

Управление вентиляцией: собираем, интегрируем, экономим

Reading time11 min
Views30K

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

А такой системой надо умно управлять. Об этом сегодня и поговорим.

Читать далее

Руководство по Node.js, часть 9: работа с файловой системой

Reading time11 min
Views147K
Сегодня, в девятой части перевода руководства по Node.js, мы поговорим о работе с файлами. В частности, речь пойдёт о модулях fs и path — о файловых дескрипторах, о путях к файлам, о получении информации о файлах, об их чтении и записи, о работе с директориями.



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

Эксплойтинг браузера Chrome, часть 1: введение в V8 и внутреннее устройство JavaScript

Reading time29 min
Views25K


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

Работая дверями в Интернет, браузеры в то же время создают существенные угрозы целостности персональных вычислительных устройств. Почти ежедневно мы слышим новости наподобие "баг Google Chrome активно используется как Zero-Day" или "Google подтвердила четвёртый эксплойт Zero-Day Chrome за 2022 год". На самом деле, эксплойты браузеров не представляют собой ничего нового, их находят уже долгие годы, начиная с первого эксплойта для удалённого исполнения кода, задокументированного как CVE-1999-0280. Первым потенциально публичным раскрытием браузерного эксплойта, используемого в реальных условиях, стал эксплойт Aurora браузера Internet Explorer, который атаковал Google в декабре 2010 года.
Читать дальше →

Отладка микроконтроллера через Type-C кабель

Reading time4 min
Views8.6K

Как избавиться от дополнительных разъемов на печатной плате IoT-устройств при наличии разъема Type-C?

Этим вопросом мы задались, когда в своих разработках начали переход с micro-USB на 24pin Type-C. В этой статье я постараюсь описать наш опыт использования Type-C, расскажу о распиновке разъемов Type-C для устройств с ESP32, STM32, Миландра, RISC-V или ARM, а также о том, что внутри кабеля Type-C и как его выбрать.

Читать далее

Почему набор инструкций AVX 512 полезен для RPCS3?

Reading time14 min
Views6.9K

Часто приходится слышать, что важность отличий между наборами инструкций на современных компьютерах преувеличена и, в самом деле, сложно не согласиться с таким наблюдением. Поскольку стандартная программа на 90 % состоит из простейших инструкций для АЛУ, загрузки и сохранения, а также инструкций ветвления, а также с учётом, что на таком базовом уровне разбежки между различными наборами команд очень невелики, такой вывод просто напрашивается.

Но RPCS3, эмулятор приставки Sony PlayStation-3 - не просто обычная программа. Даже если вам не доводилось работать с самим эмулятором, вам наверняка приводили RPCS3 в пример как образец потребительского ПО, в котором используются сильные стороны AVX-512. В этой статье я расскажу, почему именно новые инструкции и возможности, введённые в семействе AVX-512, так полезны для эмуляции PS3. В некоторых ситуациях использование 512-разрядных инструкций может положительно сказываться на RPCS3, но в этом посте будет рассказано, почему новые инструкции полезны и для 128-разрядных, и для 256-разрядных конфигураций.

Читать далее

Нагрузочное тестирование в 1С:ERP

Reading time15 min
Views15K

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

Читать далее

Приручаем многопоточность в Node.js (часть 5/5: автомасштабирование под нагрузку)

Reading time19 min
Views8.1K

В прошлых частях цикла мы:

- рассмотрели базовые концепты работы с многопоточностью в JavaScript на примере среды Node.js;

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

- использовали разделяемую память и Atomics-операции как самое быстрое средство обмена большими блоками данных;

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

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

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

Читать далее

Приручаем многопоточность в Node.js (часть 3/5: разделяемая память, атомарные операции и блокировки)

Reading time12 min
Views7.6K

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

Но тут возникает две проблемы:

1. как эффективно доставить данные в обрабатывающий поток

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

В этом нам как раз и помогут два рассматриваемых в этой статье концепта работы с многопоточностью: разделяемая (shared) память и потокобезопасные (thread-safe, Atomics) операции над ней.

Читать далее

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity