Pull to refresh
87
0

Энтузиаст

Send message

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

Level of difficulty Medium
Reading time 10 min
Views 14K
image


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

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

Reading time 13 min
Views 26K

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

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

Level of difficulty Medium
Reading time 21 min
Views 13K

Введение


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

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

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

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

Level of difficulty Easy
Reading time 6 min
Views 25K

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

Читать далее
Total votes 50: ↑40 and ↓10 +30
Comments 14

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

Reading time 23 min
Views 17K
image Привет, Хаброжители!

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

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

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

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

Reading time 12 min
Views 21K
image Как дела, Хаброжители?

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

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

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

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

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

Reading time 3 min
Views 19K

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


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

Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 9

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

Reading time 15 min
Views 16K
image Хорошего дня, Хаброжители!

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

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

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

Reading time 3 min
Views 127K

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

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

Читать скорее!
Total votes 103: ↑91 and ↓12 +79
Comments 234

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

Reading time 10 min
Views 7.2K

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

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

Читать далее
Total votes 18: ↑14 and ↓4 +10
Comments 17

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

Reading time 12 min
Views 4.1K

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

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

Читать далее
Total votes 24: ↑24 and ↓0 +24
Comments 7

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

Reading time 7 min
Views 4K

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

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

Читать далее
Total votes 53: ↑53 and ↓0 +53
Comments 1

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

Reading time 7 min
Views 21K

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

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

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

Reading time 11 min
Views 21K

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

Читать далее
Total votes 63: ↑63 and ↓0 +63
Comments 27

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

Level of difficulty Medium
Reading time 15 min
Views 42K

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

Читать далее
Total votes 222: ↑222 and ↓0 +222
Comments 38

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

Reading time 10 min
Views 11K

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

Читать далее
Total votes 22: ↑18 and ↓4 +14
Comments 19

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

Reading time 12 min
Views 36K

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

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

Читать далее
Total votes 36: ↑28 and ↓8 +20
Comments 86

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

Reading time 9 min
Views 18K

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

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

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

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



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

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

Reading time 12 min
Views 155K

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



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


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


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

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity