Рубрика «Программирование» - 735

В предыдущей публикации мы подключали дешевый китайский LCD экран к плате STM32L4 Discovery. Теперь мы попробуем реализовать на этой комбинации что-то выходящее за рамки традиционного моргания светодиодом, а именно анализатор звукового спектра, который использует имеющийся на плате микрофон. Заодно я расскажу, как пользоваться операционной системой FreeRTOS, и зачем она нужна, а также почему в нотной октаве 12 нот, и чем 53 ноты лучше, чем 12.

Измерим гармонию — анализатор звукового спектра на STM32L4 Discovery - 1

Читать полностью »

Оригинал статьи написан живущим на вашингтонщине Иваном Сагалаевым, мужем небезызвестной Алёны C++.

Сама статья.

Работать с чистыми функциями просто: вы передаете аргументы и получаете результат, при этом нет никаких побочных эффектов. С другой стороны, если функция производит побочные эффекты, такие, как изменение собственных аргументов или же глобальных объектов, то найти причины этого трудно. Мы привыкли также, что если видим что-то вроде player.set_speed(5), то можно быть уверенным, что тут собираются изменить объект player предсказуемым способом (и, возможно, посылают некоторые сигналы куда-нибудь).

Система владения/заимствования языка Rust сложна и она создает совершенно новый класс побочных эффектов.
Читать полностью »

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

Великолепная шестерка: девушки, которые термоядерный взрыв рассчитывали - 1
ENIAC girls

Во время второй мировой войны каждое орудие требовало собственной баллистической таблицы и рассчитывались они для каждого отдельного типа снаряда и орудия перед отправкой на фронт, и при различных комбинациях множества параметров (температура воздуха, скорость ветра, плотность почвы под орудием, возвышение ствола, скорость снаряда, температура ствола орудия). Этими вычислениями занимались 75 молоденьких девушек-выпускниц.

Одна из них, Бетти, вспоминает:

«В то время у нас были механические калькуляторы, на шестеренках и с электроприводом, которые могли выполнять простейшие арифметические операции. Вы выполняли умножение и записывали ответ, чтобы потом его заново ввести в машину. Мы готовили баллистические таблицы для каждого орудия, примерно для 1800 траекторий. Чтобы вычислить вручную одну траекторию требовалось 30-40 часов просиживания перед столом с листиком и калькулятором. Название моей профессии для баллистического проекта было „компьютер“. Идея была в том, что я не просто выполняла арифметические операции, а принимала решения, что делать на следующем шаге. ENIAC сделал меня, одну из первых „компьютеров“, устаревшей технологией.»

Читать полностью »

Фейковая Новелла: маленькая игра, разработка которой многому меня научила и очередной бан от Google - 1 Многим знакомо чувство, когда чувствуется энергия от той самой идеи, что позволит свернуть горы и разработать законченное приложение, а не пополнить кладбище недоделок. Я по доброму завидую тем людям, что умеют трезво рассчитывать свои силы, а не увязать в трясине под гнётом рутины. У меня хватало сил, чтобы не дать начать себе что-то новое… Но конечно, разработка больших и длинных хобби проектов «потому, что бросить» жалко тянет соки, а не приносит радость. Эта публикация о том, как я намеренно дал слабину, чтобы поднять себе настроение, разработав простую игру за три дня. И сделал её за неделю, потратив десять маффинов, но получив кучу опыта и хорошего настроения.
Читать полностью »

Все, что нужно знать про Unity 5, UWP-приложения и 8 марта - 1

Всем привет! В эти праздничные выходные мы с удовольствием поделимся с вами подборкой свежих материалов о разработке самых разных приложений для Windows 10.

Давно хотели создать собственную игру?

Самый простой способ сделать игру на Unity 5
Потратив чуть больше часа, вы сможете получить представление о платформе Unity, настроить рабочую среду, создать базовые элементы игры и запустить ее на Windows 10 в качестве универсального приложения.
Читать полностью »

В прошлой заметке мы обсудили самую известную пару из лагеря инструментов синхронизации тредов — mutex и cond. Сегодня встретимся с sema — примитивом, который умеет заменять предыдущие два в одиночку.

Но сначала — пара слов о случайных пробуждениях. (Спасибо xaizek, который мне об этом напомнил.) В принципе, строго реализованные механизмы синхронизации этим не страдают, но, тем не менее, опытный программист на это никогда не полагается.

Напомню фрагмент кода:

while(total_free_mem <= 0)
    {
    wait_cond(&got_free_mem, &allocator_mutex);
    }

Здесь цикл вокруг wait_cond гарантирует нам, что даже если мы вернёмся из ожидания события случайно или по ошибке, ничего страшного не случится — проверка в while обеспечит нам уверенность, что нужное состояние проверяемого объекта достигнуто. Если нет — поспим ещё в ожидании.

Отметим ещё раз, что проверяем мы состояние объекта (total_free_mem <= 0) при запертом мьютексе, то есть никто не может его менять в то же самое время.
Читать полностью »

Видео со встречи JUG.ru с разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым - 1

Неделю назад в Питере прошла встреча JUG.ru с разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым. Как вы все наверняка знаете, Kotlin зарелизился пару недель назад, и теперь, спустя почти шесть лет разработки, пришла пора поговорить о том, что в итоге получилось.

В пятничный вечер 26 февраля народу в питерский офис Oracle набилось дофига, что очень обрадовало и нас и спикеров.

Видео со встречи JUG.ru с разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым - 2

Встреча состояла из четырех частей:

  • Введение. Что такое Kotlin?
  • Kotlin: к релизу и далее
  • Kotlin: самое сложное — совместимость
  • Сессия вопросов и ответов про Kotlin

Читать полностью »

Часть 2: Отправка и получение сообщений

В этой серии статей мы рассматриваем процесс создания масштабируемого сервера для чата в реальном времени, во всех деталях. Цель статьи — показать пример практического применения языка Rust на фоне изучения концепций системного программирования и системных API, шаг за шагом.

Вторая часть является прямым продолжением первой, поэтому если вы ее пропустили (или забыли контекст), то рекомендую сначала ознакомиться с ней. В этой части мы продолжаем реализацию протокола WebSocket.
Читать полностью »

«Когда я только начинала работать в этой сфере, все это было для нас как Дикий Запад — мы были первооткрывателями неизведанных земель. Никто нас ничему не учил» Маргарет Гамильтон.

Маргарет Гамильтон: «Пацаны, я вас на Луну отправлю» - 1

Это Маргарет. Она пишет код хорошо. Делайте как Маргарет.

А еще:

  • программист-самоучка;
  • написала код для навигационного компьютера программы «Аполлон»;
  • когда американцы ступили на поверхность Луны ей был 31 год;
  • Маргарет НЕ автор термина «software engineering»;
  • часто брала на работу 4х-летнюю дочку;
  • дочка помогла найти баг в программе.

Под руководством Маргарет Гамильтон писались программы для бортового компьютера КА Аполлон. В один из самых ответственных моментов миссии Аполлон 11 именно работа Маргарет и ее команды предотвратила возможный срыв высадки на Луну. За три минуты до прилунения сработало несколько аварийных сигнальных устройств. Компьютер был перегруженн входящими данными – в стыковочной радарной системе произошло непроизвольное обновление счетчика, что привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Благодаря устойчивой архитектуре компьютер продолжил свою работу: в разработке бортового ПО использовался подход асинхронного исполнения (asynchronous executive). Процессы с высоким приоритетом (критичные для прилунения) могли прервать низкоприоритетные процессы.

«После расстыковки командно-служебного и лунного модулей выключатель радара стыковки был поставлен в неправильное положение из-за ошибки в инструкции для астронавтов, радар посылал ошибочные сигналы бортовому компьютеру. Обработка ложных сигналов занимала 15% машинного времени. Бортовой компьютер (точнее, вшитое в него ПО) оказался достаточно разумным для того, чтобы распознать, что на выполнение запрашивается больше операций, чем должно. Далее он выслал оповещение, означавшее для астронавта следующее: «Я перегружен бОльшим количеством задач единовременно, чем предусмотрено, и я продолжу выполнять только наиболее важные, то есть те, что необходимы для прилунения...» По сути, компьютер был запрограммирован на большее, чем просто распознавание ошибочных состояний. В ПО был предусмотрен полный набор программ по восстановлению. В данном конкретном случае реакцией ПО было приостановить работу низкоприоритетных задач и перезапустить (re-establish) наиболее важные. Если бы компьютер не распознал эту проблему и не принял восстановительные меры, я не уверена, что Аполлон 11 совершил бы успешную посадку на Луну.» Маргарет Гамильтон

«Девушка молоток!
Но я бы не хотел себе такую жену, ибо смотрелся бы на ее фоне жалко, хоть и программист… LOL»

Коммент с GeekTimes

Читать полностью »

FreeType – это бесплатная низкоуровневая библиотека для работы со шрифтами. Она написана на ANSI C и используется в огромном количестве известных проектов. В Android, например. Но у прикладных Android-приложений нет прямого доступа к этой библиотеке. Поэтому, если вы хотите воспользоваться ей в собственном проекте, FreeType надо будет собрать для интересующей вас платформы. Мы будем собирать её для платформы x86, используя средства NDK.

Сборка библиотеки FreeType для Android x86 с использованием NDK - 1

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js