Как стать автором
Поиск
Написать публикацию
Обновить

Все потоки

Сначала показывать
Период
Уровень сложности

Более быстрые хеш-таблицы: претенденты на место SwissTable

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

24 ноября 2021 года на сайте ArXiv.org была опубликована научная статья «Крошечные указатели» (Tiny Pointers) с описанием новой структуры данных — «крошечных» указателей, которые указывают путь к фрагменту хранимых данных и занимают меньше памяти, чем традиционные указатели.

Осенью 2021 года эту статью заметил Андрей Крапивин (Andrew Krapivin), студент Ратгерского университета в Нью-Джерси, и не придал ей особого значения, пишет Quanta Magazine, журнал о последних достижениях в математике (перевод статьи на Хабре). Только через два года он нашёл время, чтобы внимательно ознакомиться с материалом. И понял, насколько это прорывное изобретение, если применить его для оптимизации хеш-таблиц.

Данная тема уже упоминалась на Хабре, но заслуживает более подробного обсуждения.
Читать дальше →

Милый Amilo. Винтажный ноутбук с неожиданными характеристиками

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

Я очень люблю винтажную компьютерную технику — за тот непередаваемый шарм, которым обладают старые компьютеры. Поэтому увидев в продаже Fujitsu Siemens Amilo D 8820, я не смог удержаться и купил этот компьютер, чтобы попытаться вдохнуть в него вторую жизнь.
Читать дальше →

Самый маленький ЭЛТ-монитор

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K
Приветствую всех!
Помните, как лет пять назад в узких кругах были популярны эксперименты с видоискателями от старых кассетных видеокамер? И вот, увидев это всё, я захотел продолжить эту тему и показать ещё несколько девайсов, в которых используются миниатюрные ЭЛТ. Они, конечно, не так поражают своими размерами, однако подключить их ещё проще.



Да, это именно они — плоские ЭЛТ, начавшие своё распространение в портативных телевизорах и завершившие его в куда более привычных простым пользователям приборах. Именно такой экземпляр мы сегодня и увидим в работе, а заодно и посмотрим, можно ли вывести на него что-то поинтереснее того, что он обычно показывает.
Читать дальше →

Автопилот на Raspberry Pi для тракториста за 300$

Время на прочтение7 мин
Количество просмотров16K


Автопилот больше не прерогатива крупных агрохолдингов с многомиллионными бюджетами. Мы разрабатываем доступную по цене и простую в сборке систему, которую может собрать и установить любой фермер. Всё, что нужно — Raspberry Pi 4 или 5, электромотор, несколько датчиков и немного инженерной смекалки.
Мы делаем технологии доступнее и теперь каждый фермер может превратить свой трактор или комбайн в умного помощника без переплаты — компоненты для сборки автопилота TractorPilot будут стоить от 300$ (программное обеспечение бесплатное), вместо 5000-10000$ за готовую систему, которая при этом ещё и будет уступать TractorPilot по функциональным возможностям.
Читать дальше →

Game++. Dancing with allocators

Уровень сложностиПростой
Время на прочтение34 мин
Количество просмотров12K

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

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

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

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

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

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

Лучшие IT-работодатели России 2024: ежегодный рейтинг Хабр Карьеры

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров174K

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

Мы рады поделиться рейтингом лучших IT-работодателей России 2024. Под катом — про компании и качества, за которые их особенно ценят.

Смотреть победителей

Чапаев и Матрица: почему культура 90-х бунтовала против пластмассового мира? Часть 1

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

90-е годы были странным временем в мировой культуре. Одно за другим появлялись и становились коммерческими хитами произведения, постулировавшие иллюзорность нашего обыденного восприятия мира и куда более мрачное его устройство, скрытое от глаз обывателя. Тайные организации, всемогущие спецслужбы, прикидывающиеся людьми существа иного рода и их заговоры в разных сочетаниях стали одними из самых популярных тем. Под сомнения ставилась даже реальность реальности как таковой, а целью многих протагонистов стал выход за пределы иллюзорного в истинную реальность. Почему в девяностые мир стал казаться не совсем настоящим, причём в очень разных обществах: и на благополучном тогда Западе, и на оглушённом крахом СССР постсоветском пространстве, и в угодившей в кризис Японии?
Читать дальше →

