Pull to refresh
0
0
Минькин Алексекй @crazt_genius

Программист

Send message

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

Reading time4 min
Views63K
Ни для кого не секрет, что в современных автомобилях все системы под завязку забиты различной электроникой, даже простой стеклоподъемник имеет собственный микроконтроллер и адрес в общей сети. Мне, как интересующемуся владельцу, стало интересно, что же можно сделать имея просто доступ к разъему OBD и ничего более.
Total votes 67: ↑67 and ↓0+67
Comments72

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

Reading time4 min
Views13K
После экспериментов над CAN шиной в автомобиле появилось дикое желание копнуть несколько глубже, в самое святая святых. Думаю, всем известен такой термин, как «чип-тюнинг», в переводе на русский это простая прошивка блоков управления (двигатель, коробка передач и т.д.). Производитель оборудования изначально закладывает в свои устройства функционал для обновления либо смены ПО микроконтроллера, но его механизм никому не раскрывается по понятным причинам, и чтобы усложнить этот процесс, сама программа, с помощью которой происходит работа с энергонезависимой памятью не хранится в прошивке, а загружается в контроллер только в момент обслуживания. Эта статья о том, как заставить микроконтроллер приборной панели выполнять чужой код имея доступ к диагностическому разъему авто.
Total votes 34: ↑34 and ↓0+34
Comments12

Автомобильная спутниковая сигнализация на STM32F1

Reading time33 min
Views120K
Теория создания самодельной автомобильной спутниковой сигнализации с web-интерфейсом и поддержкой eCall / ЭРА-ГЛОНАСС на базе микроконтроллеров STM32 как основа концепции «Умный автомобиль», и её использование в системах «Умный дом». Реализация аналога технологии Volvo On Call и автомобильной социальной сети Toyota Friends.
Читать дальше →
Total votes 115: ↑109 and ↓6+103
Comments56

Король разработки

Reading time15 min
Views211K


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

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

Недавно у него дела пошли в гору, и там где нормальные люди радуются и расцветают, этот парень, кажется, совсем съехал с катушек. Мы с ним как следует выпили, и он рассказал мне много искреннего дерьма, которое, честно, я бы хотел расслышать обратно.
Читать дальше →
Total votes 375: ↑315 and ↓60+255
Comments667

Расширяем функционал штатной аудиосистемы

Reading time3 min
Views39K
Всем привет. Являюсь обладателем десятилетнего японца, в котором меня все устраивало, за исключением штатной аудиосистемы — в ней отсутствовал Bluetooth. Способов решения этой проблемы целых три:

1. Купить затычку в прикуриватель и не выпендриваться.

Минусы:

  • Качество звука
  • Управление отсутствует
  • Вывод названия песен также отсутствует

Плюсов нет.

2. Купить на разборках за немалые деньги штатный блок Bluetooth + голову поновее.

Минусы:

  • Проблемы с совместимостью разных блоков
  • Монофонический вывод звука (на некоторых блоках)
  • Цена с заменой головы и проводки практически равна нештатной магнитоле
  • Кроме латиницы поддержки нет

Плюсы:

  • Штатное оборудование

3. Сделать что-либо самому, но так, чтобы не урезать имеющийся функционал.

Минусы:

  • Нужно время
  • Денег было потрачено больше, чем если выбрать первые два варианта вместе

Плюсы:

  • Удовлетворение от проделанной работы
  • Поддержка lossless аудио
  • Поддержка кириллицы, хоть и транслитом, т.к. экран не умеет.

Как вы поняли из названия, я выбрал путь номер 3.
Total votes 57: ↑56 and ↓1+55
Comments94

Аспектно-ориентированное программирование, Spring AOP

Reading time6 min
Views173K
Аспектно-ориентированное программирование (АОП) — это парадигма программирования являющейся дальнейшим развитием процедурного и объектно-ориентированного программирования (ООП). Идея АОП заключается в выделении так называемой сквозной функциональности. И так все по порядку, здесь я покажу как это сделать в Java — Spring @AspectJ annotation стиле (есть еще schema-based xml стиль, функциональность аналогичная).

Выделении сквозной функциональности


До

image

и после

image

Т.е. есть функциональность которая затрагивает несколько модулей, но она не имеет прямого отношения к бизнес коду, и ее хорошо бы вынести в отдельное место, это и показано на рисунке выше.

Join point


Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments23

Сопоставление товаров при помощи Elasticsearch для сервиса мониторинга цен конкурентов

Reading time7 min
Views13K
В далеком 2017 году, возникла идея разработать сервис мониторинга цен конкурентов. Его отличительной фишкой от остальных подобных сервисов должна была стать функция ежесуточного автоматического сопоставления товаров. Видимо из — за почти полного отсутствия информации о том, как это делать, сервисы по мониторингу цен предлагали лишь возможность ручного сопоставления силами самих клиентов, либо операторов сервиса с ценой от 0.2 до 1 рубля за факт сопоставления. Реальная же ситуация с, например, 10 сайтами и 20 000 товаров на каждом, неминуемо требует автоматизации процесса, так как ручное сопоставление уже слишком долгое и дорогое.

Ниже будет описан подход к автоматическому сопоставлению на примере ряда конкурирующих аптек с использованием технологии Elaticsearch.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments21

TypeScript: Десериализация JSON в классы с валидацией типов у свойств

Reading time3 min
Views24K
Привет, Хабр! Хочу поделиться с вами своей библиотекой для десериализации объектов JSON в классы, которая еще и автоматически валидирует по типам входные данные.

Не так давно в JavaScript появилась такая замечательная вещь как классы, которая значительно упростила процесс написания кода. Но к сожалению не появился функционал для десериализации JSON в эти самые классы, т.е. сериализовать класс в строку можно, а вот обратно уже своими силами. И вот для исправления этого недостатка и была написана библиотека ts-serializable которой я хочу поделиться с вами.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments19

DDD, Hexagonal, Onion, Clean, CQRS… как я собрал всё это вместе

Reading time14 min
Views100K


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

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

С тех пор я всегда чувствовал, что мне нужно восстановить «потерянное» время и узнать как можно больше, как можно быстрее. Поэтому я стал немного увлекаться экспериментами, много читать и писать, уделяя особое внимание дизайну и архитектуре программного обеспечения. Вот почему я пишу эти статьи, чтобы помочь себе в обучении.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments14

Построение распределенной VPN сети на базе Check Point. Несколько типовых сценариев

Reading time8 min
Views30K


В данной статье мы рассмотрим варианты построения распределенных сетей с помощью Check Point. Я постараюсь описать главные особенности Site-to-Site VPN от Check Point, рассмотрю несколько типовых сценариев, опишу плюсы и минусы каждого из них и попробую рассказать, как можно сэкономить при планировании распределенной VPN сети.

Check Point использует стандартный IPSec


Это первое, что нужно знать про Site-to-Site VPN от Check Point. И этот тезис отвечает на один из самых частый вопросов относительно Check Point VPN:

— Можно ли его “подружить” с другими устройствами?
— Да, можно!

Так называемый 3rd party VPN. Поскольку используется стандартный IPSec, то и VPN можно строить с любым устройством, которое поддерживает IPSec. Лично я пробовал строить VPN с Cisco ASA, Cisco Router, D-Link, Mikrotik, StoneGate. Все работает, хотя и есть некоторые особенности. Главное правильно задать все параметры для первой и второй фазы. Поддерживаемые параметры для IPSec соединения:
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments7

Краткий обзор алгоритма машинного обучения Метод Опорных Векторов (SVM)

Reading time6 min
Views76K

Предисловие




В данной статье мы изучим несколько аспектов SVM:

  • теоретическую составляющую SVM;
  • как алгоритм работает на выборках, которые невозможно разбить на классылинейно;
  • пример использования на Python и имплементация алгоритма в библиотеке SciKit Learn.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments16

Курс MIT «Безопасность компьютерных систем». Лекция 14: «SSL и HTTPS», часть 3

Reading time15 min
Views6.7K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Total votes 20: ↑20 and ↓0+20
Comments1

KubeDirector — простой способ запускать сложные stateful-приложения в Kubernetes

Reading time6 min
Views5.1K
Прим. перев.: Оригинальная статья написана представителями компании BlueData, основанной выходцами из VMware. Она специализируется на том, чтобы сделать доступнее (проще, быстрее, дешевле) развёртывание решений для Big Data-аналитики и машинного обучения в различных окружениях. Этому призвана способствовать и недавняя инициатива компании под названием BlueK8s, в которой авторы хотят собрать плеяду Open Source-инструментов «для деплоя stateful-приложений и управления ими в Kubernetes». Статья посвящена первому из них — KubeDirector, что, согласно замыслу авторов, помогает энтузиасту в области Big Data, не имеющему специальной подготовки в Kubernetes, разворачивать в K8s приложения типа Spark, Cassandra или Hadoop. Краткая инструкция о том, как это сделать, и приведена в статье. Однако учтите, что у проекта ранний статус готовности — pre-alpha.



KubeDirector — Open Source-проект, созданный для упрощения запуска кластеров из сложных масштабируемых stateful-приложений в Kubernetes. KubeDirector реализован с помощью фреймворка Custom Resource Definition (CRD), использует родные возможности расширения Kubernetes API и опирается на их философию. Такой подход обеспечивает прозрачную интеграцию с управлением пользователей и ресурсов в Kubernetes, а также с существующими клиентами и утилитами.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments3

Автоматизация тестирования с нуля. Часть 1

Reading time4 min
Views55K
Добрый день, уважаемые читатели.

Хочу рассказать об опыте построения системы автоматизации тестирования, когда на проекте или совсем нет тестирования, или ее степень минимальная.

Надеюсь статьи будет полезна начинающим автотестерам.

  • В первой части пофилосовствуем в общем про подход.
  • Во второй части (Часть 1) на примерах сделаем проект автотестов на JAVA + научим быстро тестировать API.
  • В третьей части дополним проект для UI тестирования, сделаем параллельное выполнение тестов.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments1

Ядра процессора или что такое SMP и с чем его едят

Reading time11 min
Views28K

Введение


Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.
Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор, да, это так, но как ОС может использовать несколько ядер одновременно? Некоторые программисты не спускаются до такого уровня абстракции — им это попросту не надо, но думаю, всем будет интересно то, как же SMP работает.
Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments24

EHCI по-людски на русском языке

Reading time13 min
Views38K
image

Введение


Всех приветствую. Сегодня хочу поделиться опытом и всё-таки по-моему внятно объяснить про такой, на первый взгляд, простой стандарт для USB 2.0 хост-контроллера.

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

Возможно, вам пригодиться эта статья, если, к примеру, вы не имеете достаточных навыков написания драйверов и чтение документации к хардвейру. Простой пример: хотите написать свою ОС для мини-ПК, дабы какая-нибудь винда или очередной дистрибутив линукса не загружали железо, и вы использовали всю его мощь исключительно в своих целях.
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments11

Приватное облако для Интернета Вещей

Reading time11 min
Views6.5K


Приветствую, Хабр!

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

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

Мы задались вопросом: «А что если собрать нечто подобное на открытых и общедоступных технологиях?»
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments13

Перегрузка, которая запрещена, или bridge-методы в Java

Reading time7 min
Views16K

В большинстве моих собеседований на технические позиции есть задача, в которой кандидату необходимо реализовать 2 очень похожих интерфейса в одном классе:


Реализуйте оба интерфейса одним классом, если это возможно. Объясните, почему это возможно или нет.


interface WithPrimitiveInt {
  void m(int i);
}

interface WithInteger {
  void m(Integer i);
}

От переводчика: Эта статья не призывает вас задавать такие же вопросы на интервью. Но если вы хотите быть во всеоружии, когда этот вопрос зададут вам, то добро пожаловать под кат.

Total votes 22: ↑21 and ↓1+20
Comments16

Операционные системы с нуля; Уровень 0

Reading time11 min
Views133K

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


Тут есть про диски, файловые системы, операции ввода-вывода, потоки /процессы, планирование, виртуальную память, защиту и безопасность, прерывания, параллелизм и синхронизацию. Как и в любом другом, уважающем себя курсе. Разница в актуальности материала и в количестве практики. Коддить придётся много.

Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments55

Пишем свой упрощенный OpenGL на Rust — часть 1 (рисуем линию)

Reading time12 min
Views39K
Продолжение:
Пишем свой упрощенный OpenGL на Rust — часть 2 (проволочный рендер).
Пишем свой упрощенный OpenGL на Rust — часть 3 (растеризатор)

Наверное, мало кто на хабре не в курсе, что такое Rust — новый язык программирования от Mozilla. Уже сейчас он привлекает много интереса, а недавно наконец вышла первая стабильная версия Rust 1.0, что знаменует собой стабилизацию языковых возможностей. Мне всегда импонировали системные ЯП, а уж идея системного языка, предлагающего безопасность превосходящую языки высокого уровня, заинтересовала еще больше. Захотелось новый язык попробовать в деле и, заодно, интересно провести время, программируя что-нибудь увлекательное. Пока думал, что бы такого на расте написать, вспомнился недавний цикл статей про компьютерную графику, который я лишь бегло просмотрел. А очень интересно было бы попробовать все-таки написать все эти красивости самостоятельно. Вот так и родилась идея этого хобби-проекта, а также данной статьи.

Поскольку в оригинальной статье тщательно разжевываются все нюансы, касающиеся программирования непосредственно графической составляющей, то я в своем цикле статей буду сосредотачиваться главным образом на том, что касается непосредственно Rust'а. Постараюсь описать те грабли, на которые довелось наткнуться, а также как решал возникающие проблемы. Расскажу о личных впечатлениях от знакомства с языком. И, конечно, упомяну список ресурсов, которыми пользовался при разработке. Итак, кому интересно, добро пожаловать под кат.

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


Here is the Rust, which i hope to get at the end. (игра слов, Rust по-английски «ржавчина»)
Читать дальше →
Total votes 50: ↑47 and ↓3+44
Comments16
1

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Date of birth
Registered
Activity