Обновить
52
0.1
Valentin Nechayev@netch80

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

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

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

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели10K

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

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

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

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели11K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели5K

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

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

Читать далее

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение44 мин
Охват и читатели19K

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

int a;

a = 5;

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

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

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

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

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

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

Читать далее

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

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


Предыстория


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

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

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

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели3.8K

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели3.9K

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

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

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

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

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

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

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

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

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

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.
Читать дальше →

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

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели14K

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение28 мин
Охват и читатели1.7K

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

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

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

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

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

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

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

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

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

Продолжение

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

Время на прочтение18 мин
Охват и читатели27K
Привет, Хабр! Представляю вашему вниманию перевод статьи «To Wash It All Away» автора James Mickens.



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

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

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

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

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

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

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение127 мин
Охват и читатели2.8K

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

Читать далее

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

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

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

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

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

Информация

В рейтинге
4 199-й
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность