Как стать автором
Обновить
1
0

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

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

Подборка игр с низкоуровневым программированием

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

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

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

Подробности
Всего голосов 67: ↑66 и ↓1+79
Комментарии26

PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

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

В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела — KeyStore, UI и ViewModel.

Читать далее
Всего голосов 9: ↑9 и ↓0+13
Комментарии6

Создание процессора с нуля для чайников

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

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

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

В данной статьей мы пройдем путь создания процессора от единичного транзистора до работающего 8-битного процессора, и напишем свой ассемблер для него.

Читать далее
Всего голосов 112: ↑112 и ↓0+138
Комментарии71

Как устроены аннотации в Kotlin. Часть 2

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

Привет! Сегодня с вами Максим Кругликов из Surf Android Team, и мы продолжаем статью об аннотациях в Kotlin, в которой рассмотрим кодовую базу Moshi в качестве примера того, как реальная библиотека использует процессинг аннотаций, рефлексию и lint. В первой мы рассказывали об этих трёх механизмах — рекомендуем посмотреть сначала её.

Читать дальше
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Как устроены аннотации в Kotlin. Часть 1

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

Привет! Сегодня с вами Максим Кругликов из Surf Android Team с переводом статьи про устройство аннотаций в Kotlin и три основных механизма их обработки: процессинг, рефлексию и lint.

Читать дальше
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Прошиваем программу не только в начало FLASH памяти STM32

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

Знаете ли вы куда попадает ваша программа после того, как вы нажали кнопку RUN или DEBUG в IDE? Если да, то как изменить этот адрес или даже выйти за пределы постоянной памяти и прожигаться сразу в оперативную память? Небольшая статья, которую я сам в свое время не нашел и потратил много часов и нервов на сбор этой не хитрой информации.

Читать далее
Всего голосов 19: ↑15 и ↓4+19
Комментарии31

Фокусы с опторазвязкой

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

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

Читать далее
Всего голосов 125: ↑124 и ↓1+160
Комментарии63

Аккумуляторы жадного человека

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

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

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

Всё это сильно раздражает жабу и требует найти возможность использовать всю имеющуюся в аккумуляторах энергию. И заряжать до максимума и не больше. Как же у каждого аккумулятора взять столько энергии сколько он может дать, и зарядить до максимального уровня не теряя на балансировке?

Читать далее
Всего голосов 18: ↑17 и ↓1+22
Комментарии14

Современные способы запуска фоновой работы в Android

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

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

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии11

Меня зовут Игорь, 33 года я произвожу электронику и ненавижу продажи

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

Наши устройства летали в космос, с ними исследовали поведение бурундуков, и 4 раза мы попадали в книгу рекордов Гиннеса, как самые маленькие диктофоны в мире (37х15х7 мм). Диктофоны использовали для предотвращения терактов в Лондоне в 2006 г., после которых запретили провоз жидкостей в самолетах.

Но сегодня мы продаем на 3 млн ₽ в месяц, потеряли весь экспорт, вынуждены закрывать новые разработки, а я, как владелец производства в Зеленограде, зарабатываю меньше среднего айтишника-сеньора.

Читать далее
Всего голосов 95: ↑86 и ↓9+99
Комментарии206

К вопросу о выпрямителе

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

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

И в чем же я ошибался?
Всего голосов 29: ↑28 и ↓1+37
Комментарии30

Управление напряжением PWM сигналом (PWM+RC=DAC)

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

В очередной тестировочной электронной плате появилась нужда выставлять напряжения на клеммах.

Существует очень остроумный способ собрать DAC используя PWM сигнал и аналоговый RC фильтр. На выходе будет желаемое напряжение. Причем, уровнем этого напряжения можно управлять цифровым образом из программы в микроконтроллере.

В этом тексте я написал как мне это удалось.

Читать далее
Всего голосов 15: ↑13 и ↓2+18
Комментарии182

Как рисовать Sequence без боли и страданий в PlantUML

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

Привет! Меня зовут Настя, я старший системный аналитик в X5 Tech. Я рисую sequence-диаграммы каждый день на протяжении четырёх лет. За это время я прошла все круги ада по Данте, то есть попробовала разные инструменты для рисования этих самых диаграмм. Пока не встретила его – PlantUML. 

Что удивительно, инструмент довольно не новый, но тем не менее лучше него я пока не встречала. А ещё удивительно, что он не особо популярный. Когда мы запустили в управлении системного анализа первый воркшоп по PlantUML, за 3 минуты после анонса пришли 12 заявок от аналитиков разных грейдов – от Junior до Lead. 

В процессе подготовки материалов к воркшопу мы искали статьи и литературу, которые помогли бы дополнительно изучить sequence-диаграммы в PlantUML. Ничего интересного мы не нашли. 

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

Поэтому и появилась эта статья. 

Почему PlantUML?
Всего голосов 28: ↑28 и ↓0+34
Комментарии37

Эффективная запитка от литиевых аккумуляторов (серия TI TPS63xxx)

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


Эта статья посвящена разбору решений по запитке 3,3-вольтовых контроллеров (и их периферии) от литиевых аккумуляторов, напряжение которых меняется в процессе работы от 4,2 В до 3 В и даже ниже, в случае глубокого разряда.

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

Обо всём этом мы и поговорим далее (решение есть!).
Читать дальше →
Всего голосов 37: ↑37 и ↓0+55
Комментарии25

Анализируем HTTP трафик в Wireshark

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

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

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

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

Читать далее
Всего голосов 13: ↑13 и ↓0+15
Комментарии1

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

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

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


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


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

Читать дальше →
Всего голосов 24: ↑24 и ↓0+34
Комментарии7

Превращаем Android-смартфон в USB-клавиатуру, мышь и флешку

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

Android-смартфон при подключении к компьютеру через USB может выглядеть как медиаустройство, модем или хранилище файлов. В этой статье мы научимся делать из него USB-клавиатуру, мышь и флешку.
Читать дальше →
Всего голосов 59: ↑59 и ↓0+82
Комментарии48

Практичные и не очень проекты на базе Raspberry Pi и не только: DIY-проекты весны 2024 года

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

«Малинка» — один из наиболее популярных одноплатников, который, собственно, и положил начало экспансии одноплатных ПК на рынок. На основе Raspberry Pi различных версий созданы десятки тысяч проектов, от just for fun до промышленных систем. Под катом расскажем про новые идеи, которые, возможно, кто‑то из читателей Хабра захочет повторить.

Читать далее
Всего голосов 18: ↑15 и ↓3+22
Комментарии34

«Hello, World!» от мира сжатия данных. Канонический алгоритм Хаффмана

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии18

Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

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

Если вы хотите получить фундаментальные знания по разработки  iOS приложений с помощью SwiftUI, вам следует пройти стэнфордский курс CS193P. Предложенные в весеннем семестре 2023 года лекции Стэнфордского курса CS193P «Developing  Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») — это уже 3-я реинкарнация курса CS193P с фреймворком SwiftUI.

В настоящий момент действуют Xcode 15 / iOS 17, которые были представлены на WWDC 2023 уже после завершения курса CS193P, наиболее значимое обновление внесено в механизм реактивного UI в SwiftUI (макрос @Observable против протокола ObservableObject).

В иллюстрированных  русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17. Для большинства Лекций представлена версия с  использование макроса @Observable вместо протокола ObservableObject, в ряде случаев это потребовало нетривиальных решений. 

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность