Прошивку для внутренностей современной встраиваемой электроники написать с нуля практически нереально. На это просто не дают времени. Поэтому ПО для встраиваемых систем создается на базе
готовых программных платформ — фреймворков. Чем более развит фреймворк, тем быстрее идет разработка. Здесь пойдет речь о фреймворке созданном мной специально для модулей управления моторами и успешно применяемом уже в течении некоторого времени.
Читать полностью »
Рубрика «Программирование» - 530
learnopengl. Урок 1.9 — Камера
2017-04-29 в 8:19, admin, рубрики: c++, glfw, glm, glsl, opengl 3, Программирование, разработка игр, метки: opengl 3В предыдущем уроке обсуждалась матрица вида, и то, как её можно использовать для перемещения по сцене (мы немного отодвинули назад точку зрения наблюдателя). В OpenGL отсутствует концепция камеры, но можно попытаться её сымитировать, перемещая все объекты сцены в направлении противоположном движению наблюдателя, и тем самым создать иллюзию, что движемся мы сами.
В этом уроке мы рассмотрим, как можно создать камеру в OpenGL. Мы обсудим камеру типа FPS (First Person Shooter), которая позволит вам свободно перемещаться в трехмерной сцене. Кроме того, мы поговорим о вводе с клавиатуры и мыши, а закончим созданием собственного C++ класса камеры.
Отчет с Go meetup 14 апреля
2017-04-28 в 13:00, admin, рубрики: Go, mail.ru, meetup, Блог компании Mail.Ru Group, Программирование
Спустя полгода сообщество Go-разработчиков снова воссоединилось в нашем московском офисе 14 апреля. И теперь у нас есть возможность ознакомиться с тем, как проходила эта встреча. Пять докладов и прочие подробности ищите под катом.
Читать полностью »
Функциональное программирование в JavaScript с практическими примерами
2017-04-28 в 11:20, admin, рубрики: javascript, JS, Блог компании Mail.Ru Group, монады, никто не читает теги, Программирование, Проектирование и рефакторинг, функциональное программирование
Функциональное программирование (ФП) может улучшить ваш подход к написанию кода. Но ФП непросто освоить. Многие статьи и руководства не уделяют внимания таким подробностям, как монады (Monads), аппликативность (Applicative) и т. д., не приводят в качестве иллюстраций практические примеры, которые могли бы помочь нам в повседневном использовании мощных ФП-методик. Я решил исправить это упущение.
Хочу подчеркнуть: в статье сделан упор на том, ЗАЧЕМ нужна фича Х, а не на том, ЧТО такое фича Х.
«Через год-два .NET Core потеснит Java на рынке enterprise решений», — Интервью с Jon Skeet, Google
2017-04-27 в 14:10, admin, рубрики: .net, C#, dotnext, Блог компании JUG.ru Group, Джон Скит, кроссплатформенность, ПрограммированиеНаверняка, вы знаете, кто такой Джон Скит: №1 на Stack Overflow, автор C# in Depth, одной из лучших книг по .NET, разработчик в Google и 14-кратный MVP. Разработчиков такого масштаба не так много, хватит двух порядков, чтобы их всех перечислить. 19-20 мая Джон приедет в Петербург и выступит на DotNext 2017 Piter.
Мне удалось пообщаться с Джоном и взять у него большое интервью по поводу судьбы .NET, .NET Core, нововведений в C# 7 и общем уровне развития среднего разработчика в 2017 году.
Если говорить конкретно, то обсудили следующие вопросы:
- Общее направление развития .NET и ошибки Microsoft;
- Чего ждать от .NET Core в ближайшем будущем;
- Стоит ли мигрировать на .NET Core, если у вас легаси на .NET Framework;
- Проблемы и победы .NET на поприще кроссплатформенности;
- Java vs .NET на рынке enterprise решений;
- Чем хороши tuples и pattern matching в С# 7, а что стоило сделать иначе;
- Небольшие, но приятные фичи C# 7;
- Деградация сообщества разработчиков (и есть ли она);
- Правильный подход к диагностике багов и постановке правильных вопросов на SO;
- Гайд по изучению новых языков и платформ;
- Проблемы с базовыми типами: числа, текст, дата и время;
Интервью получилось очень большое, но мне кажется, оно стоит каждой потраченной на него минуты.
Читать полностью »
Как я пишу код
2017-04-27 в 9:46, admin, рубрики: Анализ и проектирование систем, Блог компании Инфопульс Украина, код, Программирование, Проектирование и рефакторинг, Совершенный кодМне нравится думать, что я пишу хороший код. Ну или, что я хотя бы пишу больше хорошего кода, чем плохого.
Моя любимая особенность хорошего кода — это его скука. Предсказуемые выражения, одно за другим. Никаких сюрпризов, никаких трюков, никаких уникальных случаев. Никакого мета-программирования, конечно! Скучный код очень легко отлаживать, читать, объяснять.
Скучный код не использует глобальных состояний, не порождает побочных эффектов и старается уменьшить свою связанность с проектом, в котором он живёт. Скучнейшим образом происходят присвоения значений, которые для каждой переменной случаются лишь раз и избавляют нас от возможности увлекательного расследования кто же и когда изменил вот это состояние. Скучный код делает лишь то, что должен и не полагается на какие-то неявно высказанные предположения.
Код, использующий неявное поведение, может быть основан на каком-нибудь недокументированном, но уже реализованном функционале. Например, в мире написана целая куча НЕВЕРНОГО кода, который полагается на то, что функция файловой системы, возвращающая список директорий, вернёт их в отсортированном по алфавиту порядке. Это и вправду часто работает именно так, но ровно до того момента, пока не ломается по «непонятным» причинам. А на самом деле просто никто никогда этой сортировки не гарантировал.
Читать полностью »
Нужны ли видеозвонки в VR?
2017-04-27 в 9:44, admin, рубрики: unity, unity3d, voximplant, VR, Блог компании Voximplant, Программирование, разработка мобильных приложений, Разработка под AR и VR
В Voximplant мы в основном занимаемся автоматикой звонков: автоматически ответить и рассказать что с заказом, автоматически позвонить перед доставкой, автоматически соединить с нужным клиентом — вся вот эта история и JavaScript в облаке. Но кроме этого мы любим делать к нашей платформе SDK: Web SDK, чтобы звонить из браузера и в браузер, нативные Android и iOS SDK, чтобы в роуминге звонить через интернет, React Native SDK, чтобы звонить из кросс-платформенных приложений. А несколько дней назад мы сделали SDK для Unity. Который позволяет звонить из виртуальной реальности.
Читать полностью »
DevExtreme: теперь на GitHub и с бесплатной лицензией
2017-04-27 в 8:47, admin, рубрики: devexpress, devextreme, github, html, javascript, Блог компании DevExpress, ПрограммированиеУ нас сразу две отличные новости. DevExtreme, наш набор компонентов для фронтенд-разработки, переехал на GitHub и стал доступен бесплатно для некоммерческого использования!
Наш репозиторий — это не форк и не обрезанная версия. Это новый дом для DevExtreme, и там всё по-настоящему — от исходников до систем тестирования и сборки. Каждый желающий сможет наблюдать за тем, как мы фиксим баги (куда же без них) и добавляем новый функционал, а также поучаствовать в обсуждениях.
Вести разработку на GitHub — одно удовольствие. Механизм pull-реквестов с удобным code review — то, чего нам не хватало, пока мы жили во внутреннем Mercurial-репозитории. Теперь каждое изменение видят несколько пар глаз, что обеспечивает больший уровень прозрачности и позволяет процессам разработки плавно интегрироваться в методологии, принятые в команде (© SeOd).
В первые дни репозиторий выглядит пустовато, так как при импорте кода мы схлопнули историю коммитов. Но это продлится недолго! В дополнение к традиционным релизам, которые никуда не денутся, мы будем также оформлять Releases на GitHub и там же выпускать промежуточные pre-release и hotfix версии. Подписавшись на DevExpress/DevExtreme, например, с помощью сервиса Sibbell вы всегда будете в курсе наших последних новостей. Читать полностью »
Скрестить ежа (Marathon) с ужом (Spring Cloud). Эпизод 1
2017-04-27 в 7:52, admin, рубрики: java, service discovery, spring cloud, Программирование, метки: service discovery, spring cloudПри переходе к распределённым системам с большим количеством инстансов сервисов в полный рост встают проблемы их обнаружения (service discovery) и балансировки запросов (load balancing) между ними. Как правило, для их решения используются такие специализированные инструменты как Consul, Eureka или старый добрый Zookeeper, в сочетании с Nginx, HAProxy и некоторым мостом между ними (см. registrator).
Основная проблема в подобном подходе это большое количество интеграций, и, как следствие, точек где что-то может пойти не так. Ведь помимо вышеупомянутых решений наверняка будет использоваться локальный маленький PaaS (например Mesosphere Marathon или Kubernetes). Последние, к слову, уже хранят необходимую конфигурацию об окружении (ведь через них идёт весь деплоймент). И встаёт вопрос, а можем ли мы отказаться от специализированных инструментов для service discovery и переиспользовать тот же Marathon для этой задачи?
Краткий ответ — можем. Если интересно как — читайте дальше.