Обновить
1
0

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

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

Как я разработал квадрокоптер на ESP32 с нуля (ушло 4 года)

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

При сборке квадрокоптеров и других БПЛА обычно используют готовую плату полетного контроллера, содержащую все необходимые датчики и периферию, и готовую полетную прошивку, например, Betaflight, ArduPilot или PX4. Полетный контроллер управляет моторами квадрокоптера и обеспечивает стабильный полет.

Занимаясь БПЛА с 2016 года, я решил разобраться в устройстве полетных контроллеров максимально глубоко и создать квадрокоптер с нуля, не используя готовый полетный контроллер и готовый софт. Спустя долгое время разработки мне удалось это сделать. Я написал прошивку с максимально простым исходным кодом и выложил ее на GitHub. В этой статье я расскажу о теории и практике разработки полетного софта для квадрокоптера и проиллюстрирую это на примере своего дрона на базе микроконтроллера ESP32, который можно увидеть на картинке выше.

Читать далее

Почему GitHub на самом деле победил: история глазами сооснователя

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели7.6K

Недавно мы опубликовали в блоге перевод статьи о том, как GitHub заменил SourceForge в роли доминирующей платформы для хостинга кода. Но, как справедливо отметил автор оригинала, его мнение основано на открытых источниках и интервью с коллегами. А потом своим ви́дением поделился один из сооснователей GitHub, Скотт Чакон, который «действительно был там». Под катом — перевод его ответной статьи о реальных причинах победы GitHub. 

Читать далее

Крокодилы летают, но низко-низко (об экранопланах без эмоций, зато с отступлениями)

Время на прочтение17 мин
Охват и читатели84K
Скажу сразу: ничего про «не имеющее аналогов», «бездумно разрушенное» и т.п. – не будет.

Что будет:

  • немного истории;
  • разъяснение того, что такое эффект экрана, его свойства и последствия;
  • преимущества и недостатки;
  • практические реализации у нас и за рубежом, разные схемы и причины их появления;
  • перспективы, какими они видятся мне.

Итак, от



до


Читать дальше →

История терминала как инструмент продуктивности

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

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

Читать далее

Best Practices по подключению к сторонним API в проекте

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

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

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

Узнать лучшие практики

Образы и контейнеры Docker в картинках

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

Перевод поста Visualizing Docker Containers and Images, от новичка к новичкам, автор на простых примерах объясняет базовые сущности и процессы в использовании docker.

Если вы не знаете, что такое Docker или не понимаете, как он соотносится с виртуальными машинами или с инструментами configuration management, то этот пост может показаться немного сложным.

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

Poetry: from zero to hero

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

Привет, Хабр! Меня зовут Тимур, я тружусь ML-инженером в одной сибирской IT-компании.

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

В качестве бонусов - готовая GitLab CI джоба для сборки и публикации пакетов, а также шаблон Dockerfile для multi-stage сборки образов в проектах с использованием Poetry.

Добро пожаловать под кат!

Читать далее

Редактор кода Visual Studio Code. Самый подробный гайд по настройке и установке плагинов для начинающих

Время на прочтение23 мин
Охват и читатели1.1M
Бесплатный, мощный, очень популярный, с кучей дополнений, да что там говорить, сам Фейсбук выбрал его в качестве основного редактора!


Сегодня речь пойдет о редакторе кода Visual Studio Code или просто VS Code. Мы с тобой его установим, настроим, а также применим плагины, которые существенно упростят нам работу.
Читать дальше →

Яндекс.переводчик для Linux на Python+GTK3

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

Приветствую хабражителей!


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


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


image


Вначале был translate-shell...

Читать дальше →

Безымянный язык программирования без присваивания имён

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

Придумывать имена сложно. Давайте посмотрим, как далеко мы можем зайти без них.

Что это?

Это язык программирования, основанный на трёх парадигмах:

Бесточечном программировании

Стековом программировании

Массиво-ориентированном программировании

