Search
Write a publication
Pull to refresh
4
0

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

Send message

Малоизвестные возможности языка C

Reading time4 min
Views25K

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.

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

Читать далее

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Reading time11 min
Views17K

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

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

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее

Самая важная машина, которая никогда не была построена

Reading time6 min
Views24K

Изобретение машины Тьюринга в 1936 году Аланом Тьюрингом положило начало современным вычислениям.

В 1928 году немецкие математики Давид Гильберт и Вильгельм Аккерманн предложили вопрос, названный Entscheidungsproblem («проблема принятия решения»). Со временем их вопрос привёл к формальному определению вычислимости, которое позволило математикам ответить на множество новых проблем и заложило основу теоретической информатики.

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

Читать далее

Как сделать средневолновый радиопередатчик своими руками

Reading time8 min
Views26K
image

Если ваш любимый радиоприёмник из детства умеет ловить только средневолновые и длинноволновые радиостанции с амплитудной модуляцией, и на таких частотах в ваших краях слушать нечего, это не повод переделывать его в FM-, MP3-проигрыватель или блютус-колонку.

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

Сегодня я соберу и испытаю один из таких гаджетов — AMT-MW207, доступный как в виде радиоконструктора, так и готового аппарата.
Разумеется, подробно изучим схемы.

Нейронные сети, целый зоопарк друзей

Level of difficultyEasy
Reading time13 min
Views6.8K

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

это моя первая статья, надеюсь не последняя - думаю станет ясно после появления первых комментариев - надеюсь я не как Джерри из "Рик и Морти", впереди есть еще идеи. В этой же статье хочу описать свой путь пройденный для некоторого погружения в изучение и последующего проведения испытаний с нейронными сетями вроде ChatGPT. Явно описывать как из России сейчас подключиться к Канаде с использованием заветных трех букв и тому подобные телодвижения смысла не вижу, так как вероятно следующие за прогрессом уже давно все это перепробовали, и убедились что да, ChatGPT ответит на ваши заветные вопросы ответом типа: я лишь реализация нейронной сети созданная для возможностей развития, и тому подобное, а позже и облегченно выдохнули, мол время еще есть не такой умный уж код она и пишет, за работу можно(или нет?) не переживать... Этой статьей я хотел сократить или перенаправить на большую продуктивность время соискателя знаний в этом направлении.

Читать далее

Решаем криптографическую задачу: Trifid cipher

Level of difficultyEasy
Reading time6 min
Views2.4K

В этой статье продолжим тему решения криптографических задач с ресурса MysteryTwister. И сегодня на очереди любопытный шифр, далёким предком которого является квадрат Полибия. Мы познакомимся с трёхраздельным шифром Феликса Деластеля. Что интересно информации об этом энтузиасте  криптографии очень мало в английском и французском сегментах сети (Деластель — француз), а в русскоязычном о нём почти нет совсем, хотя наверняка человеком он был очень неординарным. Почему я так решил? Да потому, что Феликс Деластель по роду профессиональной деятельности не имел к криптографии совершенно никакого отношения, поскольку всю жизнь проработал в порту Сен-Мало и криптографией занимался факультативно. Тогда как ранее и позже криптография была уделом учёных, профессиональных военных и дипломатов. Биографических данных о нём очень мало, но одно известно точно: на рубеже XIX и XX веков Деластель написал книгу "Traite Elementaire de Cryptographie" (Базовый трактат по криптографии), в которой он описывал системы шифрования, которые создал.

Порешаем?

Модули C++20 и GCC11

Reading time11 min
Views17K

Одним из главных нововведений стандарта C++20 является добавление модулей. Модули призваны радикально изменить структуру кодовых баз C++ и, возможно, сигнализируют о грядущей кончине заголовков (но, скорее всего, не на моем веку). Они также потенциально открывают дорогу для внедрения унифицированной системы сборки и менеджера пакетов, наподобие Rust Cargo; хотя я не сомневаюсь, что стандартизация унифицированной системы сборки будет тем еще кровавым побоищем.

Читать далее

Стоит ли читать о том, как создавалась трилогия Bioshock

Level of difficultyEasy
Reading time5 min
Views3.7K

В 2023 Бомбора выпустила книгу “Создание трилогии BioShock. От Восторга до Колумбии”. Если вы не слышали о трилогии, то читать книгу не надо - надо играть. Можете пропустить мой рассказ и эту книгу полностью до прохождения всех частей и DLC. Если же Биошоки в вашем сердечке заняли особое место, то у вас есть шанс разобраться в сюжете полностью.

Читать далее

Диаграммы без боли и страданий: PlantUML

Level of difficultyMedium
Reading time9 min
Views103K

Системный аналитик всегда и везде сталкивается с бесконечным количеством диаграмм разного вида, с нотациями (правилами), чтобы нарисовать данные диаграммы и с бесконечным количеством инструментов для их описания. Но мало кто говорит о таком инструменте, как PlantUML. 

Лично мне завесу тайны приоткрыл Альфа-Банк, здесь документация ведется рядом с кодом, и схемы логичнее описывать тоже кодом. Но это не так страшно и не так сложно (почти) как кажется. Давайте я приоткрою ящик Пандоры и сниму кармическое проклятье с  этого инструмента. 

Читать далее

Эти ваши синусы

Level of difficultyEasy
Reading time6 min
Views13K

Учебник летит в стену, тетрадь в сердцах рвётся на части, а отчаявшийся школьник кричит родителям: "Да кто придумал эти ваши синусы?".

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

Погрузиться по тьму веков

