Обновить
9
0.1

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

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

Как бессерверные gpu делают AI доступным. Введение в платформу PrimeWay

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

Привет, Хабр! Сегодня мы поговорим о том, как бессерверные-технологии меняют мир GPU-вычислений. Если вы когда-нибудь сталкивались с машинным обучением, рендерингом анализа 3D-графики или большими данными, эта статья поможет вам сэкономить время, деньги и нервы.

Читать далее

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

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7K
Картинка — Kaboompics, Flatart, Freepik

Сегодня мы поговорим о таком интересном классе электронных компонентов, который носит название «мемристоры» и позволяет даже строить на их основе нейросети.

Их привлекательность заключается в том, что их вполне можно делать даже самостоятельно, из подручных компонентов.

В последнее время мы привыкли, что под понятием нейросетей подразумеваются определённые программные структуры. Однако мемристоры позволяют строить нейросети на физической основе! О_о

Аппаратные физические нейросети… Как вам такое? :-) Весьма близко к тому, что мы видим в природе, кстати говоря…
Читать дальше →

Zip-файлы: история, объяснение и реализация

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


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →

Пишем игру на LUA для часов Xiaomi Redmi Watch 4.Часть 1. Знакомство с экосистемой Xiaomi

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

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

Я разобрал формат циферблатов Xiaomi последних поколений, сделал распаковщик циферблатов, и компилятор их для оригинального старого редактора циферблатов Xiaomi, сделал мод MiFitness, где активные пользователи сообщества создают и публикуют кастом циферблаты для часов, собрал из китайского IDE отдельный автономный эмулятор часов, для проверки циферблатов и приложений, модифицирую и дорабатываю оригинальные прошивки часов, а так же создаю приложения для данных моделей на JerryScript и LUA, о чем мы познакомимся подробнее чуть позже на примере данной игры.

Читать далее

Kubernetes в изоляции: когда ваш кластер не должен знать о существовании интернета

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

Вы думаете, что развернуть Kubernetes без интернета — это просто kubeadm init плюс пара манифестов? Посмотрим, как скрипты решают проблемы, о которых вы даже не задумывались. Спойлер: здесь есть чему удивиться.

Всем пример, меня зовут Даниил Миронюк, DevOps в команде Polymatica EPM. Сегодняшняя статья для тех, кто считает, что оффлайн‑установка Kubernetes — это скучно.

Читать далее

Создание 3D модели местности по видео с дрона

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

В данной статье речь пойдет про видеограмметрию-создание 3d моделей объектов на основе видео. Видеограмметрия появилась давно, но до сих пор используется редко из-за необходимости в более мощном "железе", чем при построении 3d моделей местности/объектов с помощью лидаров. В 2024 году производительность ПК настолько выросла, что теперь можно в течении разумного времени строить модели на домашних компьютерах и даже ноутбуках. Сначала покажу, какие модели получились у меня, затем поделюсь лайфхаками, которые помогут сразу строить модели обходя технические сложности, а в конце расскажу чем видеограмметрия может быть полезна.

Читать далее

Небольшие заметки про модель памяти на примере RISC-V

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

Идея статьи родилась после прочтения многочисленных источников в интернете по барьерам и моделям памяти.Так же, был просмотрены соответствующие видео с разъяснением. Много где в целом всё достаточно хорошо разжевано. Статья не претендует на исчерпывающий материал. Скорее, это обзорное описание на тему модели памяти в связке с RISC-V. Не рассчитана на entry level, рекомендуется сперва почитать что нибудь вводное.

Навряд ли кому то необходимо детальное знание внутренней архитектуры процессора на уровне RTL (register-transfer level), как и глубокого понимания принципов модели памяти, согласованности. Да и обычно вся эта информация берется из соответствующей литературе от производителя, других книгах по оптимизации. Предполагаю, что авторы в том или ином виде могу знать более глубокие вещи, чем представлены в открытых источниках. Возможно, они работали в компании производителя (Intel, например), общение, конференции, сообщества.

Но может ли быть источник лучший, чем исходники CPU? Навряд ли. Вы не найдете в открытом доступе исходники процессоров Intel, AMD и любых других. ARM за это денежки получает, продавая права на архитектуру и готовые спроектированные блоки. А вот для RISC-V такой источник есть - исходники полноценного суперскалярного out-of-order процессора от Berkley.

Не так давно был разработан язык Chisel на замену Verilog и аналогов. Он на базе Scala. А, так как это Scala, мы можем использовать IDE и внятную навигацию по исходникам. Но в исходники просто так не пойдешь, сперва надо приобрести необходимые фундаментальные знания, чтобы понимать в целом что такое разработка на уровне RTL. Неплохо бы разобраться с Verilog и с базовыми понятиями - всякие там защелки, регистры, мультиплексоры и тп. Это я и решил сделать и начал с книги “Паттерсон, Хеннесси: Архитектура компьютера и проектирование компьютерных систем”. Она безумно крутая и очень понятная. Затем прочитал несколько книг по FPGA и Verilog и даже купил учебную FPGA плату, но руки до неё так и не дошли. Это позволило сформировать для себя какую то необходимую картину того, как функционирует CPU, как происходит проектирование микроконтроллеров. 

