Pull to refresh
0
0
Send message

Кастиниг, или было у отца четыре сына…

Level of difficultyEasy
Reading time3 min
Views2.6K

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

В С++ существует четыре оператора, осуществляющих приведение типов. Это static_cast, dynamic_cast, const_cast, и reinterpret_cast.
По наследству из языка C нам еще досталась возможности кастить переменные так называемым C-like кастом, это такие круглые скобочки с типом внутри. За использование такого каста Мартин предлагал сразу отрубать руки, и если-бы менеджмент пошел ему навстречу, то половина нашей фирмы уже давно ходила-бы без рук. Что-бы хоть как-то руки уберечь, рассмотрим по порядку, что нам предлагает C++.

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

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

Читать далее
Total votes 19: ↑9 and ↓10-1
Comments61

Как Яндекс создал свою шину данных, чтобы передавать сотни гигабайт в секунду

Level of difficultyEasy
Reading time7 min
Views35K

10 лет назад сотни серверов Яндекса работали на Apache Kafka®, но в этом продукте нам нравилось далеко не всё. Наши задачи требовали единой шины для передачи всех видов данных: от биллинговых до журналов приложений. Сегодня объёмы достигли уже десятков тысяч именованных наборов сообщений.

При таком количестве данных в Apache Kafka® становилось сложно управлять правами доступа, организовывать распределённую работу нескольких команд и многое другое. Проблемы роста и отсутствие подходящего решения в открытом доступе привели к тому, что мы разработали своё решение YDB Topics и выложили его в опенсорс в составе платформы данных YDB. В этом посте расскажу о предпосылках создания продукта, нашей архитектуре передачи данных, возникающих задачах и возможностях, которые появились вместе с YDB Topics.

Читать далее
Total votes 51: ↑59.5 and ↓-8.5+68
Comments24

Buildroot — часть 1. Общие сведения, сборка минимальной системы, настройка через меню

Reading time7 min
Views66K

Введение


В данной серии статей я хочу рассмотреть систему сборки дистрибутива buildroot и поделиться опытом её кастомизации. Здесь будет практический опыт создания небольшой ОС с графическим интерфейсом и минимальным функционалом.


Прежде всего, не следует путать систему сборки и дистрибутив. Buildroot может собрать систему из набора пакетов, которые ему предложили. Buildroot построен на make-файлах и поэтому имеет огромные возможности по кастомизации. Заменить пакет на другую версию, добавить свой пакет, поменять правила сборки пакета, кастомизировать файловую систему после установки всех пакетов? Всё это умеет buildroot.


В России buildroot используется, но на мой взгляд мало русскоязычной информации для новичков.


Цель работы — собрать дистрибутив с live-загрузкой, интерфейсом icewm и браузером. Целевая платформа — virtualbox.


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


Buildroot система очень мощная, но она ничего не сделает за вас. Она может лишь дать возможности и автоматизировать процесс сборки.


Альтернативные системы сборки (yocto, open build system и прочие) не рассматриваются и не сравниваются.

Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments14

Как прорешать SICP: Отчёт о создании решебника для самого известного в мире задачника по программированию. Ботаны есть?

Reading time45 min
Views17K

(Хабр-Статья представляет собой авторский перевод доклада, представленного автором на Scheme Workshop 2020, проводившегося в рамках Международной Конференции по Функциональному Программированию, 28 августа 2020 года)

Эта статья -- своего рода "отчёт" по самому большому проекту, который я сделал в своей жизни по собственной инициативе. Я сделал полное, исчерпывающее решение всех задач из одной из самых извесных книг по программированию в мире "Структура и Интерпретация Компьютерных Программ" (Structure and Interpretation of Computer Programs -- SICP), за авторством Абельсона, Сассмана и Сассман.

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

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments14

Краткий обзор Memory Tagging Extension (Armv8.5-A)

Reading time4 min
Views3.5K

В этой публикации представлен перевод вступительной части документа (whitepaper) о новом расширении Armv8.5-A: Memory Tagging Extension (MTE) от компании ARM. MTE стремится повысить безопасность кода, написанного на небезопасных языках, не требуя изменения исходного кода, а в некоторых случаях, и не требуя перекомпиляции. Простое развертывание механизмов обнаружения и предотвращения последствий нарушений безопасности памяти могут предотвратить эксплуатацию большого класса уязвимостей.


Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments1

Истории о вреде локальной оптимизации

Level of difficultyEasy
Reading time10 min
Views11K

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

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

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

Бороться с локальной оптимизацией
Total votes 68: ↑73.5 and ↓-5.5+79
Comments39

Distroless контейнеры

Reading time3 min
Views15K

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

Читать далее
Total votes 32: ↑31 and ↓1+30
Comments18

Методы защиты серверов от космического излучения

Reading time6 min
Views5.2K

В прошлой статье мы подробно разобрали проблему «флипбитов» — непредсказуемого изменения битов в компьютерной памяти из-за проникновения высокоэнергетических частиц в чувствительные области компьютерных микросхем. В научной литературе и компьютерной документации данный феномен известен как «одиночные сбои» (single event upset, SEU).

Раньше считалось, что проблема характерна только для авионики и космонавтики. Но эксперименты доказали, что SEU неминуемо происходят даже на уровне океана (то есть под защитой атмосферы) в компьютерных системах с модулями оперативной памяти (RAM). Можно рассчитать вероятность такого повреждения: примерно 1 битфлип на 256 МБ оперативной памяти в месяц (см. также статистику аппаратных сбоев в одном миллионе пользовательских ПК).
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments13

