Search
Write a publication
Pull to refresh
63
0
Глеб Ницман @gleb_l

Инженер

Send message

Метафизика Dependency Injection

Reading time9 min
Views10K
image


Dependency Injection — это часто используемая техника в объектно-ориентированном программировании, предназначенная для уменьшения связанности компонентов. При правильном применении, помимо достижения этой цели, она может привнести поистине магические качества вашим приложениям. Как и любая магия, эта техника воспринимается как набор заклинаний, а не строгий научный трактат. Это приводит к неверному толкованию явлений и, как следствие, неправильному использованию артефактов. В своём авторском материале я предлагаю читателю шаг за шагом, кратко и по сути, пройти логический путь от соответствующих основ объектно-ориентированного дизайна до той самой магии автоматического внедрения зависимостей.
Читать дальше →

О структуре параллельных вычислений или доводы против оператора «Go»

Reading time23 min
Views11K


Каждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных API:


go myfunc();                                // Golang

pthread_create(&thread_id, NULL, &myfunc);  /* C with POSIX threads */

spawn(modulename, myfuncname, [])           % Erlang

threading.Thread(target=myfunc).start()     # Python with threads

asyncio.create_task(myfunc())               # Python with asyncio

Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")

Читать дальше →

Приводим уравнение линейной регрессии в матричный вид

Reading time6 min
Views26K


Цель статьи — оказание поддержки начинающим датасайнтистам. В предыдущей статье мы на пальцах разобрали три способа решения уравнения линейной регрессии: аналитическое решение, градиентный спуск, стохастический градиентный спуск. Тогда для аналитического решения мы применили формулу $X^T X \vec{w} = X^T \vec{y}$. В этой статье, как следует из заголовка, мы обоснуем применение данной формулы или другими словами, самостоятельно ее выведем.

Почему имеет смысл уделить повышенное внимание к формуле $X^T X \vec{w} = X^T \vec{y}$?

Именно с матричного уравнения в большинстве случаев начинается знакомство с линейной регрессией. При этом, подробные выкладки того, как формула была выведена, встречаются редко.
Читать дальше →

Подводные камни в управлении Machine Learning проектом

Reading time4 min
Views4.2K
image

Уже полтора года я занимаю у себя в компании позицию основного ML-разработчика. Полгода управляю небольшой командой. Я накопил опыт, которым хочу поделиться. Делать это буду в формате топа заблуждений и потенциальных трудностей.
Читать дальше →

Как я случайно раскрыла мошенничество национального масштаба на Airbnb

Reading time18 min
Views82K

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




Перевод статьи Элли Конти, журналистки, ранее работавшей в журнале Vice

Звонок раздался минут за 10 до того, как мы планировали заселиться в найденную на Airbnb квартиру. Я сидела в пивной, находившейся прямо за углом от съёмной квартиры на Норт-Вуд стрит в Чикаго, когда звонивший сказал, что запланированный въезд не состоится. Он пояснил, что предыдущий постоялец смыл в туалет что-то не то, и всю квартиру затопило. Он извинился, и пообещал разместить нас в другой его квартире, пока он не вызовет сантехника.

Мы с двумя друзьями прилетели в этот город в надежде расслабиться на хвосте у уходящего лета. Мы купили билеты, чтобы пойти на сентябрьский музыкальный фестиваль Riot Fest, где должны были выступать Blink-182 и Taking Back Sunday. Но путешествие не задалось ещё до этого звонка. Примерно за месяц до этого первый хозяин квартиры с Airbnb уже отменил нашу бронь, и у нас оставалось немного времени на замену. Пытаясь найти что-то ещё, я обнаружила квартиру, выставленную парой, Беки и Эндрю. Да, на фотографиях дом выглядел простеньким, но достаточно милым, особенно учитывая поджимавшее время – он был наполнен светом, просторным, и располагался близко к синей ветке метро.
Читать дальше →

Музей DataArt: промышленные компьютеры известного и неизвестного назначения

Reading time6 min
Views13K


Такие специфические машины в коллекции DataArt пока составляют небольшой раздел. Их создавали для работы в суровых условиях или сферах, требующих повышенной надежности, к ним же относят ЭВМ, заточенные под решение одной, но крайне ответственной задачи. Проследить происхождение и историю промышленных компьютеров бывает особенно трудно. В некоторых случаях мы рассчитываем и на помощь читателей нашего блога, которые, возможно, когда-то сталкивались с подобными машинами.
Читать дальше →

Методы наименьших квадратов: текст, написанный программистом для программистов

Reading time19 min
Views38K
Продолжаю публикацию своих лекций, изначально предназначенных для студентов, учащихся по специальности «цифровая геология». На хабре это уже третья публикация из цикла, первая статья была вводной, она необязательна к прочтению. Однако же для понимания этой статьи необходимо прочитать введение в системы линейных уравнений даже в том случае, если вы знаете, что это такое, так как я буду много ссылаться на примеры из этого введения.

Итак, задача на сегодня: научиться простейшей обработке геометрии, чтобы, например, суметь преобразовать мою голову в истукана с острова Пасхи:


