Pull to refresh
68
0
IT-диктатор @sse

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

Send message

Как мы верифицированный полетный контроллер для квадрокоптера написали. На Ada

Reading time10 min
Views20K

Однажды на новогодних каникулах, лениво листая интернет, бракоделы в нашем* R&D офисе заметили видео с испытаний прототипа роботакси. Комментатор отзывался восторженным тоном – революция, как-никак. Но тренированное ухо расслышало в шуме с испытательной площадки еще кое-что. Контроллер скорости (штука для управления тягой винтов) сыграл мелодию при старте, как это любят делать пилоты дронов, которые часто используют полётный контроллер Betaflight. Неужели там бета-флайт? Ну, или какая-то из ее немногих разновидностей.

Перед глазами побежали флешбеки, где-то из глубин подсознания всплыла забытая уже информация о прошивках для Тойоты на миллионы тысяч строк Си и 2 тысячи глобальных переменных (Toyota: 81564 ошибки в коде).

После просмотра исходного кода Betaflight на гитхабе стало еще страшнее, и чем дальше, тем хуже. Это – управляющая программа для тяжелого устройства с острыми винтами, которое летает высоко, быстро. Становится страшно: игрушки это одно, но я бы не хотел летать, на таком такси. Но ведь можно иначе? Можно, решили мы! И решили это доказать. На Avito был куплен акробатический FPV-“квадрик” на базе STM32F405, для отладки – Discovery-платы для этого же контроллера, а дальше все как в тумане..

Читать далее
Total votes 92: ↑90 and ↓2+88
Comments58

Мифы и заблуждения насчёт CLR и .NET

Reading time8 min
Views35K
Последнее время на популярно-технических форумах я часто встречаю ожесточённые споры приверженцев и противников .NET. Эти споры, как правило, начинаются из-за недоразумения, и заканчиваются жестким троллингом, беседами “за жизнь” и сравнением радиусов и удельных плотностей материала различных сферических коней. Обе стороны силятся доказать и аргументировать, но ни одна не хочет посмотреть на предмет спора другими глазами. Хабрахабр не исключение, увы.

Накалу страстей такой беседы позавидовали бы религиозные фанатики. Единственное, что спасает противников от крестовых походов друг на друга, вооружившись вилами и LangSpec’ами — то, что они разделены интернетом.

Так жить нельзя, господа. Мне захотелось исправить эту ситуацию, и выступить с одной из сторон. Этим постом я попробую нанести сообществу непоправимую пользу и разобраться с мифами, на обсуждение которых, а не на взаимное членовредительство, к сожалению, и уходят силы спорщиков. А так как я в своё время перелез с C++ на C# и всё вокруг него, то я буду развенчивать негативные мифы, прибавлять позитива и всячески приукрашивать действительность — а как без этого. И — заметьте — это обойдется совершенно бесплатно для M$. Ну а сделать я это хочу в формате Q&A.
Едем!
Total votes 226: ↑170 and ↓56+114
Comments241

Интересная задачка: повышаем стабильность (robustness) приложений (ч. 3) — код под CER и прочие финты ушами

Reading time4 min
Views558
В продолжение темы устойчивых приложений и CER (начало тут) — рассмотрим, как подготовить произвольный (или почти произвольный) участок кода для выполнения в регионе Constrained Execution.

Зачем такое надо? Помните, я говорил, что в процессе подготовки к CER происходит инспекция стека и пре-jitt. Но проинспектировать стек, если вызов происходит через интерфейс или виртуальный метод заранее невозможно. Поэтому такой код:
    ...
    RuntimeHelper.PrepareConstrainedRegions();
     try {}
    finally {
         obj.SomeVirtualMethod();
    }
скомпилируется, но в run-time не достигнет желаемого.
Как быть?
Total votes 12: ↑7 and ↓5+2
Comments3

Интересная задачка: повышаем стабильность (robustness) приложений (ч. 2)

Reading time3 min
Views727
Итак, привожу решение проблемы из топика habrahabr.ru/blogs/net/69545 — про гарантированное освобождение неуправляемого ресурса.

Как правильно заметил товарищ adontz, проблема решается при помощи CER.
CER — это технология Constrained Execution Region, при помощи которой можно обезопасить свой код, гарантировав ему то, что на некотором его участке гарантированно _не_ случится асинхронного прерывания типа StackOverflow или ThreadAbort, или «отвалился» jitter — всякое бывает, и не всегда есть возможность оставить внешние ресурсы в консистентном состоянии.

Чего?
Total votes 30: ↑24 and ↓6+18
Comments20

Интересная задачка: повышаем стабильность (robustness) приложений

Reading time2 min
Views564
Продолжаем отрабатывать корпоративный план по формированию правильного общественного мнения о компании Microsoft и ее технологиях :) Время такое.

Итак, вот вам техническая задачка. Насколько я смог найти, ее разъяснения нет даже у Рихтера. К самому решению я надеюсь придти потом, когда будет возможность «подолее невозбранно» посидеть за компьютером, а пока условие.

Как известно, .Net проектировался с оглядкой на возможность глубокого взаимодействия с нативным кодом и COM. Не будем разбираться сейчас, было ли это техническим или политическим решением, важно вот что — взаимодействие с неуправляемым кодом является сложной проблемой, и может попить немало крови разработчика там, где он не ожидал. Предлагаемая задача — одна из этих.

UPD: Решение тут: habrahabr.ru/blogs/net/69650

Послушать про about
Total votes 17: ↑12 and ↓5+7
Comments39

Ползучая гадость, или о проблемах с отдельно взятой БД отдельно взятого приложения

Reading time5 min
Views2.1K
Сегодня я хочу озвучить одну проблему, с которой сталкивается разработчик, как только в поле его зрения попадает работа с БД. Самое грустное заключается в том, что я не знаю, как решать ее правильно, и что делать. Вернее, знаю что, но мне это не помогает и не поможет. Думаю, что и вам тоже.
Ниже будет длинная ввводная, по результатам коей, я не сомневаюсь, можно наговорить про меня много интересных вещей, которых хватит на несколько формуляров по 7-Б и направлений на пожизненное принудительное лечение, но вы уж дочитайте.
Поглумиться над дауном
Total votes 93: ↑83 and ↓10+73
Comments183

Nemerle и спутник, или ФП для самых маленьких

Reading time7 min
Views1.4K

В последнее время на Хабре зачастило упоминание о Nemerle. Хотите узнать, что это такое и как его едят, а вернее — как с его помощью едят (задачки)?

Попробую показать на простом примере, но для этого вам придется
принести свой мозг в жертву богу Nemerle
Total votes 35: ↑30 and ↓5+25
Comments13

Рефакторинг: миссия (не)выполнима?

Reading time4 min
Views2K
Что делать, если исходники проекта напоминают болото, а жить в нем планируется еще долго? Рефакторинг исходных кодов проекта — это более выгодная из двух альтернатив разобраться с означенной проблемой. Вторая из альтернатив — выбросить и переписать все заново — обычно не устраивает, по разным причинам.

А как делать этот самый рефакторинг, если даже неизвестно, с чего начать? Как осушить болото кода и не утонуть нем?

Конечно, идеальный вариант — считать рефакторинг одной из активности на проекте с самого его начала и выделять на него проектное время команды. В жизни, как ни странно, однако чаще всего оказывается, что предыдущий лид проекта не сильно озадачивался этим вопросом, предпочитая плыть по течению; возможно, он надеялся когда-нибудь сбагрить эту ношу менее удачливому лиду — пока проект еще не развалился; а может быть, просто не знал, что делать. Шеф, усё пропало!

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments52

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Project Director, Chief information officer (CIO)
Lead
People management
Development management
Building a team
Company management
Development of tech specifications
Project planning