Pull to refresh
46
Karma
0
Rating
Костя Д. @godzie

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

Хакерский квест RUVDS подходит к концу, но сразиться за главный приз 142 857 рублей еще не поздно

RUVDS.com corporate blog Information Security *Cryptography *CTF *

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

Напомним, с чего всё началось: участники уже раскрыли секрет «Загадочной визитки», которую разобрали до последнего волокна и в результате залетели в блокчейн, а далее и в межпланетную файловую систему с новой порцией загадок.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 3.7K
Comments 0

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

Флант corporate blog High performance *Configuring Linux *System administration *Network technologies *
Translation

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

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

Автоматическое разрешение конфликтов с помощью операциональных преобразований

Programming *System Analysis and Design *Algorithms *Mathematics *Distributed systems *
image

Автоматическое разрешение конфликтов в среде с более, чем одним ведущим узлом (в данной статье под ведущим узлом понимается узел, который принимает запросы на изменение данных) – очень интересная область исследований. Существует несколько различных подходов и алгоритмов, в зависимости от области применения, и в данной статье будет рассмотрена технология Операциональных Преобразований (Operational Transformations, OT) для разрешения конфликтов в приложениях совместного редактирования, таких как Google Docs и Etherpad.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views 5.4K
Comments 2

CRDT: Conflict-free Replicated Data Types

Programming *System Analysis and Design *Algorithms *Mathematics *Distributed systems *

Как считать хиты страницы google.com? А как хранить счётчик лайков очень популярных пользователей? В этой статье предлагается рассмотреть решение этих задач с помощью CRDT (Conflict-free Replicated Data Types, что по-русски переводится примерно как Бесконфликтные реплицированные типы данных), а в более общем случае — задачи синхронизации реплик в распределённой системе с несколькими ведущими узлами.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 28K
Comments 14

Минимальная реализация Lua на Rust

RUVDS.com corporate blog Programming *Lua *Rust *
Translation
После того, как вы освоите это руководство, в вашем распоряжении окажется минимальная реализация Lua (парсер, компилятор, виртуальная машина), написанная на Rust с чистого листа. Этот проект получил название Lust, его код можно найти на GitHub.

Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Views 5.9K
Comments 11

IO_URING. Часть 3

ITSOFT corporate blog High performance *Go *Development for Linux *

Всем привет! Симулятор написания echo-server'ов на связи. Сегодня завершающая часть из цикла посвященного io_uring. В этом материале мы поговорим о настройке io_uring, режимах работы и перформансе. Полученные знания используем чтобы улучшить конкурента netpoller'у из предыдущей статьи. 

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

Знакомимся с программированием на ассемблере x86

RUVDS.com corporate blog Programming *Assembler *
Translation
Tutorial

Архитектура x86 лежит в сердце процессоров, на которых уже более трех десятилетий работают наши домашние компьютеры и удаленные серверы. Умение читать и писать код на низкоуровневом языке ассемблера – это очень весомый навык. Он позволяет создавать более быстрый код, использовать недоступные в Си возможности машин и выполнять реверс-инжиниринг скомпилированного кода.
Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Views 14K
Comments 15

Тазик декларативного кода и с наступающим

Dodo Engineering corporate blog IT-companies

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

«А давайте», — подумал я. У нас как раз код-фриз и заниматься продуктовыми задачами нельзя. А окунуться в новогоднее настроение — можно :)

Посмотреть, что из этого получилось
Total votes 24: ↑22 and ↓2 +20
Views 3.9K
Comments 14

IO_URING. Часть 2. Let's GO

ITSOFT corporate blog High performance *Go *Development for Linux *

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

Читать далее
Total votes 21: ↑19 and ↓2 +17
Views 3.2K
Comments 1

Самый по-человечески написанный учебник компьютерной архитектуры наконец-то выходит на русском языке и для RISC-V

FPGA *Programming microcontrollers *Manufacture and development of electronics *CPU Electronics for beginners

