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

Энтузиаст

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

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

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


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 63: ↑62 и ↓1 +61
Комментарии 37

Стохастический язык программирования на основе алгоритмов Маркова

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

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →
Всего голосов 139: ↑139 и ↓0 +139
Комментарии 24

Пишем игру от первого лица в 2КБ на Rust

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

Введение


Поначалу кажется, что создать игру от первого лица без движка или графического API практические невозможно. В этом посте я расскажу, как это сделать при помощи алгоритма под названием ray casting.

Моя цель — показать, что сложную задачу можно разбить на более простые части, и если я всё сделаю правильно, то у вас появится ощущение, что вы сами открыли, как работает игра.

Для начала разберёмся, как работает алгоритм, а затем построчно напишем его. Затем мы пересмотрим код, добавим несколько возможностей и оптимизируем его размер. Я постарался сделать пост максимально доступным и дружелюбным, но вам поможет приличное знание программирования, Rust и основ геометрии.
Читать дальше →
Всего голосов 78: ↑77 и ↓1 +76
Комментарии 10

Исторические исходные коды, с которыми должен быть знаком каждый разработчик

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

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

Читать далее
Всего голосов 50: ↑40 и ↓10 +30
Комментарии 14

Книга «Компьютерные сети. 6-е изд.»

Время на прочтение 23 мин
Количество просмотров 17K
image Привет, Хаброжители!

Мы отправили в типографию новое издание одной из ведущих книг классики Computer Science, а именно шестое издание «Компьютерных сетей».

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

Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 19

Книга «Computer Science для программиста-самоучки. Все что нужно знать о структурах данных и алгоритмах»

Время на прочтение 12 мин
Количество просмотров 21K
image Как дела, Хаброжители?

Книги Кори Альтхоффа вдохновили сотни тысяч людей на самостоятельное изучение программирования.

Чтобы стать профи в программировании, не обязательно иметь диплом в области computer science, и личный опыт Кори подтверждает это: он стал разработчиком ПО в eBay и добился этого самостоятельно.

Познакомьтесь с наиболее важными темами computer science, в которых должен разбираться каждый программист-самоучка, мечтающий о выдающейся карьере, — это структуры данных и алгоритмы. «Computer Science для программиста-самоучки» поможет вам пройти техническое интервью, без которого нельзя получить работу в «айти».

Книга написана для абсолютных новичков, поэтому у вас не должно возникнуть трудностей, даже если ранее вы ничего не слышали о computer science.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 7

Коллекционирую лучшие C++ практики

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

Коллекционирую лучшие C++ практики


Что-то наши публикации всё больше о плохом, чем о хорошем. Здесь баг, тут код с запахом, это антипаттерн, вот так писать не надо. Помогите увидеть светлую сторону программирования на С++. Оставляйте комментарии.

Читать дальше →
Всего голосов 38: ↑37 и ↓1 +36
Комментарии 9

Книга «Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 6-е изд.»

Время на прочтение 15 мин
Количество просмотров 16K
image Хорошего дня, Хаброжители!

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

• Изучите важнейшие аспекты языка PHP и основы объектно-ориентированного программирования.
• Познакомьтесь с базой данных MySQL.
• Управляйте cookie-файлами и сеансами, обеспечивайте высокий уровень безопасности.
• Пользуйтесь фундаментальными возможностями языка JavaScript.
• Применяйте вызовы AJAX, чтобы значительно повысить динамику вашего сайта.
• Изучите основы CSS для форматирования и оформления ваших страниц.
• Освойте продвинутые возможности HTML5: геолокацию, обработку аудио и видео, отрисовку на холсте
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 2

«Уехал, и что дальше?» — подборка для планирования жизни за границей

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

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

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

Читать скорее!
Всего голосов 103: ↑91 и ↓12 +79
Комментарии 234

Что Должно Быть в Каждом FirmWare Pепозитории

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

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

То есть перечислить самые универсальные и переносимые программные компоненты (кирпичики), которые могут пригодиться в практически любой сборке.

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

Взлом игрового архива трэш-клона GTA 3 и использование Kaitai для упрощения распаковки

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

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

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

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

Программирование под SIBO (EPOC16) в наши дни

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

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

Далее инструкция о том, где найти нужный софт, как его установить, как собрать простую программу под данный КПК и много чего ещё.

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