Простой гайд для предпринимателей: купить готовое решение или уйти в собственную разработку?

Level of difficultyMedium
Reading time3 min
Views1.2K

Вечный вопрос, который терзает предпринимателей: взять готовую ИТ платформу и на ней сделать продукт или разработать все самому? В этой статье подробно расскажу про каждый из путей.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments5

Тестирование сборки: Supermicro X13SAE-F Intel Core i9-14900KF 6.0 GHz

Level of difficultyEasy
Reading time13 min
Views3.4K

В этой статье мы поделимся результатами тестирования компьютерной сборки на базе материнской платы Supermicro X13SAE-F и нового процессора Intel Core i9-14900KF с возможностью разгона до 6.0 GHz.

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

Последней новинкой в нашей компании стала сборка с материнской платой SM X13SAE-F и процессором Core i9-14900KF 6.0GHz. Давайте разберемся, что собой представляет это оборудование, а затем рассмотрим результаты тестирования данной конфигурации, особенно в свете отсутствия официальных результатов от некоторых тестовых программ.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments17

Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O

Level of difficultyEasy
Reading time6 min
Views7.7K

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

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

В этой статье мы как раз и рассмотрим кратко о том, как управлять ресурсами в PostgreSQL.

Читать далее
Total votes 13: ↑13.5 and ↓-0.5+14
Comments17

Продление подписки Apple Developer from Russia в апреле 2024 без иностранной карты и сэкономить пару тройку тысяч рублей

Level of difficultyEasy
Reading time2 min
Views4.4K

Как в наше нелегкое время просто и быстро продлить персональную подписку apple developer в рублях и сэкономить пару тройку тысяч? Какие трудности ожидают вас на этом пути? Нужно всего лишь....

Так что же нужно?
Total votes 6: ↑3.5 and ↓2.5+1
Comments9

Сетевая форензика с помощью ZUI

Level of difficultyMedium
Reading time5 min
Views1.8K

В процессе расследования инцидентов в сетевой области традиционно применяют такие инструменты как Wireshark, Zeek, Suricata. Каждый из указанных инструментов обладает своими достоинствами и недостатками, соответственно было бы целесообразно использовать их в связке из единого интерфейса. Такую возможность предоставляет анализатор трафика ZUI (Brim), о котором пойдет речь в данной статье.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments2

Как мы тестируем серверы

Reading time26 min
Views7.4K

Привет! Меня зовут Олег Рябов, я главный эксперт Управления исследований и разработок новых решений компании «Ростелеком-ЦОД» и автор программы и методики испытаний (ПМИ) серверов.

В этой статье расскажу, как мы проводим тестирование серверов и какие утилиты и методы используем.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments1

AutoML на практике — как делать автоматизацию, а не её иллюзию

Level of difficultyMedium
Reading time15 min
Views8.8K

Привет, Хабр! Меня зовут Алексей Рязанцев, я Junior Data Scientist в Лаборатории Машинного обучения Альфа-Банка. Свой путь в Лаборатории я начал со стажировки летом-осенью 2023-го года, на которой для меня была интересная задача — разработать с нуля собственный AutoML в Альфа-Банке

Когда количество ML-моделей в компании исчисляется сотнями, процессы десятками, а фичи тысячами, вопрос «а нужен ли нам AutoML?» уже не стоит. Стоит другой вопрос - как сделать AutoML так, чтобы он был действительно полезен и им реально хотелось пользоваться? 

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

Читать далее
Total votes 34: ↑33 and ↓1+32
Comments14

Как сделать ваши GitLab CI пайплайны быстрее

Reading time8 min
Views30K

Привет, меня зовут Владимир. Я работаю в компании GitLab Архитектором Решений и время от времени я отвечаю на вопросы, которые, как мне кажется, могли бы быть интересны широкому сообществу. Сегодня я поделюсь рекомендациями о несколько способах ускорения выполнения CI/CD задачи в конвейерах GitLab.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments13

Хеш-функция Стрибог. Особенности аппаратной реализации на System Verilog

Level of difficultyHard
Reading time4 min
Views4.2K

На просторах интернета есть несколько статей об алгоритме получения хеш-функции Стрибог (ГОСТ 34.11-2012), в том числе и на Хабре. Однако везде в качестве примера приводится реализация на языках программирования C, C#, Python и других. То есть идет последовательное выполнение операций алгоритма. В данной статье я хочу затронуть аппаратную реализацию на языке System Verilog, уделить внимание распараллеливанию вычислений и описанию интерфейсов модулей. Для начала кратко рассмотрим теорию.

Читать далее
Total votes 40: ↑39 and ↓1+38
Comments20

CSS генератор селектров, дашборд для запуска Ansible-плейбуков, Terraform-кода и Bash-скриптов – и другие стартапы

Reading time3 min
Views2.4K

11 новых российских проектов для замены Notion,  интеграции Tilda с Airtable, поиска работы для дизайнеров и многого другого. Битва за «Продукт недели» началась!

Product Radar — здесь каждую неделю публикуются лучшие онлайн-сервисы и железки от русскоязычных команд.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments4

Файловый сервер на Samba, видимый отовсюду

Reading time2 min
Views22K
В этой краткой заметке я не буду касаться настройки Samba, благо таких материалов в сети более, чем достаточно.

Я хотел бы рассказать о том, как сделать доступ к файловому серверу удобнее.



TL;DR: настройка Avahi и WSD, чтобы файловый сервер отображался в сетевом окружении в Windows, в MacOS и в Ubuntu (и в других дистрибутивах, разумеется, но в них я не проверял).
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments3
1
23 ...

Information

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