Читать далее

Способы создания пользовательских компонентов в QML

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

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

Также одним из условий будет, чтобы внешний вид полученных элементов можно было редактировать в QtCreator.

Все исходники в репозитории.

Читать далее

Пишем свой FDW для PostgreSQL

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

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

В этой статье быстро разберём, как устроен PostgreSQL – от хранения данных в Heap и работы с FSM/VM до создания своего FDW с компрессией на базе zlib.

Читать далее

Thousand Brains Project — ИИ-фреймворк для сенсомоторного интеллекта с открытым кодом. Часть 1: Введение

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

Последнее десятилетие искусственный интеллект развивался преимущественно за счет методов глубокого обучения. Но создание систем, работающих в сложном трехмерном пространстве (даже несмотря на некоторые успехи VLA-моделей), остается по-прежнему трудной задачей. В статье представлен альтернативный подход к созданию систем искусственного интеллекта, разработанный Джеффом Хокинсом и командой Numenta (с начала этого года — Thousand Brains Project). Описана ранняя версия сенсомоторного агента, способного изучать объекты в пространстве подобно тому, как это происходит в неокортексе. Ключевой особенностью его архитектуры является использование повторяющегося вычислительного (обучающегося) модуля, подобного кортикальной колонке мозга млекопитающих.

Читать далее

Компилятор GO. Добавляем цикл WHILE

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

На одной из конференций я наблюдал, как наши коллеги реализовывали тернарный оператор в Go с помощью комментариев. Доклад длился всего минут 10, и, честно говоря, я не смог уловить ничего внятного, кроме того, что ребята явно хорошо повеселились. Однако это вдохновило меня разобраться, как работает компилятор Go под капотом. А лучший способ разобраться — это попробовать написать что-то своё.

Самым простым и понятным для меня в этом плане показалась реализация цикла while. В этой статье я покажу, что у меня получилось выяснить. Вот примерный результат, к которому мы придём:

Читать далее

Квантовые точки и их получение

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.5K
Картинка Kjpargeter, Freepik

Одно из интереснейших явлений — открытие «квантовых точек», и многие называют это существенной вехой, которая даёт начало целым направлениям в науке и технике.

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

Глубокое погружение в процедуру запуска JVM

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

Новый перевод от команды Spring АйО расскажет вам, что происходит при запуске самого простого приложения на Java, какие шаги выполняет JVM, сколько классов ей необходимо загрузить, чтобы просто написать «Hello World!» и как все это выглядит на уровне byte code.

Читать далее

Мой первый контейнер без Docker

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

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

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

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!
Читать дальше →

Hello World из байт-кода для JVM

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

Скомпилируем простенькую программу выводящую "Hello World" и пройдемся по его структуре


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


На самом деле, это не так сложно. Достаточно использовать инструмент javap из JDK и рассмотреть дизассемблированный код.


А мы приступим к разбору самой структуры байт-кода для JVM

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

Опыт разработки на доработанном pgTap

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

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

pgTap – это расширение PostgreSQL для разработки юнит-тестов. Сами тесты, как, собственно, и pgTap, пишутся на plpgSQL, что означает низкий порог вхождения для разработчиков PG.

Уверен, что читатель, по крайней мере, знаком с техникой разработки через тесты. Поэтому не буду пускаться в описание теории юнит-тестирования. Благо литературы на эту тему более чем достаточно. Тем не менее, чтобы быть понятым, приведу некоторые детали ниже.

Читать далее

Автоматизация внесения исправлений в исходные файлы С++ с помощью CLang LibTooling

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

image


Еще одна статья в продолжение темы анализа сходных текстов на С/С++ с помощью Clang. Предыдущие публикации:



Это не перевод довольно подробной публикации Emitting Diagnostics in Clang от Peter Goldsborough про различные нюансы диагностических инструментов у Clang, а преимущественно адаптация старого кода под текущую версию компилятора.


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

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

TanStack Router: современный и типобезопасный роутер для React

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

Если вы пишете на React и любите TypeScript, вам стоит обратить внимание на TanStack Router - современный, гибкий и полностью типобезопасный роутер. В статье разбираю его ключевые возможности (loaders, кэширование, работу с query-параметрами, SSR) и сравниваем с другими популярными решениями.

Читать далее

Декларативные конечные автоматы на Python

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

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

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

Читать далее

Информация

В рейтинге
3 460-й
Зарегистрирован
Активность