Обновить

Разработка

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

Заблуждения программистов о времени

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

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

Попытки собрать заблуждения про время и часовые пояса на Хабре уже были шесть и десять лет назад. Но без контрпримеров не так интересно.

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →

Чем программисту заняться в 1990 году: осваиваем чёрную магию ассемблера

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

Итак, DeLorean доставил вас в США 1990 года. Как и полагается в таких случаях, в машине что-то сломалось, так что вам предстоит задержаться на некоторое время. Пока Док Браун занимается ремонтом, вам тоже надо чем-то заняться. 

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

Вы вспоминаете, что вы ж программист – можно заняться программированием! 

Читать далее

Как я запустил Doom на дешевом кнопочном телефоне

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

Использовал кнопочный телефон, ворующий деньги со счёта, для запуска Doom: краткая история, небольшой обзор компонентов чипа/телефона, жалоба на закладки в прошивке и пожелания к созданию открытого API для создания своих приложений. Также некоторые ссылки (пока опубликована лишь часть кода нужного для запуска игры).

Читать далее

Пишем свой ROM BIOS

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

Со стародавних времён хотел попробовать создать собственный ROM BIOS, который будет записан в отдельную микросхему и будет выполнять какие-то полезные действия. Например, ROM BIOS установлен в видеокартах (по крайне мере старых), контроллерах дисков и много где ещё — это фактически расширения обычного BIOS. Понимаю, что это всё старьё и тягаться с возможностями современного UEFI бессмысленно, но мне очень хотелось создать свой собственный образ, который находится физически в отдельной микросхеме и работает при старте системы. Поэтому пришлось даже для этих целей найти старый комп.

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

В этой статье мы с вами разберём создание своего ROM BIOS, дальше я расскажу про тонкости и нюансы, напишу низкоуровневый «Hello world», сделаю настоящий интерпретатор BASIC ROM, который стартует при включении компьютера, как в первых IBM PC.
Читать дальше →

Насколько круто иметь свой сервер в комнате

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

Некоторые олды часто вспоминают эпоху до смартфонов, когда в студенческие времена или в школе у них был любимый настольный компьютер. Он стоял прямо в комнате, рядом с кроватью, и работал как личный ассистент в режиме 24/7: играл фоновую музыку (со специальным плейлистом, когда в гости приходили девушки), показывал фильмы, будил уведомлением из аськи или ирки, скачивал сайты ночью по диалапу и т. д.

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

Пишем приложение на Mi Band 7 с сервисной частью

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

Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документации по ZeppOS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений. 

Читать далее

Как я делаю опенсорсную статусную панель «я занят»

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

Прототип моего проекта светодиодной таблички, которая показывает что я занят — Busy StatusBar

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

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

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

Приглашаю всех желающих поучаствовать в разработке.
Читать дальше →

Как я случайно обошёл блокировку Google Pixel и получил за это $70 тысяч

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

Я обнаружил уязвимость, похоже, затронувшую все телефоны Google Pixel: вы можете дать мне любое заблокированное устройство Pixel, и я верну его вам разблокированным. Баг устранили в обновлении безопасности 5 ноября 2022 года.

Проблема позволяла атакующему с физическим доступом к телефону обойти меры защиты экрана блокировки (отпечаток пальца, PIN и так далее), получив полный доступ к устройству пользователя. Уязвимость зафиксирована как CVE-2022-20465; она может затронуть и устройства Android других производителей. Мои рекомендации по патчу и сырой баг-репорт, отправленные Google, можно найти здесь: feed.bugs.xdavidhu.me.
Читать дальше →

Чини опять свою Теслу сам, тыжпрограммист

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

Как получить root-доступ к Tesla? Как разобрать компьютер? Как подключиться? Чем отличаются компьютеры Тесла. Что делать если экран черный, а машина едет? Эти и многие другие вопросы мне задают регулярно.

На текущий момент прошлую статью о ремонте Тесла прочитали более 56.000 раз. Я получаю огромное количество вопросов, постараюсь ответить на самые распространенные из них.

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

Читать далее

Пневмоника и процессор постапокалипсиса

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

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

Удивительно, но струйная логика используется не только в ракетных двигателях или газодинамических подшипниках, но и в бытовых газовых счётчиках. Совершенно случайно я наткнулся на пост «Внутренности газового счётчика» на Пикабу и увидел своих старых знакомых. «Ребята, а что вы тут делаете?», — подумал я и понял: время пришло.
Читать дальше →

Автономный LTE роутер своими руками | Часть 1 — От идеи до схемы

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

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

Да-да, это именно разработка собственного роутера, не простой допил уже имеющегося и переупаковка в другой корпус. Отнюдь! Схема, печатная плата, пайка – всё сделаем сами и защитим диплом. Заинтересовал?

Тогда добро пожаловать под кат

Вредные заблуждения о нанометрах. Или почему наличие в России доступа только к 90нм – это катастрофа

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