ReactOS и 2024 год

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.1K

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

Читать далее

Сбер выкладывает GigaChat Lite в открытый доступ

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

Салют, Хабр! В начале ноября мы делились с вами новостями о нашем флагмане GigaChat MAX и пообещали рассказать подробнее о процессе создания наших Pretrain-моделей. Пришло время сдержать слово и даже пойти дальше! 

Предобучение больших языковых моделей — это одна из наиболее ресурсозатратных стадий, которая непосредственно влияет на весь дальнейший процесс обучения GigaChat. От успешности обучения Pretrain-модели напрямую зависит качество всех следующих этапов обучения, например, Alignment и Vision. Поэтому сегодня мы хотим поделиться весами младшей модели линейки GigaChat версий base и instruct. Модель называется GigaChat-20B-A3B, так как построена на перспективной МоЕ-архитектуре!

Но и это ещё не всё. Вместе с весами мы делимся с сообществом улучшенной реализацией DeepSeek МоЕ, а также кодом для механизма концентрации (а что это такое — читайте дальше ;)). Важно отметить, что хотя GigaChat-20B-A3B обучался на триллионах токенов преимущественно русского текста, он ещё способен на хорошем уровне понимать другие языки. Так что мы делимся мультиязычной моделью. О том, как запускать модель, какие версии доступны и как пользоваться контролируемой генерацией с помощью механизма концентрации, расскажем прямо сейчас!

Узнать что такое MoE

Экспортный измеритель влажности древесины IV1-1

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.2K
TL;DR: Расскажу о конструкции прибора для измерения содержания воды в древесине, покажу внутреннее устройство, монтаж, интересные конструкторские решения.


Я коллекционирую разные интересные штуки, и однажды на Авито встретил объявление о продаже прибора ИВ-1-1. Вероятно, я бы смог подавить импульс и проигнорировать его, но надпись на коробке отмела все сомнения. Он был произведён в Архангельске (я живу в нём). Очень захотелось посмотреть, как он внутри устроен. И начинка не разочаровала.
Читать и смотреть

Делаем опенсорс курс C++ 17+. Присоединяйтесь

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров14K
Небольшой командой энтузиастов мы уже два года развиваем проект Senior Junior. Это площадка с курсами от программистов для программистов. Из отзывов и разговоров с пользователями мы накопили любопытные наблюдения. Например, какие трюки помогают не бросить обучение на пол-пути и как избавиться от самообмана «ха, я точно понял эту тему».

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


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

Датчик линейного положения, работающий по принципу электронного штангенциркуля

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

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

См. также полный исходный код и журнал моих исследований по этому проекту.
Читать дальше →

Lampwork — декоративная стеклодувная техника. Часть 1. Работы подготовительные

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

Речь идёт об изготовлении в пламени горелки небольших декоративных вещиц из цветного художественного стекла на металлической спице, что радикально облегчает дело. Готовая работа, однако, имеет непременное технологическое отверстие от державки и цельностеклянное устройство. В основном это разнообразно украшенные стеклянные шарики-бусины для сборки дамской бижутерии, которые, впрочем, бывают настоящими произведениями искусства. Забава эта недешёвая, но, уже имея все её дорогостоящие компоненты, пройти мимо счёл бы преступной небрежностью. Опять же, лишних навыков и знаний не бывает.
Читать дальше →

Ближайшие события

Несколько «добрых» слов о текущей версии редактора Habr

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

"И так сойдет" ((c) М/Ф "Вовка в 3/9 царстве")
"Работает - не чини" ((c) вольный перевод афоризма Б.Ланса "If it ain't broke, don't fix it")

К появлению этой статьи привело совпадение нескольких событий.

Читать далее

Улучшаем безопасность ваших CI/CD через Shared Docker executor и OPA-плагин

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

Привет, Хабр! На связи команда безопасности Платформы в лице её тимлида Букина Владимира. Основная задача нашей команды — защита CI/CD и, в частности, GitLab с K8s. Дальше я расскажу вам о том, как мы внедряли, поддерживаем и улучшаем наш плагин авторизации для Docker socket.

Так сложилось в нашей индустрии, что ИБ всегда догоняет технологии, которые внедрили в IT. При внедрении технологии всплывают всевозможные риски, о которых не успели подумать при разработке. Для мира ИБ Docker и K8s — ещё совсем свежие технологии. Исследований не так много. Всё ещё куча уязвимостей (в том числе и необнаруженных), и поэтому поработать с ними особенно интересно.

В статье хочу рассказать о том, как мы сделали наши CI/CD-процессы более безопасными: в частности, про shared Docker executor и использование Open Policy Agent (OPA). Поделюсь нашими правилами для ОРА-плагина, которые можно переиспользовать в любой компании для того, чтобы обезопасить ваши контейнеры.

Статья будет особенно полезна инженерам ИБ, DevOps-инженерам, архитекторам и СТО, но и разработчики найдут для себя что-то интересное, я уверен.
Погнали!

Читать далее

Почему я скептично отношусь к переписыванию JS-инструментов на «быстрых» языках

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

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

Поэтому у меня вполне естественно возникает беспокойство по поводу охватившей сферу разработки одержимости переписывать каждый инструмент Node.js на быстрых языках вроде Rust, Zig, Go и прочих. Причём ценность этих языков я нисколько не преуменьшаю. Я даже принимал некоторое участие в разработке Servo, да и на столе прямо сейчас передо мной лежит книга по Rust. Но в целом основную часть своей карьеры я вложил в освоение всех нюансов JavaScript, и на данный момент этот язык для меня самый удобный.

Так что я признаю свою предвзятость (и, возможно, чрезмерный акцент на одном наборе навыков). Но, чем больше я об этом думаю, тем больше понимаю, что у моего скептицизма есть также обоснованные причины, о которых и пойдёт речь в текущей статье.
Читать дальше →

Hail to the Rainbow. Разработка игры длиною в вечность

Время на прочтение8 мин
Количество просмотров12K

Всем привет! Вот уже пятый год я веду разработку своего инди-проекта Hail to the Rainbow! Поскольку дело уже близится к финалу, я решил создать цикл статей на тему разработки , где хотел бы поделиться историей создания, техническими моментами, кейсами, связанными с неожиданными трудностями и прочими нюансами.

Читать далее

Неизвестно полезный CSS. Часть 5

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров13K


Привет, Хабр. Я продолжаю рассказывать про неизвестные широкому кругу разработчиков CSS-фишки. Я отбираю их так, чтобы они были полезны в разного рода проектах. Неважно, верстаете ли вы сайт для малого бизнеса или создаёте супермодное React-приложение. Они поддерживаются большинством браузеров. Отдельно отмечу, что я не считаю IE11 современным браузером. По этой причине я не учитывал его.

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

Часы Уоррена: устройство, которое совершило революцию в электросетях

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров27K

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

Сегодня расскажем про Генри Уоррена, который просто хотел сделать часы с электроприводом. А в результате получил устройство, синхронизирующее частоту электрической сети на 95% электростанций США. 

Читать далее

Будни ретрогеймера: а я сказал — BITMAN

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров7.8K

Ретрогейминг — довольно популярное сейчас увлечение старыми компьютерными и видеоиграми, от истоков индустрии и до того момента, в который актуальное нынешнее превращается в пыльное ретро. На данный момент эта условная граница пролегает где-то между поколениями PlayStation 2 и 3, в начале 2000-х годов.

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

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

Хотя в своих публикациях я обычно касаюсь более хардкорных граней ретрокомпьютинга, я тоже частенько ковыряюсь в старых приставках. Особенно кучно они пошли в этом году, и это навело на мысль посвятить этому занятию статью. Простая возня со старым железом, без мучительных копаний в википедийных фактах и прочей истории, околотехническое творчество и решение разнообразных проблем подручными средствами. Приступаем!
Читать дальше →
12 ...
50