В 2015 году скачивания первого русского издания учебника Харрис & Харрис завалили сайт британской компании Imagination Technologies. Книгу стали использовать в МФТИ, ВШЭ МИЭМ, МГУ, МИЭТ, ИТМО и других вузах. С тех пор вышло еще два издания - для ARM и для MIPS, и вот в январе 2022 года выходит новое - для RISC-V и оно уже доступно для предзаказа.

"Цифровая схемотехника и архитектура компьютера: RISC-V" вероятно станет стандартным учебником в российских вузах, как и источником информации для тех, кто хочет попроектировать процессоры на ПЛИС. Ничего лучшего на рынке нет. Паттерсон-Хеннесси не привязан к курсам по языкам описания аппаратуры и не обсуждает тайминг цифровой логики, а Таненбаум устарел.

Кроме этого, архитектура RISC-V становится билетом в будущее для российских процессорных компаний - Ядро купило Syntacore, Байкал Электроникс инвестировал в CloudBear, Миландр выпустил микроконтроллер с архитектурой RISC-V.

Если же вы не хотите работать в российских компаниях, а хотите пройти интервью на проектировщика чипа в Apple, Intel, NVidia, то и в таком случае учебник Харрисов - это самый эффективный способ начать этот путь.

О Харрисах, содержание и почему RISC-V
Total votes 48: ↑42 and ↓6 +36
Views 49K
Comments 41

Си должен умереть

Information Security *Programming *System Programming *Compilers *C *
Sandbox

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

Попробуем понять, что же такое этот противоречивый язык Си - благословение или проклятие?

Читать далее
Total votes 232: ↑194 and ↓38 +156
Views 101K
Comments 641

IO_URING. Часть 1. Введение

ITSOFT corporate blog C *Go *Development for Linux *
✏️ Technotext 2021

Всем привет! Наверное, многие уже слышали о новом интерфейсе ядра Linux — io_uring. Это новый способ работы с асинхронным I/O (и не только) в Linux. Кстати, новый он не только из-за даты выхода в свет, но и в плане подходов, которые предлагает разработчику.

Заинтересовало? Более подробно разберемся под катом.

Читать далее
Total votes 37: ↑36 and ↓1 +35
Views 11K
Comments 35

std::atomic. Модель памяти C++ в примерах

Programming *C++ *

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее
Total votes 52: ↑52 and ↓0 +52
Views 59K
Comments 38

В чём опасность слабой модели памяти ARM на примере конкретного эксплоита

FirstVDS corporate blog Information Security *System administration *System Programming *Concurrent computing *


Процессоры ARM приходят к нам всерьёз и надолго. Мы видим, что семейство Apple M1 в бенчмарках показывает потрясающие результаты, не хуже флагманских моделей от Intel и AMD, а кое-где и лучше их. Уже выпускаются 128-ядерные серверные ARM, которые ставят рекорды по энергоэффективности, а для серверов это очень важно.

Таким образом, ARM приходит и на десктопы, и на серверы. Но в разработке под архитектуру ARM и при работе с существующим программным обеспечением есть один нюанс. Дело в том, что программирование без блокировок (lock-free) — опасная штука, особенно на этих процессорах. Если на архитектуре x86/x64 сильная модель памяти и здесь инструкции типа store идут в процессор строго по порядку, то в архитектуре ARM это совершенно не факт. В результате частенько случается, что вполне безопасный код x86 порождает состояние гонки под ARM.
Читать дальше →
Total votes 51: ↑46 and ↓5 +41
Views 7.7K
Comments 22

«Зожный» перекус: безопасные перекусы для работников умственного труда

RUVDS.com corporate blog Reading room Health

Когда много работаешь мозгом и не слишком часто поднимаешь пятую точку с «компьютерного» кресла — лишний вес и прочие проблемы неправильного питания часто становятся проблемой. Знаю по себе не понаслышке: четыре года напряжённой и не всегда нормированной аналитической работы в своё время превратили меня из 75-килограммового парня в 105-килограммового увальня. Потом пришлось заморачиваться, чтобы за полгода сбросить 20-25 лишних кило.

