Как стать автором
Обновить
7
0
Андрей @malstoun

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

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

Реверс-инжиниринг ячейки регистра процессора Intel 386

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

Новаторский Intel 386 (1985 год) стал первым 32-битным процессором линейки x86. У него есть множество внутренних регистров: регистры общего назначения, индексные регистры, селекторы сегментов и более специализированные регистры. В этом посте мы изучим кремниевый кристалл 386 и объясним, как реализованы некоторые из этих регистров на уровне транзисторов. Изученные мной регистры реализованы как статическое ОЗУ, где каждый бит хранится в стандартной восьмитранзисторной цепи, называемой «8T». Исследование этой цепи демонстрирует интересные техники размещения, использованные Intel для «сжатия» двух ячеек с целью минимизации необходимого им пространства.
Читать дальше →
Всего голосов 69: ↑68 и ↓1+96
Комментарии6

Обзор Harvester — гиперконвергентного Open Source-решения на базе Kubernetes

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

Немецкая компания SUSE известна в Open Source-сообществе своими дистрибутивами Linux. Но этим ее деятельность не ограничивается. В конце прошлого года SUSE представила новый проект с открытым кодом — гиперконвергентное решение Harvester. Как говорит компания, Harvester — это альтернатива существующим гиперконвергентным платформам enterprise-уровня типа VMware vSAN и Nutanix HCI, адаптированная к cloud native-среде, к тому же полностью бесплатная.

В статье сделаем небольшой обзор Harvester: посмотрим на компоненты, возможности, сильные и слабые стороны.

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

Как построить локальный self-managed Kubernetes-кластер

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

Возможно, у вас была мысль запустить собственную услугу Infrastructure as a Service (IaaS) либо разместить свои проекты на Kubernetes, но не платить за managed-услуги, или ваш проект — это и есть self-managed Kubernetes. У full-stack-разработчика и предпринимателя Нейта Бакареффа эти желания сошлись воедино.

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

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

Как работает Wine

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


Wine — это свободное программное обеспечение для запуска Windows-приложений на нескольких POSIX-совместимых операционных системах, включая Linux, macOS и BSD.

Если вы любите Linux, то наверняка когда-то запускали Wine. Возможно, для какой-то «важной» программы Windows, у которой нет аналога под Линуксом, или поиграться. Забавный факт: даже Steam Deck от Valve запускает игры через оболочку на основе Wine (она называется Proton).

За последний год я намучился с отладчиком, который позволяет одновременно дебажить и Wine, и Windows-приложение в нём. Разобраться во кишочках Wine оказалось очень интересно! Я-то раньше много им пользовался, но никогда не понимал механику целиком. Можно взять файл Windows — и просто запустить его в Linux без каких-либо изменений. Если вы хотите знать, как это сделано, добро пожаловать под кат.
Читать дальше →
Всего голосов 188: ↑187 и ↓1+230
Комментарии48

Куда уходит время? Боремся за миллисекунды в Kubernetes

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

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее
Всего голосов 119: ↑118 и ↓1+139
Комментарии23

Мы разработали 44 устройства за 6 лет, продаем их по всему миру, только этого мало

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

История эмиграции, блеск и нищета стартапов, техническое порно, непрерывная разработка, гидроакустика, нарциссизм, рефлексия, open-source и много фото.

Это все под катом.

Начать погружение
Всего голосов 331: ↑330 и ↓1+408
Комментарии194

Как самому за один вечер собрать минимальную ОС Linux из исходного кода

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

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

Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.

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

Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+108
Комментарии83

Дженерики могут замедлить ваш код на Go

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

Встречайте, вот и Go 1.18, а с ней – первый релиз долгожданной реализации дженериков, наконец-то готовых к реальному использованию в продакшене. Дженерики – это весьма востребованная возможность, давно вызывающая жаркие споры в сообществе Go. С одной стороны, самые голосистые беспокоятся по поводу сложности, которую привносят дженерики. Их страшит неизбежная эволюция Go, которая доведет его либо до многословия как в энтерпрайз-версии Java, со своими обобщенными фабриками, либо, самое страшное, превратит Go в вырожденный HaskellScript, где if-ы придется заменить монадами. Положа руку на сердце, оба этих опасения могут быть преувеличенными. С другой стороны, поборники дженериков считают, что дженерики критически важны для масштабного внедрения чистого кода, пригодного для многоразового использования.

Автор этой статьи не принимает ни одну из сторон в данных дебатах и не дает рекомендаций, где и в каких случаях использовать дженерики в Go. Напротив, эта статья призвана осветить запутанный случай с дженериками в Go с третьей стороны: с точки зрения системных программистов, которые воодушевлены не дженериками как таковыми, а мономорфизацией и тем, как она может сказаться на производительности. Нас таких десятки. Десятки! И мы все имеем изъявить некоторое серьезное разочарование.

Читать далее
Всего голосов 49: ↑46 и ↓3+56
Комментарии13

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

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

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

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

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

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

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

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

За кулисами сети в Kubernetes

Время на прочтение16 мин
Количество просмотров44K
Прим. перев.: Автор оригинальной статьи — Nicolas Leiva — архитектор решений Cisco, который решил поделиться со своими коллегами, сетевыми инженерами, о том, как устроена сеть Kubernetes изнутри. Для этого он исследует простейшую её конфигурацию в кластере, активно применяя здравый смысл, свои познания о сетях и стандартные утилиты Linux/Kubernetes. Получилось объёмно, зато весьма наглядно.