Кошачий глаз. Изучаем культовую радиолампу

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

Привет, Хабр! Есть в радиолампах какая-то первобытная магия, которая заставляет обращаться к ним не только гитаристов, в поисках приятных аудиальной эстетике «тёплых» чётных гармоник и мягких искажений при ограничении сигнала, но и просто любителей слушать музыку и паять электронные самоделки.

На днях я попробовала испытать электронную лампу 6Е1П 1967 года выпуска, а вместе с ней ещё три индикатора разных лет и стран изготовления.
Читать дальше →
Всего голосов 79: ↑78 и ↓1 +77
Комментарии 21

Когда есть только дисплей и больше ничего

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

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

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

Вы тоже любите дисплеи?

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

Началось всё с того, что, покупая какие-то вещи на барахолке, увидел у продавца разные симпатичные дисплейчики от мобильных телефонов и не только за небольшую цену. Решил взять за компанию в количестве трёх штук - "куда-нибудь пригодится". Шло время, делались разные проекты, а дисплеи мирно ждали своего часа где-то на полке. Но вот настал день, когда я добрался до них и решил всё-таки их оживить. Однако вот незадача, о данной модели экрана почти ничего неизвестно... Вот и обратная разработка на подходе. Интересно? Тогда поехали!

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

Как написать «Змейку» в четыре переменные?

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

Пишем классическую «Змейку», как на КДПВ, в четыре переменные. По словам автора, «Можно написать и с двумя, но зачем осложнять себе жизнь?» К старту курса по разработке на С++ приглашаем под кат.

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

12 схем архитектуры английской грамматики

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

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

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

Читать далее
Всего голосов 36: ↑28 и ↓8 +20
Комментарии 86

Стабилизированный блок питания для тёплых ламповых схем

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

Привет, Хабр! Сегодня соберём трансформаторный источник питания с мостовым выпрямителем и рассмотрим два типа линейных стабилизаторов напряжения. На транзисторном повторителе напряжения и на специализированной микросхеме.

А самое главное, что будем не только паять, но и разбираться, как эти электронные цепи работают. Это нужно не только для того, чтобы найти и устранить неисправность в случае, если она есть, но и определить, какая схема годится для нашей цели, и что в схеме можно изменить, чтобы она работала так, как нам надо.
Читать дальше →
Всего голосов 68: ↑64 и ↓4 +60
Комментарии 38

Баллада о долгоживущем софте

Время на прочтение 11 мин
Количество просмотров 50K
Увлекаясь коллекционированием старого хлама винтажной электроники, я научился ценить долгоиграющие проекты. Конечно, в моей коллекции часто попадаются экспонаты противоположного типа. Вот клавиатурный коммуникатор Nokia, аналогов которого больше нет. Вот минидисковый плеер, проигрыватель музыки с мертвого формата. А вот телевизор с трубкой: таких больше не делают! Все рано или поздно заканчивается, и с возрастом иногда хочется остановить, эм, неумолимую поступь прогресса.



С железками это сделать трудно, зато можно с программами. Уже более четверти века я занимаюсь развлечением под условным названием «переустановка Windows». В последнее время чаще я устанавливаю ОС либо на новый ПК, либо на один из своих ретроэкспонатов. Как у многих из вас, у меня есть список софта, который при каждой такой операции устанавливается в первую очередь. Некоторые из этих программ я регулярно устанавливаю, и пользуюсь ими лет 15 или даже больше. Все это время создатели обновляют и развивают их, это не заброшенные проекты. В этой статье я хочу отдать должное этим разработчикам-долгожителям в субъективном хит-параде древнего, но актуального софта.
Читать дальше →
Всего голосов 161: ↑160 и ↓1 +159
Комментарии 432

Руководство по версиям и возможностям Java

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

Здесь есть все, что вам нужно знать о различных версиях и функциях Java.



Java 8, Java 11, Java 13 — какая разница?


Вы можете использовать это руководство, чтобы найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-13.


Примечание переводчика
09 апреля 2020 г. Марко опубликовал новую версию Руководства, в которую добавлено описание Java 14.
Перевод новой версии Руководства предлагается Вашему вниманию.
Читать дальше →
Всего голосов 31: ↑30 и ↓1 +29
Комментарии 14

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность