Pull to refresh
8
0

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

Send message

Забытая история о том, как IBM изобрела автоматизированное производство микросхем

Level of difficultyMedium
Reading time14 min
Views5.5K

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

На тот момент Хардинг руководил отделом производственных исследований IBM в Ист-Фишкилле, штат Нью-Йорк. А проект, который он открыл, чтобы воплотить задуманное в жизнь, назывался Project SWIFT. Чтобы добиться столь короткого производственного цикла, требовался невероятный уровень автоматизации, достичь которого можно было только путем кардинального переосмысления принципов проектирования линий по производству микросхем.

Читать далее

Game++. Dancing with allocators

Level of difficultyEasy
Reading time34 min
Views8.1K

C и C++ не имеют встроенной сборки мусора, поэтому разработчик сам решает, как и когда выделять и освобождать память. Мы, конечно, можем покивать в сторону STL, сокрытия аллокаций в контейнерах, но от этого они никуда не денутся. Просто если раньше приходилось думать про выделенный кусок памяти, понимать, как он скажется на времени фрейма, помнить, что его надо удалить (а может, не надо и стоит оставить на следующий фрейм), то теперь всё заворачивается в сахарные контейнеры и разработку в стиле STL-blin-vse-sterpit. STL-то может и стерпит, и даже как-то будет ворочаться, однако не стоит полагаться исключительно на системный аллокатор, бездумно вызывая new или malloc для каждого запроса памяти. Вы ведь понимаете, что std::vector посреди цикла или горячей функции — это плохая идея?

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

Пытаться оптимизировать код, который использует системные аллокаторы, — всё равно что сгребать листья в кучу ветреным днём: куча, конечно, сгребается, но постоянно приходится махать грабельками, чтобы она оставалась на одном месте. Даже если выделения памяти происходят последовательно, друг за другом, вот прям без всяких перерывов, нет гарантии, что эти участки будут расположены хотя бы близко друг к другу. В результате при обработке таких данных процессору приходится прыгать по разным участкам памяти, теряя такты просто на поиск данных вместо того, чтобы работать с ними.

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

Ребята из HFT, Database, Automotive и Embedded-систем наверняка могут рассказать немало интересных историй про оптимизацию new/delete. Давайте я расскажу немного про разные аллокаторы в играх?

Аллокатор аллокатору аллокации аллоцировал

Perforator: новая система непрерывного профилирования теперь в опенсорсе

Level of difficultyMedium
Reading time21 min
Views31K

Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов.

В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux.

При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях.

Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

Читать далее

Безумные и забавные факты о SQLite

Level of difficultyMedium
Reading time5 min
Views30K

  1. SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite.

    Её поддерживают три человека. Они не допускают внешних контрибьюторов.
Читать дальше →

Сжатие медиа для экономии места

Level of difficultyEasy
Reading time51 min
Views4.7K

Вы наверняка имеете медиа файлы закодированные не самым эффективным кодеком (H.264, JPEG, MP3). И вы можете сократить их размер вплоть до 75% перекодировав медиа современными альтернативами (H.265, AVIF, OPUS).

Использовать для этого можно консольные утилиты ffmpeg и magick.

Рассмотреть альтернативы

Стать тимлидом или остаться разработчиком: что выбрать?

Level of difficultyEasy
Reading time16 min
Views6K

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

Читать далее

Cкрытое владение бизнесом в России — является ли схема преступлением по ст. 173.1 и 173.2 Уголовного кодекса РФ

Level of difficultyHard
Reading time12 min
Views1.9K

В сети появляется всё больше информации о незаконности схемы скрытого владения бизнесом и отождествления её с преступлениями, предусмотренными статьями 173.1 и 173.2 УК РФ. В этой статье разберём, так ли это на самом деле и как законно и безопасно оформить указанную схему на практике с помощью опциона, корпоративного и наследственного договоров.

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

Читать далее

А в чем проблема работать с файлами?

Level of difficultyMedium
Reading time53 min
Views35K

Данные - это важный компонент системы. Приложение может хранить их где угодно, но в результате все сводится к файлам. Файлы - это хорошая абстракция, но она протекает: если не знать того, как работают ОС или гарантии файловой системы, то легко выстрелить себе в ногу.

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее

Всё про конфиги

Level of difficultyEasy
Reading time21 min
Views8.6K

Материалы лекции про конфигурационные файлы — все основные аспекты написания и использования конфигов для самых маленьких, примеры кода на python.

Узнать страшную правду

Промптинг: действительно полезное руководство

Level of difficultyMedium
Reading time11 min
Views17K

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

Читать далее

HFSS student. бесплатная версия

Reading time3 min
Views2.1K

Всем здравствуйте! Полагаю, что софт для разработки антенн и электродинамической симуляции - HFSS Design не нуждается в подробном представлении. С момента своего появления за почти тридцатилетнюю историю, летом 2021 года появилась его бесплатная студенческая версия. Она имеет ограничение на размер рассчитываемых моделей, однако для болшей части учебных задач он подходит. Здесь я бы хотел рассказать где скачать этот софт и как создать что-то типа "Hello World'a" с созданием тестовой модели в пару кликов.

Читать далее

Управление проектами: дайджест публикаций #22

Level of difficultyEasy
Reading time8 min
Views1.2K

USM, НеЖелательные Явления, ненужная документация, допущения и ограничения, тупиковый путь в тимлиды, красные флаги при трудоустройстве и всё интересное, что писали на этой неделе про управление проектами. Мы прочитали все публикации и выбрали для вас самые крутые и полезные. Читайте, сохраняйте и применяйте!

Читать далее

Physics-based и data-driven моделирование

Level of difficultyEasy
Reading time4 min
Views1.8K

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

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

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

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

Читать далее

10 лучших алгоритмов 20 века

Reading time7 min
Views48K
Прим. Эта статья была опубликована в майском номере 2000 года журнала SIAM. На рубеже веков появилась «мода» на подведение итогов уходящего столетия. И алгоритмы этой участи не избежали. В этой статье авторы делают обзор 10 лучших алгоритмов 20 века. Возможно, вам будет интересно узнать, какие алгоритмы, по мнению авторов списка, внесли наибольший вклад в развитие науки.

Algos — греческое слово, означающее боль. Algor — латинское слово, означающее холод. Но ни то, ни другое не является корнем слова «алгоритм», которое происходит от имени Аль-Хорезми – арабского ученого девятого века – чья книга «al-jabr wa’l muqabalah» (Китаб аль-джебр ва-ль-мукабала) переросла современные учебники по алгебре для средней школы. Аль-Хорезми подчеркивал важность методических процедур для решения задач. Будь он сегодня здесь, то, несомненно, был бы впечатлен вершинами математического метода, названного в его честь.

Часть из лучших алгоритмов компьютерной эры были освещены в январско-февральском выпуске 2000 года журнала Computing in Science & Engineering — совместном издании Американского института физики и Компьютерного общества IEEE. Приглашенные редакторы Jack Dongarra (Джек Донгарра) из Университета Теннесси и Francis Sullivan (Фрэнсис Салливан) из Института оборонного анализа составили список из 10 алгоритмов, который они назвали «Top Ten Algorithms of the Century».

«Мы попытались собрать 10 алгоритмов, оказавших наибольшее влияние на развитие и практику науки и техники в 20 веке», — пишут Донгарра и Салливан. По признанию авторов, как и в любом рейтинге, их выборы неизбежно будут спорными. Когда дело доходит до выбора лучшего алгоритма, кажется, что он и вовсе не существует.

Итак, вот список 10 лучших алгоритмов в хронологическом порядке. (Все даты и имена стоит воспринимать как аппроксимацию первого порядка. Большинство алгоритмов формируются в течение времени при участии многих ученых).
Читать дальше →

Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года

Level of difficultyEasy
Reading time15 min
Views245K

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

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

Читать далее

«Охота на электроовец: большая книга искусственного интеллекта» или как написать книгу про ИИ без регистрации и SMS

Level of difficultyEasy
Reading time7 min
Views10K

История о том, как за 6 лет я написал двухтомник, посвящённый искусственному интеллекту и машинному обучению

Читать далее

Справочник статистических методов для менеджеров продукта и маркетологов

Level of difficultyEasy
Reading time1 min
Views5.3K

Давно замечаю, что подавляющее большинство менеджеров (продакты, маркетологи, growth-менеджеры) ограничиваются, в основном, одним статистическим методом — хи-квадратом (Chi-squared test) — что уже неплохо, но это только верхушка айсберга. Методов гораздо больше, и каждый из них может закрывать свои задачи.

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

Поэтому собрал свой справочник с методами частотной аналитики. Старался сделать всё максимально просто: без формул, сложных терминов и заумных объяснений. Главное — чтобы было интуитивно понятно, какой метод выбрать и для какой задачи

Читать далее

10 правил для старта сценарного планирования

Reading time30 min
Views4.4K

Сценарное планирование - один из самых недооценённых и редко применяемых инструментов.

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

Ведь план - ничто, планирование - всё.

Разобрать сценарии и научиться их строить

Слово пацана (менеджерам и исполнителям посвящается)

Level of difficultyEasy
Reading time5 min
Views6.1K

Самое важное, что характеризует любого менеджера — это то, как он выдерживает собственные обещания. Не то, как он их дает, а то, как выдерживает.

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

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

Это статья про базовый софтскилл который касается и менеджеров и исполнителей: про умение нести отвественность. Если вам интересна тема софтскиллов, читайте другие мои статьи на Хабре и подписывайтесь на мой ТГ канал «Морковка спереди, морковка сзади».

Читать далее

Почему MMAP не лучший выход

Level of difficultyMedium
Reading time23 min
Views7.4K

Доступ к файлам через отображение-в-память (mmap) — это способность некоторых операционных систем отобразить содержимое какого-либо файла в адресное пространство программы. Сама программа получает доступ к содержимому файла через указатели, как если бы сам файл был бы целиком загружен в оперативную память. Операционная система прозрачно загружает части файла в оперативную память, и автоматически выгружает их, когда памяти не хватает.


MMAP захватила умы программистов СУБД на многие десятилетия, как альтернатива буферу данных. И вот здесь следует отметить, что в mmap имеются серьёзные проблемы с корректностью и скоростью работы с данными в современных СУБД. В реальности, некоторые известные СУБД сперва использовали mmap для работы с "больше-чем-вмещается-в-память" базами данных, но вскоре обнаружили эти скрытые ограничения, которые принудили их к самостоятельному управлению файловым вводом/выводом, после заметных трат на инженерные исследования. В этом смысле mmap и СУБД подобны сочетанию кофе и острой пищи: неудачное сочетание, которое не очевидно, пока сам не попробуешь.


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

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

Information

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