Pull to refresh
1
0

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

Send message

Завтра мы начнём вас убивать, или Зачем нужны инженеры

Reading time12 min
Views135K
Привет, Хабр. Под этим пафосным заголовком я бы хотел поговорить о том, что такое «инженерная наука», в чём состоит главная обязанность инженера и что бывает, если он с ней не справляется — мне кажется, в последнее время эта тема становится всё более актуальной, при этом её публичного обсуждения я не вижу.

Сподвигла меня на это разразившаяся (при моём активном участии) в минувшие выходные история с «нейроинтерфейсами» компании Bitronics Lab — детскими учебными наборами для снятия ЭЭГ и мышечной активности, которые при ближайшем рассмотрении оказались попросту небезопасны в использовании из-за несоблюдения их производителем базовых требований к электробезопасности медицинского оборудования.

История это очень показательна в том, что она демонстрирует, как по мере роста сложности система, составленная из кажущихся её авторам безопасными компонентов, становится опасной — причём на примере системы простой, бытовой и интуитивно понятной, а не атомного реактора или реактивного лайнера, которые любят брать в качестве примеров авторы книг вроде моей любимой "Inviting Disaster".

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

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



Казалось бы, что может пойти не так?
Читать дальше →
Total votes 244: ↑234 and ↓10+224
Comments657

Алгоритм установления соединения в протоколе SSH

Reading time5 min
Views107K
(Начальное название статьи «Алгоритм работы протокола SSH» было изменено по рекомендациям Vindicar, Karroplan и других участников хабросообщества)

Периодически читая статьи, посвящённые SSH, обратил внимание, что их авторы порой не имеют понятия, как работает этот протокол. В большинстве случаев они ограничиваются рассмотрением темы генерации ключей и описанием опций основных команд. Даже опытные системные администраторы часто несут полную ахинею при обсуждении вопросов работы SSH, выдавая опусы в стиле: передаваемые данные шифруются открытым SSH-ключом клиента, а расшифровываются закрытым, или: для шифрования данных при передаче используется алгоритм RSA.

Попытаюсь внести немного ясности в работу протокола SSH, а заодно рассмотреть роль алгоритма RSA и ключей авторизации пользователя…

image
Читать дальше →
Total votes 65: ↑56 and ↓9+47
Comments52

Моё разочарование в софте

Reading time11 min
Views391K

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


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Total votes 505: ↑474 and ↓31+443
Comments2474

Как работает yield

Reading time6 min
Views695K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Всякие штуки в MetaPost

Reading time8 min
Views15K
В чем рисовать векторные картинки? Для меня, как и для многих других, ответ довольно очевиден: скорее всего, в иллюстраторе. Ну или в инкскейпе. Так же я думал, когда мне заказали отрисовать штук восемьсот картинок для учебника физики. Ничего такого, просто черно-белые технические иллюстрации со всякими блоками, шарами, пружинами, линзами, машинками, тракторами и прочим подобным. Предполагалось, что верстаться книга будет в латехе, а мне были предоставлены вордовские файлы со вставленными картинками — то карандашными набросками, то сканами из других книг — и вроде бы рукопись в каком-то виде. В этом случае первая мысль — рисовать в инкскейпе — уступила фантазиям на тему «как бы это так все автоматизировать». Лучшим вариантом показался в тот момент почему-то MetaPost.



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

Изучаем сопромат с CalculiX

Reading time12 min
Views19K
Сдал сопромат — можно жениться!

Введение


Метод конечных элементов (МКЭ или FEM, у них за рубежом) прочно вошел в практику инженерных расчетов при проектировании сложных систем. В значительной степени это касается прочностных расчетов механики. Применения этого метода, реализуемого соответствующим программным обеспечением существенно сокращает цикл разработки конечного устройства, позволяя исключить массу экспериментальных проверок, необходимых при использования классических расчетов на основе методов сопромата и строительной механики. На текущий момент разработана масса прикладного ПО, реализующего МКЭ. Во главе угла стоит мощный ANSYS, по бокам от него и в почетном удалении — CAD-системы со встроенным FEM-модулем (SolidWorks, Siemens NX, Creo Parametric, Компас 3D).

CalculiX силен, но труден и непонятен. Исправим это?



Естественно, МКЭ проник и в сферу образования — чтобы использовать его в реальных задачах, нужна подготовка соответствующих специалистов. В столицах, в крупных технических вузах обстановка в этой области более-менее нормальная, да и у нас в регионе тот же ANSYS применяется, например, на кафедре теории упругости ЮФУ. Но по периферии, в узко специализированных и не богатых университетах ситуация плачевна. И всё просто — ANSYS стоит порядка 2 млн. рублей за одно рабочее место, а место требуется не одно. К сожалению не все вузы могут позволить себе выложить 30-40 миллионов на организацию компьютерного класса для обучения применению МКЭ.

Одной из альтернатив может служить применение в учебном процессе свободного ПО. К счастью таковое ПО имеется. Однако, русскоязычных материалов по его использованию практически не существует. Исправляя эту ситуацию, данную статью я собираюсь посвятить в введению в CalculiX — открытый, свободный программный пакет, предназначенный для решения линейных и нелинейных трёхмерных задач механики твёрдого деформируемого тела и механики жидкости и газа с помощью метода конечных элементов.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments55

О главном инструменте разработчика, аналитика и руководителя

Reading time8 min
Views30K
Думаю, все были на собеседованиях и на вопрос «какие инструменты вы используете в работе», у всех заготовлен ответ про языки, библиотеки, среды разработки, базы данных и т.д. и т.п. В крайнем случае, у кого-то может быть припасена шутка про грабли и напильник. Ну и все доблестно перечисляют всякие Spring'и Hibernate'ы думая что перечисляют невероятно важные средства разработки, в которых хорошо разбираются. Но правда заключается в том, что единственно важным средством разработки является ваш мозг. И вы абсолютно ничего не знаете о том, как он устроен.


Эта статья основана на книге Андрея Курпатова Чертоги разума. Андрей Курпатов — российский врач-психотерапевт, телевизионный продюсер, автор книг по психологии, научных монографий по психотерапии и философии.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments52
12 ...
13

Information

Rating
Does not participate
Registered
Activity