Уходящий 2022-ой год, стал, безусловно, межевым для отечественной микроэлектроники. Введенные санкции лишили российские дизайн-центры доступа к заводам по производству разрабатываемой ими продукции, в первую очередь, к мощностям флагмана отрасли в лице тайваньской компании TSMC. Фактически, это означает, что на данный момент в России становится невозможным производить сколь либо современную кремниевую микроэлектронику, особенно в части высокопроизводительных решений. Краткий профессиональный разбор ситуации с обзором наших текущих возможностей ещё в марте этого года сделал уважаемый @CorneliusAgrippa. Если резюмировать – на данный момент Россия имеет возможность промышленно производить чипы по технологии 180 нм на заводе Микрон, с перспективой наладить 90 нм в ближайшее время (правительство поставило задачу сделать это до конца 2022-го года). Создание на имеющейся на Микроне линии промышленной технологии на 65 нм и ниже фактически невозможно. Причина в том, что завод Микрон работает на пластинах диаметра 200 мм, а технология производства на 65 нм сопровождалась параллельным переходом на пластины диаметром 300 мм. Поэтому, для такого перехода требуется, по сути, постройка нового завода, хотя имеющееся на Микроне литографическое оборудование потенциально позволяет создание 65 нм техпроцесса.

Читать далее

Система типов — лучший друг программиста

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

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

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать дальше →

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

Проектируем процессор постапокалипсиса с помощью openSource

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

Проектируемый компьютер на сверхминиатюрных электронных лампах хоть и является радиационно-стойким, однако работает на электричестве. Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей. На руинах цивилизации гораздо проще организовать массовое производство логических элементов, работающих на эффекте прилипания струи воздуха к стенке — при этом сам элемент можно лепить хоть из глины! И мало того, что для создания потока воздуха не обязательно использовать электричество — теоретически такой процессор сможет работать на энергии ударной волны ядерного взрыва! Но обо всём по порядку. Для тех, кто следит за проектом DekatronPC — не пугайтесь, ему ничего не угрожает.

В прошлый раз в статье «Пневмоника и влажные мечты стимпанка» я уже рассказывал о струйных логических элементах и поделился мыслями о том, что в принципе на этой технологии можно собрать полноценное вычислительное устройство.
Читать дальше →

Почему массивы начинаются с нуля

Время на прочтение7 мин
Охват и читатели67K
Самое очевидное объяснение: индекс — это смещение относительно начала массива. Так элементы массива легче адресовать в памяти.

Проверим это на C.

#include <stdio.h>
int main()
{
    int data[3] = {1, 2, 3};
    int i = 0;
    printf("Array address: %p\n", data);
    do {
        printf("Array[%u] = %p\n", i, (void *)(&data[i]));
        i++;
    } while(i < 3);
}

Получим результат:

Array address: 0x7ffd7c514a6c
Array[0] = 0x7ffd7c514a6c
Array[1] = 0x7ffd7c514a70
Array[2] = 0x7ffd7c514a74


Как первый (нулевой) элемент, так и сам массив находятся по одному и тому же адресу, поскольку 0-й элемент удалён на 0 элементов от начала. Эта связь между указателями и массивами в C настолько тесная, что их даже можно рассматривать вместе.

Однако это ответ на вопрос «зачем», а не «почему». Нумеровать массивы с нуля стали не сразу. Удивительно, но развитие такого простого вопроса не умещается в предложении или абзаце.
Читать дальше →

Бюджет потерь USB 3.2

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

Откуда столько названий стандартов USB? Какие допустимые потери сигнала в кабеле по спецификации, и почему почти никто ей не следует? Как измерить потери в дифференциальной линии и не продать почку?

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

Страх и ненависть в спецификации USB

Почему уходят из 1С?

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

Скромная "ответочка" на статью про то, что 1С-ники гораздо умнее коллег из других ЯП.

Как IT специалист, знакомый с теми и другими, постараюсь оппонировать утверждениям из оригинальной статьи.

Читать далее

Отдай ребёнка дьяволу или купи мне пиво: вот, чем вы рискуете, когда используете свободное ПО

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

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

Читать далее

nocc — распределённый компилятор для гигантских проектов на С++

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

У нас есть задача постоянно компилировать тонны плюсового кода. Наш проект — почти 200 000 cpp- и h-файлов, множество Git-веток, сотни разработчиков, десятки билд-агентов: его нельзя единожды скомпилировать, приходится перекомпилировать постоянно, параллельно, разные версии.

Наш проект необычный. Потому что эти 200 000 файлов — это результат автогенерации. Потому что пишем мы на PHP, а потом через KPHP все PHP-исходники превращаются в плюсы. Именно так разрабатывается бэкенд ВКонтакте.

Компилировать тысячи объектников долго. Локально это занимает много часов. Мы использовали distcc — но всё равно медленно. Мы даже пропатчили distcc для поддержки precompiled headers — но даже тогда медленно. И решили написать своё — чтоб стало, наконец, быстро.

В итоге мы написали замену distcc — компилятор nocc. Он не имеет никакого отношения к PHP и даже к KPHP, а просто предназначен для компиляции .cpp.o в промышленных масштабах.

Это техническая статья про параллелизацию, демоны и специфику С++. Ссылки на GitHub и видео приложу в конце статьи.

Читать далее

Аппаратный ЭЛТ-фильтр для картинок

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

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

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

Как вы понимаете, этот проект — самый эпичный долгострой в моей жизни, раз я задумал его ещё в конце 2000-х. Где-то примерно в году 2015 он работал для друзей, и даже в 2016 году он ездил на Chaos Construction. Но это всё было не то, интерфейсы не те. И вот, наконец проект завершён, и может быть показан широкому зрителю.

А прежде, чем вы залезете под кат, можно сразу попробовать отфильтровать картинку — достаточно просто зайти в мой телеграмм бот

Поехали, ниже много аппаратной жести.
Читать дальше →