Основная «фишка» языка — избегание любых наименований. Оставаясь верным этой максиме, сам язык тоже не имеет названия. «Язык программирования без имён» (namingless programming language) — это его определение.

Так как в мире есть только один такой язык, название ему не нужно.

Для чего это нужно?

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

Ну, разумеется, его можно использовать и как инструмент для обучения бесточечному (комбинаторному), стековому или массиво-ориентированному программированию. Или применять его в качестве пытки, я не буду вас судить.

Как выглядит код на таком языке?

Вот так:

i_^_b_H_i_cpp^_)_V_b_v_J_^_E_H_leafL_==^_)_V_H_Z_Z_^_)_V_H_I_^_E_1^_2^_#_G_Z_Z_^_E_1^_2^_#_H_$_L_-^_G_m_G_&_&_

Чёрт возьми!

Ага.

Простите.

Читать далее

Как хранить данные бота прямо в Телеграме

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

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

Читать далее

Калькуляторы с обратной польской нотацией

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

На хабре уже многократно проскакивали статьи и переводы о калькуляторах с обратной польской нотацией. Раньше я не придавал им большого значения, пока на глаза не попался перевод статьи «Мягкое знакомство с дополнительным кодом», где фигурировал программистский калькулятор HP-16C. Что сподвигло меня разобраться, что за зверь такой «обратная польская нотация» или reverse Polish notation (далее по тексту RPN).

Искра, буря, безумие… Спешно поставив эмулятор HP-16C на телефон, я полез искать калькуляторы с поддержкой RPN, попутно скупая найденные экземпляры. В этой статье хочу поведать о четырёх редких! экземплярах, которые мне удалось найти на отечественных досках объявлений, и дать некоторые рекомендации тем, кто решит прикоснуться к удивительному миру программируемых калькуляторов.
Читать дальше →

Призыв писать компактное ПО, версия 2024 года (с примером кода)

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

Этот пост посвящён памяти Никлауса Вирта, первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean Software, и в своём посте я постараюсь воспроизвести её почти тридцать лет спустя, с учётом современных кошмаров разработки ПО.

Очень короткая версия поста: современные способы разработки/сборки ПО смехотворны, они приводят к созданию пакетов на 350 МБ для рисования графиков, а простые продукты импортируют 1600 зависимостей неизвестного происхождения. Уровень безопасности ПО ужасен, ведь он зависит и от качества кода, и от его объёма. Многие из нас понимают, что ситуация нерациональна. К сожалению, многие программисты (и их руководство) никогда не работали как-то иначе. А остальным редко выделяют время, чтобы выполнять работу качественно.

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

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

Читать далее

Андрей Петрович Ершов — пионер отечественного программирования

Время на прочтение12 мин
Охват и читатели15K
Ершов Андрей Петрович программист — пионер, его влияние на развитие советской школы программирования и вычислительной техники нельзя переоценить. Он ввел в научный оборот термин информатика для обозначения науки, связанной со способами обработки, хранения и передачи информации с помощью ЭВМ. Стал первым программистом, избранным в Академию наук по Отделению информатики, вычислительной техники и автоматизации.



Жизненный путь Андрея Петровича начался 9 апреля 1931 года. Ершов родился в Москве, в семье потомственных интеллигентов. Двоюродный прадед Ершова по материнской линии – Федор Иванович Успенский, ординарный академик Российской академии наук, основатель и директор Русского археологического института в Константинополе. Прадед, Алексей Иванович Успенский служил военным врачом на Кавказе и в Закаспийской области и был женат на дворянке Евдокии Васильевне Скрыльник. Дед Андрея Петровича, Константин Николаевич Малинин — выпускник Московского университета, был членом партии большевиков с 1904 год, позже заведовал отделом в Агитпропе ЦК ВКП (б). Мать, Татьяна Константиновна Малинина, окончила Академию коммунистического воспитания им. Н.К. Крупской в Москве. Отец, Петр Николаевич Ершов закончил аспирантуру в Научно-исследовательском институте полупродуктов и красителей (НИОПИК), работал в Москве, Донбассе, затем заведовал отделом Центральной лаборатории на Кемеровском анилинокрасочном заводе.
Подробности

Кунг-фу стиля Linux: программное управление окнами

Время на прочтение8 мин
Охват и читатели17K
Операционными системами, которые основаны на Linux и Unix и работают в текстовом режиме, очень легко управлять. Учитывая то, как работает подсистема ввода-вывода Unix, программам, ожидающих на входе то, что вводится с клавиатуры, можно передавать любые данные. А то, что программы обычно выдают на экран, можно перехватить и подвергнуть дальнейшей обработке. Вся операционная система устроена именно так. А вот графические программы, использующие возможности X11, это — уже совсем другое дело. Можно ли управлять графическими программами так же, как управляют программами с текстовым интерфейсом? Точный ответ на этот вопрос зависит от того, что именно понимать под «управлением программами». Но если не вдаваться в детали, то на этот вопрос можно дать положительный ответ.

Как это обычно бывает в Linux и Unix, существует множество способов решения одной и той же задачи. И наша задача — не исключение. Если вам нужны средства для точного управления программами, то можно сказать, что добиться этого можно с помощью утилит, задействующих специальный механизм, называемый D-Bus. Этот механизм позволяет программам так оформлять данные и методы, что ими могут пользоваться другие программы. В идеальном мире программы, которыми нужно управлять, применяют D-Bus, но в реальности всё далеко не так просто. Поэтому сегодня мы поговорим о том, как управлять самыми разными графическими программами в Linux.



Существует несколько утилит, которые позволяют каким-то способом управлять X-окнами. Например, есть инструмент xdo, о котором вы, наверняка слышите не особенно часто. Более популярным средством из этой сферы является утилита xdotool, о которой я расскажу. Кроме того, похожим функционалом обладает wmctrl. Есть ещё программа autokey, которая родственна популярной Windows-программе AutoHotKey.
Читать дальше →

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

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

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →

История Saudi Aramco. Привет из Латинской Америки

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

Сразу после окончания войны в Европе начался энергетический кризис. Добыча угля была недостаточной, а строящаяся промышленность и развивающиеся отрасли автомобилестроения и авиации требовали больших объемов нефти. В 1946 году Темза замёрзла, что обрубило и так немногочисленные поставки угля в страну. Безработица возросла в шесть раз, а английская промышленность остановилась на 6 недель. Правительство заявило, что Англия отзовёт мандаты из Ближнего Востока, предоставит независимость Индии и Пакистану и не будет оказывать помощь Греции.

Фактический отказ Великобритании от участия в послевоенном разделении мира означал возвышающуюся роль США, которые взвалившимися на них обязательствами радостно воспользовались. В 1947 году был принят известный "План Маршалла" по восстановлению экономик стран Европы. В долгосрочной перспективе он предполагал перестройку Европы с экономики, работающей на угле, на экономику, работающую на нефти, причем основным экспортером черной жижи в Европу должны были стать Штаты. При этом, как мы помним, в США решили консервировать собственные запасы нефти и перейти на использование импортной продукции. И вот, по оценкам американских экспертов, потребление США будет на 80 процентов удовлетворяться за счёт ближневосточной нефти. А одним из флагманов данной отрасли в регионе являлась как раз "Арамко". Каждому хочется большего куска пирога. Самый аппетитный и вкусный пирог был как раз у "Арабо-Американской нефтяной компании". Ибн-Сауд зашевелился.

Читать далее

Основы реляционной алгебры

Время на прочтение6 мин
Охват и читатели361K
Реляционная алгебра базируется на теории множеств и является основой логики работы баз данных.
Когда я только изучал устройство баз данных и SQL, предварительное ознакомление с реляционной алгеброй очень помогло дальнейшим знаниям правильно уложиться в голове, и я постараюсь что бы эта статья произвела подобный эффект.

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Читать дальше →

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

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

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →

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

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

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

Читать далее
1

Информация

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