Обновить
3
0.9

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

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

Select принципиально неисправен. Мультиплексирование ввода/вывода часть #2

Время на прочтение6 мин
Охват и читатели3.1K

В предыдущей статье блога мы обсудили краткую историю системного вызова select(2). В ней делается вывод, что для эмуляции консолей, игр и нетривиальных TCP/IP-приложений было необходимо определенное мультиплексирование ввода-вывода.

Разработчики BSD (Berkeley Software Distribution) выбрали модель мультиплексирования select, и за ними последовали другие Unix-подобные системы. Но является ли select единственной моделью мультиплексирования?

Читать далее

О TPM подробно

Время на прочтение8 мин
Охват и читатели98K

Купи вы сегодня компьютер с Windows ОС, и в нём наверняка будет модуль TPM. Доверенный платформенный модуль – это, по сути, обычный чип, который отвечает за безопасность. Разработала его Trusted Computing Group. Это отраслевая организация с более чем 100 членами, в том числе AMD, Dell, Google, Intel, Lenovo и Microsoft. Вместе они работают над тем, чтобы сделать вычислительные устройства и приложения более защищёнными.

Организация так или иначе функционировала с 1999 года. Первый TPM-стандарт, где в полной мере изложена функциональность модуля, опубликовала в 2009 году (любопытно, что представлен он был в версии 1.2). Разработчики быстро взяли его на вооружение. Случилось это отчасти благодаря тому, что его стала поддерживать Windows Vista. В 2015-м в спецификацию TPM 2.0 добавили несколько функций, а модуль по-прежнему оставался передовой технологией для "доверенных вычислений".

Несмотря на широкое распространение, TPM всегда был необязательным компонентом. Включать ли его в дизайн устройства, решал производитель. Пользователь же в свою очередь решал, включать ли его в настройках BIOS. Однако с выходом Windows 11 расклад поменялся. Microsoft объявила, что будет поддерживать последнюю версию ОС только на тех компьютерах, где установлен и включён TPM 2.0.

Решение оказалось спорным. Для установки Windows 10 не требовался модуль, да и Windows 11 тоже без него обойтись может. Microsoft даже выпустила инструкцию, чтобы пользователи могли обновиться до Windows 11 без TPM (pcpro.link/331tpmhack). Однако в таком случае ваш ПК лишится поддержки и, возможно, не будет получать обновления в будущем.

Читать далее

Безопасный HTTPS-прокси менее чем за 10 минут

Время на прочтение5 мин
Охват и читатели178K

Это руководство описывает развёртывание HTTPS-прокси с помощью dumbproxy на практически любом Linux-сервере. Потребуется только curl и рутовый доступ.

Читать далее

Пишем на Rust игры для Unreal Engine

Время на прочтение7 мин
Охват и читатели17K
image

Ссылки



Введение


Несколько месяцев назад я задался вопросом: что, если написать игру на Rust, но в качестве рендерера использовать Unreal? Поразмыслив, я пришёл к выводу, что раскрытие рендерера Unreal языку Rust при помощи FFI (Foreign function interface) языка C потребовало бы гораздо больше усилий, чем мне хотелось. Но что, если просто надстроить систему на Unreal? Я смогу просто перемещать акторов (gameobject из Unreal) при помощи Rust. Эта задача показалась гораздо более приемлемой, поэтому я приступил к работе.

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

Асинхронный ввод-вывод в Linux: select, poll и epoll

Время на прочтение8 мин
Охват и читатели15K

На этой неделе я получила по почте новую книгу: Программный интерфейс Linux (The Linux Programming Interface). Она написана мейнтейнером проекта Linux man-pages Майклом Керриском (Michael Kerrisk). В ней рассказывается об программном интерфейсе Linux, начиная с ядра версии 2.6.x.

Читать далее

Корутины C++20 и многозадачность на примере контроллеров stm32

Время на прочтение12 мин
Охват и читатели17K

На Хабре уже неоднократно появлялись статьи, посвященные применению современных стандартов C++ при программировании микроконтроллеров, в том числе и появившихся в c++20 корутин.

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

Читать далее

C++. Унарный минус и беззнаковый тип

Время на прочтение4 мин
Охват и читатели11K

Привет, Хабр! Меня зовут Владимир, я работаю в VK Карты. Хочу рассказать про случай, который недавно произошёл у нас в подразделении. Он кажется достаточно типичным и может быть интересен другим программистам.

Нам, программистам на C++, не привыкать, что даже самый безобидный код может таить в себе сюрпризы. Рассмотрим пример:

uint32_t width = 7;

int32_t signed_offset = -width;

Он полон сюрпризов! Каких? Короткий ответ: значение signed_offset не определено стандартом и зависит от реализации. Но это далеко не все неожиданности в этом коде. Статья как раз о них.

Читать далее

