
Если вы читали мою предыдущую статью, вероятно вам интересна эта тема и вы хотите узнать больше. В этой статье рассмотрим очень частную, не простую, но от этого не менее необходимую задачу запуска двух разных Baremetal приложений на разных ядрах SoC Cyclone V. По сути такие системы называются AMP — asyncronus multi-processing. Чуть не забыл сказать, что на русском языке вы не найдете другого более правильного и подробного руководства к созданию таких систем, так что читаем!Читать полностью »
Рубрика «Программирование» - 541
Инструменты для разработчика Go: знакомимся с лейблами профайлера
2017-07-10 в 7:31, admin, рубрики: Go, Блог компании Badoo, лейблы, отладка, Программирование, профайлер
Привет. Меня зовут Марко. Я системный программист в Badoo. Представляю вашему вниманию перевод поста замечательной rakyll о новой фиче в Go 1.9. Мне кажется, что лейблы будут очень полезны для профилирования ваших Go-программ. Мы в Badoo, например, используем аналогичную штуку для того, чтобы тегировать куски кода в наших программах на С. И если срабатывает таймер и в лог выводится стек-трейс, то в дополнение к нему мы выводим такой вот тег. В нем, например, может быть сказано, что мы обрабатывали фотографии пользователя с определенным UID. Это невероятно полезно, и я очень рад, что похожая возможность появилась и в Go.
STM32 + PPP (GSM) + LwIP
2017-07-10 в 5:55, admin, рубрики: lwip, PPP, stm32, микроконтроллеры, Программирование, программирование микроконтроллеров, разработка, СиБольшинство GSM модулей работают по интерфейсу UART, посредством AT-команд. Но для серьезных проектов, использование AT команд несет определенные трудности:
• контроль и обработка ошибок
• результат выполнения команды возвращается с длительной задержкой
• необходимо разбирать входящие строки налету
Нужно понимать, что с результатом выполнения команды, в буфер может попасть URC-код от входящего звонка, SMS, принятые данные и пр. Входной буфер с принятыми строками, приходится разбирать опираясь лишь на символы переносов и «эхо» команды, а сами команды зачастую сильно отличаются форматом. По этим причинам, использование AT вносит дополнительную задержку, алгоритмически ее устранить практически невозможно, ведь причина находится в самом модуле и несовершенстве его встроенного ПО
В этом примере я использовал SIM800C. Посмотрев спецификацию и убедившись в поддержке PPP, стал изучать способы реализации. Для использования PPP, модуль переключается несколькими настроечными командами, после этого режим AT становится недоступным и фактически идет общение с вышкой оператора напрямую, минуя внутренний стек модуля, что позволяет значительно ускорить обмен данными.
Пример PPP-пакета:
Быстрое удаление пробелов из строк на процессорах ARM
2017-07-09 в 15:33, admin, рубрики: avx, movemask, neon, open source, SS4, sse, x64, x86, Алгоритмы, высокая производительность, Программирование
Предположим, что я дал вам относительно длинную строку, а вы хотите удалить из неё все пробелы. В ASCII мы можем определить пробелы как знак пробела (‘ ’) и знаки окончания строки (‘r’ и ‘n’). Меня больше всего интересуют вопросы алгоритма и производительности, так что мы можем упростить задачу и удалить все байты со значениями меньшими либо равными 32.
В предыдущией статье, где я задавал вопрос об удалении пробелов на скорость, лучшим ответом было использование векторизации с помощью 128-битных регистров (SSE4). Оно оказалось в 5-10 раз быстрее подхода в лоб.
Очень удобно, что во всех процессорах имеются 128-битные векторные регистры, также как в процессорах x64. Неужели процессоры ARM могут работать настолько же быстро, как процессоры x64?
Читать полностью »
Программный сбор данных о котировках
2017-07-09 в 13:36, admin, рубрики: data mining, java, phython, python, анализ, данные, котировки, машинное обучение, парсинг, Программирование, трейдер, ФинамЗаголовок обязывает перейти непосредственно к программному коду… Но, думаю, все же необходима вводная часть. А зачем, собственно, это нужно?
Эффективные действия на бирже связаны с тщательным анализом происходящего на рынке. Что кроется за динамикой цифр, котировок?
Читать полностью »
Libdispatch. Как сделать приложение отзывчивым
2017-07-08 в 9:35, admin, рубрики: Cocoa, GCD, iOS, iOS разработка, swift, Touch Intinct, Блог компании Touch Instinct, Программирование, разработка под iOS, метки: Touch Intinct
Для повышения отзывчивости приложения необходимо грамотно разбивать выполнение задач на несколько потоков. Набор технологий в руках iOS-разработчика представляет из себя следующее. Способы представлены по возрастанию уровня абстракции.
- Pthreads, или потоки POSIX. Библиотека для низкоуровневой работы с многопоточностью. Определена как набор типов и функций на языке C. Подробнее можно ознакомиться тут.
- Background selectors. Это отправка сообщения объекту, которое будет исполнено на указанном потоке. В коде это селектор с названием
performSelectorи различными параметрами (например,performSelectorOnMainThread:withObject:waitUntilDone:). Документация - NSThread. Представлены как базовые средства для работы с потоками. Ознакомьтесь с концептуальным документом по работе с потоками и документацией.
- Grand Central Dispatch. Библиотека, основанная на блоках — анонимных участках кода, иначе замыканиях. Рабочее название — libdispatch.
- NSOperation. Построен на основе GCD. Стоит заметить, что сама операция является абстрактной сущностью и на практике стоит использовать
NSInvocationOperationиNSBlockOperation.
В этой статье поговорим о вопросах CGD.
Что делает язык программирования «модным»?
2017-07-07 в 21:38, admin, рубрики: pharo, smalltalk, squeak, ооп, Программирование
Сейчас много языков программирования, соперничающих за ваше внимание, особенно «горячие» (или «модные!») новые языки, такие как Ceylon, Crystal, Dart, Elixir, Elm, Go, Haxe, Julia, Kotlin, Rust, Swift, TypeScript. И новые, кажется, появляются каждый месяц!
Читать полностью »
Тандем офисной и мобильной телефонии. Как мы разрабатывали FMC
2017-07-07 в 16:35, admin, рубрики: FMC, SIM, sim-карта, Анализ и проектирование систем, Блог компании МТТ, голосовая связь, МТТ, Программирование, Разработка систем связи, связь, телефония, метки: fmcFMC (fixed mobile convergence) — это новое технологическое решение на стыке разных типов сетей связи: фиксированной и мобильной. С его помощью любая организация может создать единую сеть офисных и мобильных телефонов с общим планом короткой нумерации. Технология дает возможность созваниваться напрямую по коротким внутренним номерам сотрудникам вне офисов в разных регионах страны или мира без использования реальной офисной АТС.
Читать полностью »
Выбор алгоритма вычисления квантилей для распределённой системы
2017-07-07 в 12:58, admin, рубрики: big data, java, map reduce, spark, Алгоритмы, Блог компании Badoo, квантиль, Программирование
Всем привет!
Меня зовут Александр, я руковожу отделом Data Team в Badoo. Сегодня я расскажу вам о том, как мы выбирали оптимальный алгоритм для вычисления квантилей в нашей распределённой системе обработки событий.
Спасёт ли Python от казни?
2017-07-07 в 11:02, admin, рубрики: python, дифференциальные уравнения, кинематика твёрдого тела, математика, маятник Обербека, моделирование, Программирование, физика движения, метки: физика движенияДоброго времени суток! При просмотре экшн-фильмов (фильмов с хорошо продуманными динамичными сценами) иногда закрадывается в голову: а реально ли это в действительности? Например, мог ли автомобиль перевернуться на маленькой скорости, как быстро можно раскачаться на верёвке без начальной скорости над пропастью…

Что говорит на это физика? Интересно ли писать на бумажечке и потом хвастаться клочком с формулами и парой-тройкой векторов? Давайте сделаем это безопасно и наглядно.
Читать полностью »

