Pull to refresh
23
0
Andrei Odue @androude

C/C++/automotive-infotainment

Send message

Чистая архитектура

Reading time5 min
Views151K
От переводчика: данная статья написана Дядюшкой Бобом в августе 2012 года, но, на мой взгляд, вполне актуальна до сих пор.



За последние несколько лет мы видели целый ряд идей относительно архитектуры систем. Каждая из них на выходе давала:

  1. Независимость от фреймворка. Архитектура не зависит от существования какой-либо библиотеки. Это позволяет использовать фреймворк в качестве инструмента, вместо того, чтобы втискивать свою систему в рамки его ограничений.
  2. Тестируемость. Бизнес-правила могут быть протестированы без пользовательского интерфейса, базы данных, веб-сервера или любого другого внешнего компонента.
  3. Независимоcть от UI. Пользовательский интерфейс можно легко изменить, не изменяя остальную систему. Например, веб-интерфейс может быть заменен на консольный, без изменения бизнес-правил.
  4. Независимоcть от базы данных. Вы можете поменять Oracle или SQL Server на MongoDB, BigTable, CouchDB или что-то еще. Ваши бизнес-правила не связаны с базой данных.
  5. Независимость от какого-либо внешнего сервиса. По факту ваши бизнес правила просто ничего не знают о внешнем мире.


Диаграмма в начале этой статьи — попытка объединить все эти идеи в единую эффективную схему.
Подробности далее ...
Total votes 24: ↑22 and ↓2+20
Comments27

Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных

Reading time2 min
Views149K
Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

Лекция 1. Основы


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


Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments14

По следам C++ Siberia: дракон в мешке

Reading time7 min
Views23K
Конференции бывают разные. Некоторые собирают огромные толпы зрителей, другие могут быть интересны лишь полутора специалистам.

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

На самом деле, пост не о том.

Так уж вышло, что мне довелось выступать на означенной конференции, где я на пальцах и с приплясываниями рассказывал, что такое LLVM, чем интересна нотация SSA, что такое IR код и, наконец, как так получается, что детерменированные на первый взгляд C++ программы, оказывается, провоцируют неопределенное поведение.

Кстати, этот доклад можно поставить пятым номером в серии статей про виртуальную машину Smalltalk. Многие просили подробнее рассказать о LLVM. В общем, убиваем всех зайцев сразу. Заинтересовавшимся, предлагаю «откинуться на спинку кресла», опционально налить чего-нибудь интересного и послушать. Обещаю, что больше часа времени я не отниму.

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


Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments10

19 советов по повседневной работе с Git

Reading time14 min
Views285K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →
Total votes 152: ↑149 and ↓3+146
Comments62

Применение аддитивных технологий при производстве сложных нестандартных изделий

Reading time6 min
Views10K
Сегодня хочу рассказать об одном интересном процессе изготовления нестандартного изделия – безэховой волноводной камеры. На первой встрече с заказчиком выяснилось главное требование — сроки. Зарубежные исполнители нестандартных узлов, к которым обратился заказчик, указывали от полугода до восьми месяцев. В процессе общения с заказчиком постепенно вырисовывалась концепция изделия: определили внешний вид, в трех вариантах, в зависимости от технологии изготовления. Было проведено, так сказать, маркетинговое исследование по размещению заказов по деталям и узлам изделия. Сразу определилась основная проблема: заводы и небольшие фирмы, принципиально не отказываясь от единичного изделия, сам процесс затягивали до смешного. То есть, уже на стадии согласования частностей, мы понимали, что и здесь, в России, история потянет на месяцы. Объяснять этот известный факт, думаю, не надо, многие сталкивались. Нам же хотелось сдать готовое изделие уже летом. Поэтому решили, как это ни парадоксально звучит, применить пластики и технологию аддитивного производства.

Противоречие в том, что камера должна обеспечивать требуемую по ТЗ токопроводимость. Опять же, инженеры, например, принципиально отказывались браться за эту разработку (попросту сказать: думать на эту тему). Они не говорили мне в лицо, что я дилетант и несу чушь, нет. Они терпеливо обьясняли: «подобные вещи должны быть металлическими. Подобные изделия могут сделать только на паре номерных заводов в Москве и Московской области. И вообще, «оборудования в стране нет, оснастки нет, и кругом ходят идиоты»». В целом, такой была психологическая обстановка, в рамках которой мы взялись изготовить из пластмассы токопроводную камеру с шестым классом по шероховатости внутренних полостей.

По рабочим эскизам заказчика мы изготовили чертежи и 3D-модель. Размеры в чертежах согласовали по телефону и с помощью электронной почты. Это заняло три дня (чертежи были неполные). Подумали, подумали, да и запустили в печать изделие: посмотреть было очень любопытно, что же за штука будет. Печатали часть на Ultimaker 2 и половину на Пикассо (Российский изготовитель 3D-принтеров).


Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments19

Две книги, которые изменили жизнь Сергея Брина

Reading time3 min
Views39K
В 1996 году аспиранты Стэнфордского университета Сергей Брин и Ларри Пейдж начали разработку компьютерной программы, которая впоследствии станет известна миру как поисковая система Google.

Сегодня Google (Alphabet) — крупнейшая корпорация с рыночной капитализацией $450 млрд. Сергей Брин сосредоточил усилия на перспективных научно-исследовательском подразделении GoogleX, которое занимается революционными разработками вроде беспилотных автомобилей.

В одном из интервью в 2000 году Сергей Брин рассказал, какие книги вдохновили его посвятить карьеру технологиям, где смешаны наука и творчество.
Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments11

Боаз Альмог — Левитирующий сверхпроводник

Reading time1 min
Views12K


Как может сверхтонкий диск чуть меньше 8 см в диаметре поднимать вес в 70 тысяч раз больше собственного? Боаз Альмог показывает как феномен, известный под названием квантовый замо́к, даёт сверхпроводнику возможность двигаться над магнитным рельсом без трения и без потери энергии. Выступление поражает фантастичностью и захватывающими демонстрациями.


Оригинальное видео


P.S. В комментариях вы можете предложить интересное видео на перевод и озвучивание.
Total votes 15: ↑14 and ↓1+13
Comments24

Простой и недорогой 3-х осевой фрезерный станок с ЧПУ. Часть 2

Reading time4 min
Views17K
Сегодня в фокусе нашего внимания конструктор 3D фрезерного станка.



В предыдущей публикации мы остановились на вопросе настройки слайсера Skeinforge.

Собственно с этого места поподробнее. Итак, нажимаем кнопку «Настройка»
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments5

Секретный конструктор std::shared_ptr

Reading time4 min
Views46K
This constructor is so secret, not even STL maintainers know about it...
Stephan T. Lavavej
Этот конструктор настолько секретный, что даже сопровождающие STL не знают о нём...
пер.: Door

У std::shared_ptr есть небольшой секрет: очень полезный конструктор, о котором большинство программистов даже не слышали. Он был добавлен только в стандарте С++11, и его не было даже в TR1 версии shared_ptr. Однако он поддерживается gcc с версии 4.3, и компилятором MSVC еще с времен Visual Studio 2010. В Boost он появился примерно с 1.35.0.

В большинстве обучающих материалов, в которых описывается std::shared_ptr ничего нет об этом конструкторе. Скотт Майерс ни словом не обмолвился о нем в «Effective Modern C++», другой автор — Nicolai Josuttis уделил этому конструктору около половины страницы в своей книге «The C++ Standard Library».



Итак, что представляет собой этот секретный конструктор?
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments26

Студенты сделали самоуправляемый автомобиль на Arduino/Android

Reading time1 min
Views13K


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

Обычный студент в наши дни не может позволить себе такую машину. Но зато у него есть Android-смартфон и Arduino. Как показывает проект Android-Car-duino, этого вполне достаточно. По крайней мере, для игрушечной машинки
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments3

Простой и недорогой 3-х осевой фрезерный станок с ЧПУ

Reading time5 min
Views68K
В июле исполняется ровно год, как Мастер Кит создал свой первый 3D принтер. Мы постарались сделать его как можно проще и доступнее для наших пользователей. Этот первый и все следующие модели наших принтеров управляются открытой программой Repetier-Host. Вместе с вами мы привыкли к этому интерфейсу. И теперь нам кажется, что он почти идеально подходит для 3D принтеров.

3D принтеры — относительно новое явление в моделировании. До них повсеместно использовались фрезерные станки с ЧПУ. Собственно и сейчас 3D фрезеры работают на всех обрабатывающих предприятиях. Очень хочется иметь такой девайс и в домашней мастерской. Сказано -сделано!

Мастер Кит представляет простой и недорогой конструктор 3D фрезерного станка. Нет не станка – станочка.
Фрезерный станок 3D CNC router предназначен для 3D фрезерования и резки. Всё тот же Repetier-Host, те же файлы 3D моделей — *.stl. Но он не печатает модель, а отрезает всё лишнее. Своеобразный 3D негатив!
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments12

LLVM изнутри: как это работает

Reading time10 min
Views26K
Приветствую хабраюзеров, в этой статье пойдет речь о внутреннем устройстве компилятора LLVM. О том, что LLVM вообще такое, можно прочитать здесь или на llvm.org. Как известно, LLVM (условно) состоит из трех частей — байткода, стратегии компиляции и окружения aka LLVM infrastructure. Я рассмотрю последнее.

Содержание:
  • Сборка LLVM
  • Привязка к Eclipse
  • Архитектура окружения
  • LLVM API
  • Оптимизация Hello, World!
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments18

Грабли, на которые мы успели наступить

Reading time6 min
Views43K
Обычно в блогах компаний принято писать про успехи, а неудачи не афишировать. Хотя читать про ошибки и сделанные на их основе выводы может быть куда интереснее и полезней, чем про достижения. Сегодня мы хотим с вами поделиться всеми главными промахами, которые мы сделали с момента возникновения идеи до начала стройки первых реальных домов. Все ошибки оформлены в виде выводов и рекомендаций, следуя которым, этих ошибок можно было бы избежать.


Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments76

OpenBTS (1 часть) — Первое знакомство

Reading time3 min
Views40K
image OpenBTS.org — это открытый проект c исходным кодом на GitHub, призванный провести революцию среди мобильных сетей путем замены устаревших телекоммуникационных протоколов и традиционно сложных запатентованных аппаратных систем использованием Интернет-протокола и программного обеспечения с гибкой архитектурой. Архитектура этой системы является открытой для инноваций, позволяя любому желающему разрабатывать новых приложения и сервисы на базе OpenBTS и значительно упрощает настройку и эксплуатацию сети мобильной связи.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments27

Знакомство с OsmocomBB: 0x02 Hardware

Reading time5 min
Views56K
Привет %username%! Для работы с OsmocomBB необходимо определенное оборудование, на базе которого работает программная часть, а именно: приемо-передающее устройство, Ваш компьютер, выступающий в роли сервера, и кабель, соединяющий их между собой. В роли приемо-передающего устройства (transreceiver) чаще всего выступает обычный сотовый телефон, на котором запущена кастомная прошивка. Для соединения телефона с компьютером может потребоваться преобразователь TTL-USB. Следую инструкциям, опубликованным на сайте проекта, точнее, собирая информацию по кусочкам, можно собрать рабочий аппаратный комплекс, однако на данном этапе начинающему исследователю GSM сетей может встретиться множество подводных камней. Давайте разберемся со всем по порядку.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments14

Разрабатываем ИК-пульт ДУ для фотоаппарата

Reading time8 min
Views20K


После прочтения статьи на Хабре «Делаем ИК-пульт ДУ для фотоаппарата», захотелось поделиться опытом разработки ИК-пульта ДУ для фотоаппаратов в виде приложения под Android (от идеи до публикации).
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments7

Морфологическая обработка изображений. Лекции от Яндекса

Reading time13 min
Views34K
Мы продолжаем публиковать лекции Натальи Васильевой, старшего научного сотрудника HP Labs и руководителя HP Labs Russia. Наталья Сергеевна читала курс, посвящённый анализу изображений, в петербургском Computer Science Center, который создан по совместной инициативе Школы анализа данных Яндекса, JetBrains и CS-клуба.



Всего в программе девять лекций. Первая и вторая уже были опубликованы. В предыдущем рассказе речь шла об основах пространственной и частотной обработки изображений. Третья лекция посвящена основным операциям морфологической обработки изображений. Под катом — слайды, план лекции и её дословная расшифровка.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments7

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 3. переходная)

Reading time7 min
Views152K


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



Начать экономию
Total votes 61: ↑60 and ↓1+59
Comments97

Как стать автоматизатором тестирования?

Reading time5 min
Views66K


Добрый день!

Вчера, отвечая, кажется, в шестой раз на этот вопрос, твёрдо решил, что пришло время для написания статьи. Сразу отмечу – это исключительно моё видение, с которым, уверен, добрая половина мира автоматизаторов не согласится, – мой рецепт несколько сложнее, чем «почитать про тулзу», «поставить тулзу», «использовать тулзу», «написать в резюме, что умеешь пользоваться тулзой».

Эта статья полезна не только для мануальных тестировщиков, желающих автоматизировать свои рутинные проверки, но и для бизнеса и HR-ов, которые ввиду отсутствия каких-либо общепринятых критериев, как правило, понятия не имеют кто есть QA Automation Engineer и в большинстве случаев принимают решение на основании «хороший человек».

Бывает ещё хуже – руководитель/PM/etc… приходят к своим мануальным тестировщикам и говорят: «слушай, а может мы автоматизируем наше тестирование – это сэкономит нам кучу времени и денег. Скажи, какие книги тебе нужны и какие курсы».

0. Начнём с ошибок, которые не надо допускать:
  • Дайте мне книгу умную, которая всё за меня сделает
  • Дайте мне курсы платные, которые всему меня научат
  • Дайте мне форумы специализированные, которые ответят мне на все интересующие вопросы
  • Дайте мне сертификацию полезную, с которой меня везде примут

Это всё хорошо, но лишь в дополнение к рецепту, который описан ниже. Ни в коем случае нельзя с этого начинать.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments11

Information

Rating
Does not participate
Location
Karlsruhe, Baden-Württemberg, Германия
Date of birth
Registered
Activity