Средние highload паттерны на Go

Время на прочтение20 мин
Охват и читатели15K

Привет, Хабр! Меня зовут Агаджанян Давид и ранее я опубликовал статью «простые highload паттерны на Go», в которой были рассмотрены простые подходы увеличения пропускной способности отдельно взятого экземпляра приложения без хардкора. Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками.

Читать далее

Разработчик с мозгом груга

Время на прочтение14 мин
Охват и читатели99K

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →

Best Practices для Python

Время на прочтение6 мин
Охват и читатели43K

Лучшие практики в Python по моему мнению

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

В этой статье я расскажу о подобных негласных правилах, о своих наблюдениях в мире Python и о своих Best Practices.

Читать далее

Одна из причин потерь на сети 802.11

Время на прочтение2 мин
Охват и читатели11K

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

Читать далее

Девять порочных практик React. Разбираем частые ошибки

Время на прочтение10 мин
Охват и читатели28K

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

Патрик Завадски, старший разработчик ПО в компании Northwestern Mutual, подчеркивает, что практики и привычки могут различаться от разработчика к разработчику, от команды к команде и от компании к компании. В любом случае, важно знать разные подходы к написанию кода в React — это хорошее подспорье для программиста в поисках оптимального для него решения.

Под катом — наш перевод статьи*, в которой Патрик сосредоточился на отрицательных примерах: некоторых из худших React-практик, которые он когда-либо видел (а возможно даже использовал сам). Материал призван помочь вам избежать подобных ошибок в будущем.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее

Глубокое погружение в Java Memory Model

Время на прочтение53 мин
Охват и читатели260K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

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

Синаптические веса в нейронных сетях – просто и доступно (Часть 2)

Время на прочтение3 мин
Охват и читатели6.1K

В предыдущей статье (Синаптические веса в нейронных сетях – просто и доступно) рассказывалось о смысле синаптических весов на примере модели определения цифры для 13-ти сегментного индикатора.

Читать далее

Путь от стажера до junior Data Scientist

Время на прочтение6 мин
Охват и читатели20K

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

Читать далее

Руководство по CMake для разработчиков C++ библиотек

Время на прочтение18 мин
Охват и читатели136K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

Без одной faangи или как я проходил собеседования

Время на прочтение14 мин
Охват и читатели34K

Привет, Хабр! Меня зовут Рустам, работаю программистом 9 лет. 7 лет работал в Контуре и около 2 лет в Яндексе. В этой статье расскажу про свой опыт подготовки и прохождения собеседований в большие технологические компании, поделюсь рекомендациями.

Пробовался в Facebook, Apple, Amazon, Microsoft, Google. Пять попыток: четыре на бэкенд программиста, одна на инженера по инфраструктуре. Два предложения по работе, два отказа, одно потенциальное предложение.

Принял предложение в Amazon. Сейчас в Лондоне.

Читать далее

Как настроить Nginx в качестве балансировщика нагрузки

Время на прочтение9 мин
Охват и читатели127K

Что такое балансировка нагрузки?


Балансировка нагрузки подразумевает эффективное распределение входящего сетевого трафика между группой бэкенд-серверов. Задача же регулятора — распределить нагрузку между несколькими установленными бэкенд-серверами.

Существует несколько типов балансировщиков нагрузки:

  • Балансировщик нагрузки приложений.
  • Сетевой балансировщик нагрузки.
  • Балансировщик нагрузки шлюза.
  • Классический балансировщик нагрузки.
Читать дальше →

Краткий справочник по «всем-всем» командам Linux

Уровень сложностиСредний
Время на прочтение90 мин
Охват и читатели251K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005,... 1260 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX

Отказоустойчивая архитектура контентной платформы на 4 Тбит/с — опыт VK Видео

Время на прочтение16 мин
Охват и читатели25K

Представьте идеальный мир с бесконечными ресурсами, в котором можно сколько угодно линейно масштабироваться под нагрузку: просто доставлять серверы, диски, видеокарты, как только потребуется больше мощностей. Звучит хорошо? Только оказывается, что когда серверов 5 000 и дисков 100 000, то несколько из них обязательно находятся в состоянии maintenance или repair, куда их привели обстоятельства непреодолимой силы. И главная задача здесь — обеспечить доступность сервиса в условиях постоянных сбоев. 

В статье разберём, как построить отказоустойчивую платформу, с какими неочевидными corner cases может столкнуться сервис с UGC-контентом, а ещё — как жить в реальном, а не идеальном мире и оптимизировать железо. Чтобы раздавать 4 Тбит/с можно, конечно, использовать 400 серверов по 10 Гбит/с, но гораздо интереснее грамотно всё потюнить и выжать 100 Гбит/с с Java-сервера.  

Читать далее

Информация

В рейтинге
1 804-й
Зарегистрирован
Активность