Помимо того факта, что руководство Kubernetes The Hard Way от Kelsey Hightower просто работает (даже на AWS!), мне понравилось, что сеть поддерживается в чистоте и простоте; и это замечательная возможность понять, какова роль, например, Container Network Interface (CNI). Сказав это, добавлю, что сеть Kubernetes в действительности не очень-то интуитивно понятна, особенно для новичков… а также не забывайте, что «такой вещи, как сети для контейнеров, попросту не существует».
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии3

Как в Яндекс.Облаке устроено Virtual Private Cloud и как наши пользователи помогают нам внедрять полезные функции

Время на прочтение7 мин
Количество просмотров24K
Привет, меня зовут Костя Крамлих, я ведущий разработчик подразделения Virtual Private Cloud в Яндекс.Облаке. Я занимаюсь виртуальной сетью, и, как можно догадаться, в этой статье расскажу об устройстве Virtual Private Cloud (VPC) в целом и виртуальной сети в частности. А ещё вы узнаете, почему мы, разработчики сервиса, ценим обратную связь от наших пользователей. Но обо всём по порядку.



Читать дальше →
Всего голосов 22: ↑17 и ↓5+21
Комментарии13

Отслеживание пути пакета с помощью точек трассировки Linux, perf и eBPF

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


Я давно искал какой-нибудь инструмент для низкоуровневой отладки сети Linux. Linux позволяет создавать сложные сети, запускаемые прямо на хосте, используя комбинацию из виртуальных интерфейсов и сетевого пространства имен. Когда что-то идет не так решение возникших проблем утомительно. Если это проблема маршрутизации L3, mtr (Matt's traceroute) имеет неплохие шансы принести пользу. Однако, если проблема на более низком уровне, обычно все заканчивается тем, что я вручную проверяю каждый интерфейс / мост / пространство имен сети / iptables и пару раз запускаю tcpdump в попытках понять что происходит. Если вы не знакомы с настройками сети, то при решении проблем в ней, вас ждет запутанный лабиринт.

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

Tоп-10 PromQL запросов для мониторинга Kubernetes

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

В этой статье приведены примеры популярных запросов Prometheus для мониторинга Kubernetes.

Рейтинг основан на опыте компании Sysdig, ежедневно оказывающей сотням клиентов помощь в настройке мониторинга их кластеров.

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

Растаможка своими силами

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1+31
Комментарии36

Российское приборостроение: вертели мы ваш дизайн на пальцах

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



Или как понять, что ваш дизайн уже пора выкинуть, и как сделать новый


— Нужно делать как нужно, а как не нужно делать не нужно!
Фраза из интернетов

Это статья о промышленном дизайне в приборостроении: почему вы без него не обойдётесь; что делать и кого искать, если вы всё-таки решились «на промдизайн»; как понять, что именно вам необходимо; кто и за сколько сделает эту работу за вас и что предпринять, чтобы получилось то, что нужно вам, а не дизайнеру или кому другому. Всё — на примерах реальных разработок, а как же иначе.

Читать дальше →
Всего голосов 92: ↑90 и ↓2+113
Комментарии277

Принципы построения REST JSON API

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

Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


Зачем


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


  • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
  • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
  • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
  • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
Читать дальше →
Всего голосов 71: ↑55 и ↓16+39
Комментарии207

Введение в SSD. Часть 4. Физическая

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

Прошлые части цикла «Введение в SSD» поведали читателю про историю появления SSD-накопителей, интерфейсы взаимодействия с ними и популярные форм-факторы. Четвёртая часть расскажет о хранении данных внутри накопителей.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+18
Комментарии11

Как устроен ReactJS. Пакет React

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

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


В этой серии статей мы почитаем код и попробуем разобраться за что отвечают пакеты, которые лежат у реакта под капотом, для чего они используются и как они работают. Самые основные, которые мы используем в браузере, – это react, react-dom, events и react-reconciler.


Будем двигаться по порядку и сегодня у нас статья про пакет react. Кому интересно, что же есть в этом пакете, – заходите под кат.

Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии3

Применение нейросетей в распознавании изображений

Время на прочтение10 мин
Количество просмотров243K
Про нейронные сети, как один из инструментов решения трудноформализуемых задач уже было сказано достаточно много. И здесь, на хабре, было показано, как эти сети применять для распознавания изображений, применительно к задаче взлома капчи. Однако, типов нейросетей существует довольно много. И так ли хороша классическая полносвязная нейронная сеть (ПНС) для задачи распознавания (классификации) изображений?
Читать дальше →
Всего голосов 134: ↑131 и ↓3+128
Комментарии73

Нейронные сети: Лекция 2 (+пример на РНР).

Время на прочтение3 мин
Количество просмотров39K
Совокупность нейронов соединённых тем или иным способом называется искусственной нейронной сетью или просто нейронной сетью.
Закон по которому нейроны соединены в сеть носит название структуры или топологией сети.

Множество нейронов не соединённых между собой, но соедененные с другими нейронами носит название слоя нейрона.
Сети бывают 2х видов: однослойные, многослойные.

Простой перцептрон


Простой перцептрон состоит из 1го нейрона (один слой) с n входами и пороговой функции активации

Поскольку выходами сети является +1 или -1. То перцептрон эффективен для решение задачи классификации 2х классов.
Читать дальше →
Всего голосов 53: ↑38 и ↓15+23
Комментарии92

Информация

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