Книга «Аппаратный хакинг: взлом реальных вещей»

Reading time16 min
Views8.8K
imageПривет, Хаброжители!

Встроенные системы трудно атаковать. Различных конструкций плат, процессоров и операционных систем слишком много, и это затрудняет их реверс-инжиниринг. Но теперь все станет проще — вас обучат два ведущих мировых эксперта по взлому аппаратного обеспечения. Пройдите ускоренный курс по архитектуре и безопасности встроенных устройств, узнайте об электрических сигналах, анализе образов прошивок и многом другом. Авторы объединяют теорию с практическими инструкциями, которые вы можете применить на реальном железе. Книга завершается описанием атак на такие устройства, как Sony PlayStation 3, Xbox 360 и лампы Philips Hue. В приложении приведен список всего оборудования, которое понадобится вам для домашней лаборатории, независимо от того, планируете ли вы модифицировать печатную плату или собирать и анализировать графики потребляемой мощности.

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

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

Кто такой погонщик нейросетей и как им стать: большая подборка ресурсов по ML для начинающих

Level of difficultyMedium
Reading time7 min
Views12K

Может ли искусственный интеллект прогнать нас от компьютеров и отправить работать на завод или собирать ягоды?

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

300+ часов полезной инфы под катом

Дьявол в мелочах: белковый нанокомпьютер для клеточной терапии

Reading time14 min
Views1.7K


Даже самые грандиозные вещи куда проще понять, если разложить их на составляющие. Подобный принцип не является чем-то новым в научном сообществе, так как многие процессы и явления описывались и описываются путем предварительного обозначения их элементов. Говоря об организме человека и о заболеваниях, которыми он страдает, также крайне важно найти первоисточник недуга. Даже самые серьезные заболевания с самыми ярко выраженными симптомами берут свое начало из строительных блоков любого живого организма — клеток. Создание механизма непосредственного воздействия на клетки с последующим их восстановлением является одной из важнейших задач современной науки. Ученые из университета штата Пенсильвания (США) стали на шаг ближе к достижению этой цели, разработав белковый нанокомпьютер, способный модулировать поведение клеток. Из чего сделан компьютер, какими именно функциями он обладает, и как именно он может быть использован на практике? Ответы на эти вопросы мы найдем в докладе ученых.
Читать дальше →

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

Level of difficultyMedium
Reading time9 min
Views11K
image

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
Читать дальше →

Какая ты кривая, или математика вокруг нас

Level of difficultyEasy
Reading time15 min
Views27K

Слово «математика» у кого-то ассоциируется с вечной зубрёжкой и строгим учителем, другие же представляют себе некоторую абстракцию, существующую отдельно от нашего мира, но есть и те, кто видит проявления этой науки в нашей повседневной жизни.

Читать далее

Графы и программирование

Level of difficultyMedium
Reading time12 min
Views20K

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

Характеристика связности графов часто описывается достижимостью из некоторой вершины графа всех других, а очевидное средство такой достижимости проложенный между парой вершин путь. Наличие множества путей, покрывающих вершины и\или ребра (дуги) графа, обеспечивает часто решение целевых задач таких, например, как минимизация контрольных точек или тестирование программ. Затрагиваются вопросы и цикломатической сложности графа.

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

Читать далее

Полезен ли сегодня быстрый обратный квадратный корень из Quake III?

Reading time23 min
Views75K

В 2005 году id Software опубликовала под лицензией GPL-2 исходный код своей игры 1999 года Quake III Arena. В файле code/game/q_math.c есть функция для вычисления обратного квадратного корня числа, которая на первый взгляд выглядит очень любопытным алгоритмом:

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // зловещий хакинг чисел с плавающей запятой на уровне битов
    i  = 0x5f3759df - ( i >> 1 );               // какого чёрта?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // первая итерация
//  y  = y * ( threehalfs - ( x2 * y * y ) );   // вторая итерация, можно удалить

    return y;
}

Об этом алгоритме написано множество статей, и ему посвящена хорошая страница Википедии, где он назван fast inverse square root (быстрым обратным квадратным корнем). На самом деле, этот алгоритм упоминался на различных форумах ещё до публикации исходного кода Q3. Ryszard из Beyond3D провёл в 2004-2005 годах исследование и в конечном итоге выяснил, что первоначальным автором алгоритма был Грег Уолш из Ardent Computer, который создал его десятью годами ранее.
Читать дальше →

Гипотеза Коллатца. Взгляд со стороны двоичной системы счислений

Level of difficultyEasy
Reading time8 min
Views11K

Обзор гипотезы Коллатца с позиции двоичной системы счислений (не только отбрасывание 0 в конце, но и обзор операций с 1 в конце).

Читать далее

Производная с вещественным показателем

Level of difficultyMedium
Reading time7 min
Views14K

Этой идеей со мной поделился однокурсник по физфаку Харьковского университета Витька Середницкий на одной из общажных посиделок (читай — попоек). Были мы молоды, усердно грызли гранит науки, всерьез думали, что будем всю жизнь заниматься теоретической физикой, да и время для мечтаний на дворе было подходящее — год примерно 1989. Идея оказалась не нова, но поисследовать ее я загорелся, и вот что получилось.

Функция с достаточно хорошим поведением (я опускаю здесь математические тонкости) может быть представлена в виде ряда Фурье, разложения по синусам и косинусам:

Читать далее

32 полезных Rust крейта, о которых вы могли не знать

Level of difficultyEasy
Reading time19 min
Views8.8K

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

Читать далее

Information

Rating
7,421-st
Registered
Activity