А ведь когда часами работаешь над сложной или хотя бы объёмной задачей с полным погружением — организм требует «жрааать» не хуже кота в пять утра. И поесть полноценно не всегда получается. Значит, кидаем в рот то, что позволяет заглушить чувство голода без отрыва от монитора. И часто кидаем мы туда разные отнюдь не душе- и тушкоспасительные вещи. Шоколадные батончики, быстрорастворимая лапша, чипсы, пиццу, бургеры… ну вы знаете. Вкусно, голод глушит, стресс тоже, настроение поднимает — только вот (trigger warning!) на пользу это не идёт. И чем дальше, тем больше.
Читать дальше →
Total votes 93: ↑74 and ↓19 +55
Views 32K
Comments 175

Register-based calling convention, GO?

Programming *Go *

Пока GO-сообщество томится в ожидании версии 1.18 и обещанных в ней дженериков язык продолжает развиваться и в других направлениях. В вышедшей недавно версии 1.17 хватает интересных нововведений. Среди них есть одно, давно ожидаемое, изменение — новый calling convention. Что же это такое, в чем отличие от старого соглашения о вызовах, какое влияние будет оказано на прикладную GO разработку? Постараемся разобраться в этой статье.
image

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 5.4K
Comments 3

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

RUVDS.com corporate blog Vector graphics *Algorithms *Mathematics *Graphic design *
Когда речь заходит о комплексных числах, в первую очередь вспоминают о преобразовании Фурье и прочих аспектах цифровой обработки сигналов. Однако у них есть и более наглядная интерпретация, геометрическая — как точки на плоскости, координатам которой соответствуют действительная и мнимая часть комплексного числа. Рассматривая некоторую кривую как совокупность таких точек, можно описать её как комплексную функцию действительной переменной.

Дальше больше картинок и анимаций
Total votes 106: ↑106 and ↓0 +106
Views 17K
Comments 39

«Компилятор всё оптимизирует»? Ну уж нет

Perfect code *Client optimization *Compilers *
Translation
Многие программисты считают, что компиляторы — это волшебные «чёрные ящики», на вход в которые можно подать хаотичный код, а на выходе получить красивый оптимизированный двоичный файл. Доморощенные философы часто начинают рассуждать о том, какие фишки языка или флаги компилятора следует использовать, чтобы раскрыть всю мощь магии компилятора. Если вы когда-нибудь видели кодовую базу GCC, то и в самом деле могли поверить, что он выполняет какие-то волшебные оптимизации, пришедшие к нам из иных миров.

Тем не менее, если вы проанализируете результаты работы компиляторов, то узнаете, что они не очень-то хорошо справляются с оптимизацией вашего кода. Не потому, что пишущие их люди не знают, как генерировать эффективные команды, а просто потому, что компиляторы способны принимать решения только в очень малой части пространства задач. [В своём докладе Data Oriented Design (2014 год) Майк Эктон сообщил, что в проанализированном фрагменте кода компилятор теоретически может оптимизировать лишь 10% задачи, а 90% он оптимизировать не имеет никакой возможности. Если бы вам интересно было узнать больше о памяти, то стоит прочитать статью What every programmer should know about memory. Если вам любопытно, какое количество тактов тратят конкретные команды процессора, то изучите таблицы команд процессоров]

Чтобы понять, почему волшебные оптимизации компилятора не ускорят ваше ПО, нужно вернуться назад во времени, к той эпохе, когда по Земле ещё бродили динозавры, а процессоры были чрезвычайно медленными. На графике ниже показаны относительные производительности процессоров и памяти в разные годы (1980-2010 гг.). [Информация взята из статьи Pitfalls of object oriented programming Тони Альбрехта (2009 год), слайд 17. Также можно посмотреть его видео
(2017 год) на ту же тему.]

Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Views 9.9K
Comments 31

Information

Rating
3,028-th
Date of birth
Registered
Activity

Specialization

Переехавший на rust