Читать дальше →

IBM, память на линиях задержки и история дисплея 80×24 символа

Reading time14 min
Views12K

У терминала DEC VT100, проданного в количестве более миллиона штук, был дисплей 80×24 символа

Чем объяснить популярность терминалов 80×24 и 80×25 символов? Недавняя запись в другом блоге подвигла меня на небольшое исследование. Источником строк длиной в 80 символов очевидно являются перфокарты, и об этом пишут довольно часто. Однако что насчёт 24 или 25 строк на экране? Теорий существует много, но я нашёл простой ответ: IBM, а в частности, её доминирование на рынке терминалов. В 1971 году IBM ввела терминал с дисплеем 80×24 символа (модель 3270), и вскоре он стал наиболее продаваемым терминалом, заставив остальные равняться на размер 80×24. Дисплей для IBM PC добавил ещё одну строку, и сделал размер 80×25 стандартом в мире ПК. Влияние этих систем остаётся в силе и десятилетия спустя: строки длиной в 80 символов являются стандартами по сей день, как и терминальные окна 80×24 и 80×25.
Читать дальше →

Авария Boeing 737 Max глазами разработчика ПО

Reading time22 min
Views109K
Представляю вашему вниманию перевод статьи «How the Boeing 737 Max Disaster Looks to a Software Developer» Грега Трэвиса. Речь пойдет о том, как желание Боинга сэкономить и «срезать углы» для коммерческой выгоды, а также культура «некомпетентности и неэтичности» в сообществе разработчиков привело к гибели 346 человек. Я не во всем разделяю позицию автора (в частности, я считаю, что человеческий фактор куда большее зло, чем ПО), но с основными доводами сложно не согласиться.

Ниже очень много букв. Если читать лень, а ознакомиться с темой хочется, то на Хабре есть первая, более короткая версия этой статьи в переводе Вячеслава Голованова, с ней можно ознакомиться здесь.
Читать дальше →

Трёхпроходные протоколы

Reading time4 min
Views6.9K
Данный текст будет являться одной из переписанных глав для учебного пособия по защите информации кафедры радиотехники и систем управления, а также, с этого учебного кода, кафедры защиты информации МФТИ (ГУ). Полностью учебник доступен на github (см. также draft releases). На Хабре планирую выкладывать новые «большие» куски, во-первых, чтобы собрать полезные комментарии и замечания, во-вторых, дать сообществу больше обзорного материала по полезным и интересным темам.

Предыдущие темы:


Если между Алисой и Бобом существует канал связи, недоступный для модификации злоумышленником (то есть когда применима модель только пассивного криптоаналитика), то даже без предварительного обмена секретными ключами или другой информацией можно воспользоваться идеями, использованными ранее в криптографии на открытых ключах. После описания RSA в 1978 году, в 1980 Ади Шамир предложил использовать криптосистемы, основанные на коммутативных операциях, для передачи информации без предварительного обмена секретными ключами. Если предположить, что передаваемой информацией является выработанный одной из сторон секретный сеансовый ключ, то в общем виде мы получаем следующий трёхпроходной протокол.
Читать дальше →

Счетчик Фейсбук-лайков из старого электросчетчика

Reading time2 min
Views10K
Мы сделали физический счетчик лайков страницы в Facebook. Из старого электросчетчика. В основе программируемая плата Iskra Neo от Амперки (аналог Ардуино) и сервомотор постоянного вращения.
Читать дальше →

Что можно сделать через разъем OBD в автомобиле

Reading time4 min
Views66K
Ни для кого не секрет, что в современных автомобилях все системы под завязку забиты различной электроникой, даже простой стеклоподъемник имеет собственный микроконтроллер и адрес в общей сети. Мне, как интересующемуся владельцу, стало интересно, что же можно сделать имея просто доступ к разъему OBD и ничего более.

Безопасность в автоэлектронике — hello world на контроллере приборной панели

Reading time4 min
Views14K
После экспериментов над CAN шиной в автомобиле появилось дикое желание копнуть несколько глубже, в самое святая святых. Думаю, всем известен такой термин, как «чип-тюнинг», в переводе на русский это простая прошивка блоков управления (двигатель, коробка передач и т.д.). Производитель оборудования изначально закладывает в свои устройства функционал для обновления либо смены ПО микроконтроллера, но его механизм никому не раскрывается по понятным причинам, и чтобы усложнить этот процесс, сама программа, с помощью которой происходит работа с энергонезависимой памятью не хранится в прошивке, а загружается в контроллер только в момент обслуживания. Эта статья о том, как заставить микроконтроллер приборной панели выполнять чужой код имея доступ к диагностическому разъему авто.

Нижегородская радиолаборатория и радиоприёмники на кристаллических детекторах

Reading time5 min
Views9.8K
image

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

На повестку дня выносилось освоение космоса: в 1922 году писатель А.Н. Толстой публикует роман «Аэлита (Закат Марса)». В этом романе два землянина, инженер Лось и красноармеец Гусев, на ракете летят на Марс, обнаруживают на Марсе развитую технологическую цивилизацию и устраивают там «пролетарскую революцию».

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

Разработка электроники. Субъективный обзор наиболее полезных интегральных датчиков

Reading time9 min
Views15K


Того датчика, что слева я уже касался на страницах Хабра, поэтому сегодня поговорим о его младших собратьях.

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

Современные электронные компоненты позволяют не только создавать новые, но и расширять функциональность давно существующих устройств. Разработанные с их применением приборы становятся меньше, дешевле, функциональнее и проще в использовании, чем их предшественники. Но главное — они проще интегрируются в наш цифровой мир, а значит хорошо масштабируются. Это одна из основных причин, по которой технологичные стартапы набирают сегодня популярность у инвесторов.

О современных микроконтроллерах и методиках, упрощающих процесс «изобретения» новых продуктов, можно прочитать в моих предыдущих статьях. Сегодня же очередь дошла до датчиков. Невозможно объять необъятное, поэтому я сделал краткий и чисто субъективный обзор интегральных датчиков, которые, по моему личному опыту, могут быть наиболее полезны, как при проектировании совершенно новых приборов, так и в ходе модификаций, с целью придать новые качества давно выпускаемым устройствам, чтобы выделить их из ряда конкурентов. Преимущества отдавал тем, достоинства которых успел оценить в своих проектах.
Пара фраз о датчиках

Конспект по «Машинному обучению». Теория вероятностей. Формула Байеса

Reading time2 min
Views9.1K


Теория вероятностей. Формула Байеса


Пусть проводится некоторый эксперимент.

$w_1, ..., w_N$элементарные события (элементарные исходы эксперимента).
$\Omega = \{w_i\}_{i =1}^N$пространство элементарных событий (совокупность всевозможных элементарных исходов эксперимента).
Читать дальше →

Вывод модели динамической системы дискретного фильтра Калмана для произвольной линейной системы

Reading time8 min
Views6.6K
Фильтр Калмана (ФК) является оптимальным линейным алгоритмом фильтрации параметров динамической линейной системы при наличии неполных и зашумленных наблюдений. Этот фильтр находит широкое применение в технических системах управления до оценок динамики изменения макроэкономических ситуаций или общественного мнения.

Данная статья ставит себе целью познакомить читателя со стандартным подходом к переходу от непрерывной модели динамической системы, описываемой системой произвольных линейных дифференциальных уравнений к дискретной модели.
Читать дальше →

Зачем нужны ranges из C++20 в простой числодробилке?

Reading time7 min
Views11K

В последнее время интервалы (ranges), которые должны войти в стандарт C++20, довольно много обсуждают, в том числе и на Хабре (пример, где много примеров). Критики интервалов хватает, поговаривают, что


  • они слишком абстрактны и нужны только для очень абстрактного кода
  • читаемость кода с ними только ухудшается
  • интервалы замедляют код

Давайте посмотрим совершенно рабоче-крестьянскую практическую задачку, для того, чтобы понять, справедлива ли эта критика и правда ли, что Эрик Ниблер был укушен Бартошем Милевски и пишет range-v3 только при полной луне.


kdpv


Будем интегрировать методом трапеций вот такую функцию: $f(t) = 3 t^2 \sin t^3$, в пределах от нуля до $\tau$. Если $\tau^3 / \pi$ равняется нечётному числу, то интеграл равен 2.

Читать дальше →

Изучаем коня (часть 4)

Reading time15 min
Views46K

Продолжаем изучать шахматные фигуры вместе с ребенком. Теперь наступает очередь коня.

В силу окончания учебного года, произошла некоторая задержка и разрыв между ферзем и конем. С учетом того, что конь – самая сложная фигура в шахматах для изучения, материал готовился несколько дольше, чем обычно. Но вот он и вышел. Все диаграммы с разъяснениями под катом – милости прошу.
Читать дальше →

Музей DataArt. Осмотр видеотерминала Mera CM 7209

Reading time4 min
Views8.5K


Стараниями идеолога и главного технического эксперта нашего музея Глеба Ницмана в коллекции опять пополнение. На этот раз — раритетное устройство из Восточной Европы. Мы зафиксировали его осмотр на видео, а также вспомнили, как страны соцлагеря вместе строили мини-ЭВМ.

Сотрудничество социалистических стран в области науки и техники было официально оформлено еще в 1949 году при организации Совета экономической взаимопомощи. 20 лет спустя страны СЭВ подписали соглашение о совместной работе над созданием вычислительных машин — в результате появилась Единая Серия ЭВМ. Параллельно возникла идея еще одной серии — менее габаритных и, возможно, менее мощных машин, которые могли быть использованы для автоматизации производства. Еще через 5 лет, в 1974 году, Межправительственная комиссия по вычислительной технике заявила о запуске серии мини-компьютеров под названием СМ ЭВМ (семейство малых ЭВМ). Главным научным центром нового направления стал московский ИНЭУМ, а в качестве ориентира была принята архитектура DEC PDP-11.

Information

Rating
10,458-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity