Svoboda | Graniru | BBC Russia | Golosameriki | Facebook
BBC Russian
918.76

Программирование *

Искусство создания компьютерных программ

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

Создание приложения под Мурмулятор ОС (1)

BBC RussianСложный
BBC Russian4 мин
BBC Russian527

Как я писал ранее (https://habr.com/ru/articles/839976/), Murmulator - одноплатный ультрадешевый микрокомпьютер на основе платы Raspberry Pi Pico (пика), которая, в свою очередь, основана на микроконтроллере - RP2040.

RP2040 - одна из наиболее известных двухъядерных реализаций ARM Cortex-M0+ с 264 КБ встроенной SRAM памяти и от 2-ух до 16-ти МБ flash-памяти подключаемых по QSPI интерфейсу, распаянной на плате пики.

Отдельную статью-тутуриал я посвятил использованию Мурмулятор ОС (МОС): https://habr.com/ru/articles/840052/ с точки зрения пользователя. Теперь имеет смысл описать процесс создания приложений под МОС.

МОС (рассматриваем текущую версию 0.2.7) поддерживает три вида приложений:

Читать далее
BBC Russian+1
BBC Russian0

Новости

Создание Discord бота для мониторинга цен на товары

BBC RussianСложный
BBC Russian14 мин
BBC Russian1.3K

Представьте себе ситуацию: вы внимательно следите за определённым продуктом на Яндекс.Маркете и хотите моментально получить уведомление, как только его цена изменится в желаемую сторону. Или, возможно, вы являетесь владельцем интернет-магазина и стремитесь постоянно отслеживать динамику цен конкурентов, чтобы оперативно реагировать и сохранять свою конкурентоспособность на рынке. В обоих этих случаях, а также во множестве других сценариев, Discord-бот для мониторинга цен станет вашим незаменимым цифровым помощником, работающим 24/7. В рамках этой подробной статьи мы детально разберём процесс создания такого многофункционального бота.

Читать далее
BBC Russian+1
BBC Russian3

Накрутил опыт и не вывез

BBC RussianПростой
BBC Russian5 мин
BBC Russian4.1K

Сейчас довольно тяжело устроиться в IT, если ты новичок. Это уже ни для кого не секрет. Есть много историй, где люди годами ищут первую работу, откликаются на тысячи вакансий и даже не имеют шансов просто попасть на собеседование.

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

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

Читать далее
BBC Russian+4
BBC Russian52

Симкод — современный язык ассемблера

BBC Russian33 мин
BBC Russian7.9K

Начну с определений.

Симкод — это последовательность симкоманд.

Симкоманда — это символьная машинная макрокоманда с Си-подобным синтаксисом.

Например, ассемблерной команде add rax, rbx соответствует симкоманда rax += rbx.

Симкод позволяет выразить любой ассемблерный код [и как следствие машинный], только в более человекочитаемом виде. Однако, симкод не пытается назначить символьное обозначение для абсолютно каждой ассемблерной команды — те команды ассемблера, которые не имеют символьной записи, оставляются как есть. Таким образом, симкод является надмножеством ассемблера.
Читать дальше →
BBC Russian+32
BBC Russian36

Истории

В поисках оптимальной модели итераторов

BBC Russian7 мин
BBC Russian1.9K

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

Глаз зацепился за реализацию итератора чтения файла по строкам. Для реализации итератора в Rust достаточно определения всего одной функции next()!
Это маленькое открытие сподвигло меня к изучению того, как реализованы итераторы в других языках программирования.

В данной статье я поделюсь результатами этого небольшого исследования, а также представлю новую модель итераторов, которую я планирую сделать основной для языка 11l, и которую можно уже сейчас использовать в C++ проектах посредством простого адаптера (вот пример использования).
Читать дальше →
BBC Russian-3
BBC Russian7

История POSIX: путь к портируемому ПО

BBC Russian8 мин
BBC Russian2.4K

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

Именно так произошло с Unix, который изначально был написан Кеном Томпсоном на языке ассемблера более пятидесяти лет назад. Первые версии Unix писались для платформы PDP-7, а для портирования его на PDP-11 нужно было переписывать код. Когда Дэннис Ритчи создал язык программирования C, и вместе с Томпсоном они переписали на нём основную часть кода Unix, внезапно оказалась возможной портируемость ПО. Тому были две главные причины. Во-первых, код, написанный на языке высокого уровня, не зависит от платформы, потому что компиляторы транслируют его в язык ассемблера целевой архитектуры. Это ещё важнее для целевых платформ на основе процессоров RISC, так как они требуют написания гораздо большего количества ассемблерных команд, чем процессоры CISC. Даже при портировании Unix на другую платформу основная сложность заключалась лишь в адаптации зависящих от архитектуры частей кода. С другой стороны, сама операционная система абстрагирует все особенности оборудования от пользовательской программы.

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

Читать далее
BBC Russian+12
BBC Russian5

Конкурс js13kGames или как написать игру объёмом 13 Кбайт

BBC Russian6 мин
BBC Russian1.8K

13 августа стартовал 13-й игровой джем js13kGames (JS13K) для разработчиков веб-игр на JavaScript. За месяц участникам предстоит написать браузерные игры, размер которых не должен превышать 13 килобайт при сжатии до формата ZIP. Темой JS13K этого года выбрали «Трискайдекафобию» — боязнь числа «13».

Читать далее
BBC Russian+9
BBC Russian1

Воспроизводим гитарные табулатуры на Rust

BBC Russian11 мин
BBC Russian2.8K

Если вы когда-нибудь пробовали учиться гитаре, то есть вероятность, что вы знакомы с гитарными табулатурами.

Это простой способ визуализации музыки для гитары, альтернативный нотам, при котором символами ASCII обозначаются струны и лады.

Например, вот первые четыре такта песни Smoke on the Water группы Deep Purple:

e|-----------------|-----------------|-----------------|-----------------|
B|-----------------|-----------------|-----------------|-----------------|
G|-----3---5-------|---3---6-5-------|-----3---5-----3-|-----------------|
D|-5---3---5-----5-|---3---6-5-------|-5---3---5-----3-|---5-------------|
A|-5-------------5-|-----------------|-5---------------|---5-------------|
E|-----------------|-----------------|-----------------|-----------------| <- верх

Эту песню играют в стандартном строе (EADGBe), обозначенном буквами слева, указывающими строй каждой струны. Цифры же означают, куда нужно ставить пальцы на грифе.

Кроме текстового описания стандартом де-факто стал формат, используемый в ПО Guitar Pro для рендеринга и синтезирования звука табулатуры.

Такие двоичные файлы в зависимости от версии ПО имеют расширение .gp3, .gp4, .gp5 или .gp6, их легко можно найти в Интернете на таких веб-сайтах, как Ultimate Guitar.

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

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

Так как TuxGuitar уже не поддерживается и написан на Java, я решил, что будет интересно написать собственный плейер табулатур на Rust.
Читать дальше →
BBC Russian+19
BBC Russian2

Из истории технологий: откуда взялся Unix

BBC RussianСредний
BBC Russian9 мин
BBC Russian6.3K

Сегодня многие полагают, что «Unix» и «Linux» — это одно и то же. Но по состоянию на 2024 год с большинством дистрибутивов, которые мы причисляем к «Unix» и «Linux» ситуация почти так и обстоит.

Но у Unix долгая история. Если у вас в распоряжении только известные сейчас системы Linux, то сложно размышлять о том «какова была ситуация на заре Unix», поскольку так много с тех пор изменилось.

Читать далее
BBC Russian+17
BBC Russian5

ZX Murmulator OS

BBC RussianСредний
BBC Russian6 мин
BBC Russian5K

ZX Murmulator - одноплатный ультрадешевый микрокомпьютер на основе платы Raspberry Pi Pico (далее "пика"), которая, в свою очередь, основана на микроконтроллере - RP2040.

RP2040 - одна из наиболее известных двухъядерных реализаций ARM Cortex-M0+ с 264 КБ встроенной SRAM памяти и от 2-ух до 16-ти МБ flash-памяти подключаемых по QSPI интерфейсу, распаянной на плате пики. Данный микроконтроллер легко гонится до 400 МГц без какого либо радиатора, не смотря на свои штатные 133. Что позволяет запускать на нём достаточно прожорливые задачи.

Читать далее
BBC Russian+28
BBC Russian25

Мурмулятор — ультрабюджетный микрокомпьютер

BBC RussianПростой
BBC Russian3 мин
BBC Russian14K

Как я познакомился с Мурмулятором? Я искал какой-то недорогой одноплатный компьютер для запуска эмуляторов ретро-компов.Чем меня не устраивало использование эмуляторов на "настоящем" компьютере? Ничем. Просто хотелось отдельное устройство. Я рассматривал вариант покупки старого ноута специально под эту задачу, потом смотрел на Raspberry Pi 400, Orange Pi и на прочие одноплатники. В процессе поисков я наткнулся на видео самостоятельной сборки оригинального одноплатника с бюджетом в $5. Понятно, что впоследствии я в эту сумму и близко не вложился, но данное изделие меня всё-таки зацепило. Вот так у меня и появился первый ZX Murmulator.

Читать далее
BBC Russian+50
BBC Russian6

Игрострой. С чего начинать

BBC RussianПростой
BBC Russian6 мин
BBC Russian3.7K

Привет всем! Меня зовут Ш. Сергей!

Я очень не хотел создавать подобные темы. И уже есть темы которые я уже создавал и там многое уже написано. А так же есть множество подобных тем, где люди написали больше меня и вероятно для кого-то более полезно чем я. Это и не удивительно, ведь я программист на Pascal/Assembler, от которых сейчас многие открещиваются как только могут.

В этой статье я постараюсь затронуть тему для всех ЯП и в своём большинстве для начинающих программистов. Так как именно они зачастую будут стоять перед выбором: "с чего же начинать?"

ознакомиться
BBC Russian+3
BBC Russian17

Одна маленькая особенность русского языка

BBC RussianПростой
BBC Russian6 мин
BBC Russian8.5K

Почему-то про эту «фичу» не любят распространяться опытные коллеги, а первая встреча с таким в вашем проекте гарантирует бессонные ночи и разбитые об стенку лбы и клавиатуры. Читайте и берегите нервы, говорят они не восстанавливаются.

Читать далее
BBC Russian-15
BBC Russian150

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн

Секрет внутри одного миллиона чекбоксов

BBC Russian7 мин
BBC Russian18K

Спустя несколько дней после начала разработки «одного миллиона чекбоксов» (One Million Checkboxes, см. новость на Хабре) я решил, что меня взламывают. Что это делает в моей базе данных?

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

Но вернёмся к началу.

Что такое One Million Checkboxes?


26 июня 2024 года я запустил веб-сайт под названием One Million Checkboxes (OMCB). На нём был один миллион глобальных чекбоксов — нажатие на чекбокс мгновенно переключало его состояние для всех на сайте.


Вот как выглядел сайт через полчаса после запуска

Мои ожидания от этого сайта были крайне малы и совершенно ошибочны. Я думал, что сотни игроков будут нажимать тысячи чекбоксов, однако за две недели работы сайта пятьсот тысяч игроков нажали на флажки более 650 миллионов раз. Сайт попал в новости New York Times и Washington Post; он есть в Know Your Meme и Википедии. Это было безумное приключение.
Читать дальше →
BBC Russian+114
BBC Russian23

А птицы-то не настоящие! Инструкция по созданию собственного «пернатого»

BBC RussianСредний
BBC Russian5 мин
BBC Russian4.3K
Птица для слежки

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

Теперь, когда я окончательно разрушил свою репутацию на LinkedIn, пора написать реальную статью.
Читать дальше →
BBC Russian+36
BBC Russian2

Camunda и Kafka: не откусывай больше, чем можешь проглотить

BBC RussianСредний
BBC Russian10 мин
BBC Russian6.2K

Привет, Хабр! Меня зовут Егор, я бэкенд-разработчик в T-Банке, участвую в разработке продуктов комплаенса. Недавно в одном из наших проектов мы столкнулись с проблемой низкой производительности Camunda — и хотим поделиться опытом, который мы получили в процессе ее решения.

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

Читать далее
BBC Russian+5
BBC Russian10

Работа с регистрами сведений в КД 3.1

BBC RussianСредний
BBC Russian10 мин
BBC Russian255

В статье рассматривается один из механизмов при работе с «Конвертацией данных 3.1», а именно — обмен данными регистра сведений в формате Enterprise Data.

При обсуждениях обмена данными с использованием КД 3 регистры сведений часто обходят стороной, уделяя основное внимание справочникам и документам. Эта статья призвана закрыть данный пробел. По пути затронем некоторые нюансы при работе с XDTO-пакетом.

Читать далее
BBC Russian+6
BBC Russian0

CMS за 0 рублей: как мы начали использовать Strapi

BBC Russian16 мин
BBC Russian7.1K

Всем привет! Меня зовут Александр, я фронтенд-разработчик в KTS. Сегодня я расскажу о системе Strapi, разберу сценарии ее использования на конкретных примерах и поделюсь способами упрощения работы в ней.

Читать далее
BBC Russian+25
BBC Russian8

Решение головоломки из университетского квеста с помощью Python

BBC RussianПростой
BBC Russian10 мин
BBC Russian1.3K

Треки — одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2008 года. Это задание было частью пятого акта игры, и ему предшествовало небольшое повествование, которое продолжало ее сюжет. В соответствии с ним ночь в стране выдалась неспокойная; и вместо того, чтобы спать, вы провели ее в ужасе наблюдая по телевизору за уличными беспорядками. С наступлением дня ситуация несколько улучшилась, и вы решаете выйти из дома, чтобы подышать свежим воздухом. На улице вы замечаете детей, беззаботно играющих в классики на дороге. Когда вы подходите к ним поближе в надежде на то, что часть их безмятежности передастся и вам, то ваше внимание переключается на очертания классиков, небрежно нарисованных мелом на дороге. Они совершенно не соответствуют ни одним классикам, в которые вам когда-либо доводилось играть...

Ниже можно было видеть эти «классики». 

Читать далее
BBC Russian0
BBC Russian3

JavaScript: структуры данных и алгоритмы. Часть 4

BBC RussianСредний
BBC Russian31 мин
BBC Russian4K


Привет, друзья!


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



Сегодня мы рассмотрим дерево отрезков, дерево Фенвика, а также граф (направленный и ненаправленный).


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


Интересно? Тогда прошу под кат.

Читать дальше →
BBC Russian+16
BBC Russian1
1
23 ...

Вклад авторов