Pull to refresh
52
0.1
Valentin Nechayev @netch80

Программист (backend/сети)

Send message

Невидимая оборона 386: как защищены входы и выходы процессора

Level of difficultyHard
Reading time19 min
Views6.9K

Я давно занимаюсь реверс-инжинирингом процессора Intel 386 и недавно наткнулся на любопытные схемы узлов выводов ввода/вывода (I/O). Поскольку эти выводы взаимодействуют с внешним миром, им угрожают особые опасности: статическое электричество и защёлкивание (latch-up) способны разрушить кристалл, а метастабильность — вызвать серьёзные сбои. Эти узлы ввода-вывода полностью отличаются от логических схем процессора 386, и мне попалась ранее не описанная схема триггера, так что я вступаю на неизведанную территорию. В этой статье я подробно разбираю, как именно узлы ввода-вывода защищают 386 от «драконов», способных его уничтожить.

Читать технический разбор 386

Как вероятность 1 к 73 000 000 стала приговором для матери двух младенцев: дело Салли Кларк

Level of difficultyEasy
Reading time7 min
Views8.4K

Ноябрьским вечером 1999 года присяжные собрались произнести вердикт в зале Честерского суда. На скамье подсудимых – 35-летняя адвокат из Чешира по имени Салли Кларк, мать двоих умерших младенцев. За окном холодно, а внутри – мёртвая тишина. Только что эксперт-педиатр сэр Рой Мидоу спокойно сообщил ошеломляющую цифру: вероятность того, что две здоровые дети из одной благополучной семьи скончались естественной смертью, равна «примерно одному шансу из 73 миллионов». Присяжные переглянулись: такое случается реже, чем раз в столетие. Казалось, сама статистика шепчет обвинение. Через несколько часов Салли услышит слово «виновна» – и звук захлопывающейся тюремной двери на долгие годы.

Два трагических случая легли в основу процесса. В декабре 1996 года первый сын Салли, 11-недельный Кристофер, внезапно перестал дышать в своей колыбели. Врачи назвали причиной «синдром внезапной детской смерти» (СВДС), то есть непредсказуемая гибель младенца без видимых причин. Горе молодых родителей не укладывалось в голове, но они старались жить дальше. Спустя год, в январе 1998-го, случилось немыслимое: умер второй сын, 8-недельный Гарри, тоже внезапно, во сне. Два случая СВДС в одной семье – статистическая редкость. Полиция, получив сигнал от патологоанатома, заподозрила худшее. Салли и её мужа арестовали по обвинению в убийстве младенцев, хотя ни прямых улик, ни мотива, ни признаков насилия не находили. Отца вскоре отпустили, а вот мать предали суду: против неё играла сама невероятность двух несчастий подряд.

Читать далее

Code Review с помощью ИИ: замена лиду или помощь стажёру?

Level of difficultyEasy
Reading time17 min
Views2.6K

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

Последние пару лет часто возникает вопрос: «А может ли ИИ заменить тимлида на code review?». Вопрос созрел не на пустом месте – инструменты на базе LLM теперь умеют и подсвечивать баги, и предлагать правки к pull request. Хайп подогревают отчёты: 84% разработчиков уже используют или планируют использовать ИИ в работе. Однако доверие к таким ассистентам хромает: почти 46% инженеров активно не доверяют ответам ИИ (против 33%, кто доверяет). Получается парадокс: пользуемся – но проверяем. Давайте разберёмся, где AI-ревью реально помогает, а где лид остаётся незаменим. Спойлер: место лидов в команде пока в безопасности.

Читать далее

Не смотрите на % использования процессора при гиперпоточности

Level of difficultyMedium
Reading time19 min
Views18K

Этот небольшой этюд служит как бы продолжением статьи "Проценты использования процессора — это ложная метрика". Мы попытаемся копнуть чуть поглубже и более детально разобраться как работает гиперпоточность (или гипертрединг, как его иногда называют).

Читать далее

Системы ценностей больших языковых моделей

Level of difficultyEasy
Reading time44 min
Views15K

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

Звучит странно, но языковые модели предвзяты. У них есть политические взгляды, любимые расы и даже люди, которыми они не прочь пожертвовать. Но обо всём по порядку.

Читать далее

Ай! Не туда! Как злоупотреблять симлинками и повышать привилегии (LPE-шиться) в Windows

Level of difficultyMedium
Reading time9 min
Views3.4K

Привет всем! Меня зовут Михаил Жмайло, я пентестер в команде CICADA8.

Символические ссылки присутствуют в Windows практически с момента его появления. Однако лишь немногие курсы по анализу защищенности смогут раскрыть весь их потенциал и добиться LPE!

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

Читать далее

Что значит инициализировать int в C++?

Level of difficultyMedium
Reading time10 min
Views16K

Недавно я получил по почте от Сэма Джонсона этот вопрос. Вот слегка отредактированное письмо Сэма:

«Возьмём для примера этот код в локальной области видимости функции:

int a;

a = 5;

Многие люди считают, что инициализация происходит в строке 1, потому что веб-сайты наподобие cppreference дают такое определение: "Инициализация переменной предоставляет его начальное значение на момент создания".

Однако я убеждён, что инициализация происходит в строке 2, потому что [в разных хороших книгах по C++] инициализация определяется как первое существенное значение, попадающее в переменную.

Можете ли вы сказать, какая строка считается инициализацией?»

Отличный вопрос. На Cppreference написано правильно, и для всех классовых типов ответ прост: объект инициализируется в строке 1 вызовом его стандартного конструктора.

Но (а вы ведь знали, что будет «но») для локального объекта фундаментального встроенного типа наподобие int ответ будет... чуть более сложным. И именно поэтому Сэм задал этот вопрос, ведь он знает, что язык достаточно свободно обращается с инициализацией таких локальных объектов по историческим причинам, имевшим в то время смысл.

Короткий ответ: вполне допустимо говорить, что переменная получает своё исходное значение в строке 2. Но заметьте, что я намеренно не сказал «Объект инициализируется в строке 2», к тому же и код, и этот ответ обходят молчанием более важный вопрос: «Ну ладно, а что, если код между строками 1 и 2 попробует считать значение объекта?»

Читать далее

Процессор на коленке ч.1

Level of difficultyMedium
Reading time11 min
Views14K


Предыстория


Захотелось мне как-то перевести управление станком на ПЛИС, а для этого понадобилось ядро процессора. Поиск на opencores не особо помог, x86 лицензированный, ARM лицензированный, NIOS… ну, вы поняли. Если выдумывать свою систему команд, может получиться криво, и главное, где брать компилятор. В общем, всё было сложно, так что на время идею пришлось отложить.
С недавних пор ситуация изменилась, архитектура RISC-V пошла в массы.

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

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

Level of difficultyHard
Reading time7 min
Views5.8K

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.

В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?

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

Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.

 ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.

Эта статья по сути не более, чем описание основных моментов идеи. И если у кого то появится желание поставить эту идею на строгие математические рельсы, с удовольствием готов поучаствовать. Кто в этом случае опубликует финальную версию мне искренне не важно.

Читать далее

Инженерия — не наука

Level of difficultyMedium
Reading time18 min
Views5.3K

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

Читать далее

Нейросети: обучение или деградация?

Level of difficultyEasy
Reading time13 min
Views5.9K

«Не отупею ли я от нейросетей, если перестану думать и буду всё спрашивать у Claude?» Наверное, каждый здесь хоть раз задавал себе этот вопрос. Есть такой червячок сомнения, правда?

Нейросети — очень мощная штука. Кто-то утверждает, что беседа с нейросетью — лучше психологов и лучше приема антидепрессантов. Но вот посудите сами, стал бы ты пить таблетку аспирина, будучи первым человеком на планете, который ее попробовал? О нет. Только если еще 200 человек попробуют таблетку и не бросят кони.

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

Гораздо лучше испытывать всё на студентах. На студентах — точно можно. Студенты — это другое. Примерно так подумали в компании Anthropic и собрали одно из самых масштабных исследований о влиянии нейросетей на человека и на процесс его обучения.

Чтобы студенты быстрее согласились на бесчеловечные эксперименты, им создали все условия — открыли бесплатный доступ к Claude (той самой, что стоит 2000 рублей в месяц), заставили профессоров мириться с использованием нейронок в процессе обучения и так далее.

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

Изумительно! Читать далее

Чему нас научила PDP-11?

Reading time19 min
Views28K

C. G. Bell, W. D. Strecker, “Computer What Have We Learned from the PDP-11,” The 3rd Annual Symposium on Computer Architecture Conference Proceedings, pp. l-14, 1976.

Эта статья, которую я выбрал сегодня, является ретроспективой компьютерного дизайна. Это одна из ряда статей Гордона Белла с различными соавторами, описывающей разработку, рост, и внезапную замену культовой линейки продуктов компании, миникомпьютеров PDP-11.
Читать дальше →

Какие проблемы создает использование ИИ программистами

Level of difficultyEasy
Reading time8 min
Views22K

Недавно посмотрел на ютубе видео, в котором поднимается проблема того, что на место классических программистов‑кодеров приходят «программисты»‑prompt‑инженеры.

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

И рассуждения я начну с вопроса — «ну и в чем проблемы?»

Перейти к статье

Называли ли древние скандинавы Русь «страной городов»?

Reading time7 min
Views6.9K

Казалось бы, вопрос достаточно глупый. Ведь во множестве книжек и даже в самой Википедии (!!!!) чёрным по белому написано, что древние скандинавы называли Русь ᚴᛅᚱᚦᛅᚱᛁᚴᛁ, то есть Garðaríki/ Gardarike/ Gårdarike, что переводится как «страна городов».

Тем не менее, сегодня я постараюсь объяснить, почему это плохой перевод. И почему этот термин правильнее было бы переводить как «страна оград», «страна городищ» или даже «страна заборов», вспоминая тексты песен одного нелюбимого мною классика.

Читать далее

Linux-десктоп своими руками: подключаем bluetooth-наушники

Reading time8 min
Views5.5K

Немного шаманства и колдовства, чтобы заставить работать беспроводные наушники без помощи Desktop Environment, особенно когда вы его не устанавливали

Читать далее

Под маской самозванца

Level of difficultyEasy
Reading time28 min
Views3.2K

Вам знакомо чувство, когда любой успех кажется случайностью, похвала — незаслуженной, а незначительный отказ — явным указанием, что с вами определенно что-то не так?

Если да, то уверен, что вы уже видели достаточно много статей про синдром самозванца — это психологическое состояние, при котором человек, несмотря на свои реальные достижения, чувствует себя обманщиком и боится, что его «ненастоящесть» будет раскрыта.

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

Лично мне такие советы никогда не помогали. На минуту становилось легче, но потом неуверенность снова возвращалась. Я долгое время страдал от этого синдрома и не мог понять — «что же со мной не так?»

У меня копилось все больше вопросов, касающихся моей ежедневной деятельности:

– Почему одни люди легко называют себя экспертами и несут полную ахинею, а я уже десятый раз переписываю свой пост в соцсетях, потому что вижу в нем все новые и новые непонятные мне темы?

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

– Почему я не верю, что меня возьмут на интересную мне вакансию, до которой я чуть-чуть не дотягиваю, но я легко соглашаюсь на позиции, которые уже давным-давно перерос?

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

Продолжение

[Перевод] Смыть

Reading time18 min
Views27K
Привет, Хабр! Представляю вашему вниманию перевод статьи «To Wash It All Away» автора James Mickens.



Когда я учился в аспирантуре в Анн-Арбор, у меня был друг, глубоко увлеченный движением защитников окружающей среды. Он покупал еду у местных фермеров, ездил на велосипеде вместо машины, желая уменьшить выбросы, и держал жуткое компостное ведро, которое, вероятно, будет источником следующей пандемии гриппа. Однажды он сказал мне, что собирается неделю пожить на ферме. Я спросил зачем, и он ответил, что хочет «побыть ближе к земле» — фраза, которую вы можете произнести с серьёзным лицом, только комментируя документальный фильм о древних южноамериканских племенах. Я сказал моему другу, что земля не хочет побыть ближе к нему и что если бы он действительно присмотрелся к земле, то увидел бы не молочные реки и кисельные берега, а голод, стервятников, непосильный труд с использованием тачек и в целом неприемлемые количества насекомых. Он разразился продолжительной лекцией об экологической ответственности, которую я тут же выбросил из головы, потому что понял, что мой наивный друг даст дуба на этой ферме, и посоветовал ему без колебаний возвращаться, если вдруг ему там будет недостаточно хорошо. Он улыбнулся мне так, как улыбаются люди в фильмах ужасов за минуту до встречи с топором, и отчалил.
Читать дальше →

100 символов, или Как влияет длина строки на читаемость текста

Reading time5 min
Views21K

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

Роберт Брингхерст в книге «Основы стиля в типографике» говорит, что оптимальное значение длины строки составляет от 45 до 75 знаков. 66 — идеальный вариант, а для многоколонного набора — 40—50 знаков.

Максим Ильяхов пишет, что за максимум берет 75 знаков, — столько помещается на страницу А4 с полями при наборе 12-м кеглем.

Smashing Magazine в 2009 году провели исследование и выяснили, что средний результат символов на строку равен 88,74, а среднее значение изменяется от 75 до 85.

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

Читать далее

Разработка цифровой аппаратуры нетрадиционным методом: CGA видеоадаптер на SpinalHDL

Level of difficultyHard
Reading time127 min
Views5.3K

В предыдущей статье (ч.1, ч.2) я рассказывал как построить свою полностью открытую вычислительную систему на опенсорсных решениях — некую синтезируемую систему-на-кристалле, которая будет адаптирована под ваши задачи, в которой всё до последнего триггера находится под вашим управлением и не зависит ни от рыночной конъюнктуры, ни от политических решений. В этой статье я расскажу и покажу как добавить к этой СнК простейший видеоадаптер под тип старого доброго Color Graphics Adapter (CGA), но с современным (HDMI) интерфейсом, с графическим и текстовым режимами и аппаратным скроллингом для плавной прокрутки изображений. Как и в предыдущей статье, речь пойдет о проектировании аппаратуры на языке SpinalHDL и синтезе её для микросхем ПЛИС, используя опенсорсный тул. Все эксперименты я буду проводить на плате «Карно» с ПЛИС Lattice серии ECP5, но весь мой код, за исключением части касающейся настроек PLL, будет аппаратно независимым и легко адаптируемым под любой тип микросхем ПЛИС из поддерживаемых тулчейном Yosys/NextPNR.

Читать далее

16-, 8- и 4-битные форматы чисел с плавающей запятой

Level of difficultyMedium
Reading time15 min
Views35K

Уже лет 50, со времён выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные числа расширенной точности типа «long double». Эти типы данных покрывали почти все нужды обработки вещественных чисел. Но в последние несколько лет, с наступлением эпохи больших нейросетевых моделей, у разработчиков появилась потребность в типах данных, которые не «больше», а «меньше» существующих, потребность в том, чтобы как можно сильнее «сжать» типы данных, представляющие числа с плавающей запятой.

Я, честно говоря, был удивлён, когда узнал о существовании 4-битного формата для представления чисел с плавающей запятой. Да как такое вообще возможно? Лучший способ узнать об этом — самостоятельно поработать с такими числами. Сейчас мы исследуем самые популярные форматы чисел с плавающей запятой, создадим с использованием некоторых из них простую нейронную сеть и понаблюдаем за тем, как она работает.

Читать далее
1
23 ...

Information

Rating
4,185-th
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity