Pull to refresh
198
0
Сергей Новоградцев @snipsnap

Java разработчик

Send message

Работа с SD-картой по интерфейсу SPI. Реализация на VHDL

Reading time17 min
Views38K
Привет, Habr! Однажды на работе мне досталась задача оценить возможность реализации хранения данных на SD-карте при подключении ее к FPGA. В качестве интерфейса взаимодействия предполагалось использование SPI, так как он проще в реализации. Полученным опытом хотелось бы поделиться.


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

Простой прием для управления прокрастинацией

Reading time2 min
Views84K
Попробую поделиться советом, как можно немного осознать свое состояние и выработать полезный навык. Все написанное основано только на личном опыте, желании им поделится и почерпнуть из обратной связи полезное.
Читать дальше →

Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

Reading time10 min
Views76K


Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


Каждый раз когда я покупаю новый роутер, я устанавливаю OpenWRT. Зачем? Как правило производители не сильно заботятся о поддержке своих роутеров и со временем софт устаревает, появляются уязвимости и так далее, в общем вы поняли. Поэтому я предпочитаю хорошо поддерживаемую сообществом open-source прошивку OpenWRT.


Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

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

Защита ПО процессора S805-B (secured boot)

Reading time15 min
Views9.2K
Речь пойдёт о способе защиты програмного обеспечения, который реализован в самом процессоре. Для экспериментов я выбрал мультимедиа приставку Comigo Quattro. Цель — запустить своё ядро линукс.

Краткий обзор


На первый взгляд ПО приставки является клоном Android. Доступ по ssh закрыт. Работает только с действующим абонементом от дистрибьютора. Стоковая прошивка полностью шифрована. Всё глухо, как в танке.

Подготовка


Первым делом я подробно ознакомился с техническим описанием процессора. Порадовали меня две вещи: у процессора был интерфейс UART и он поддерживал загрузку системы с разных источников (USB, SD и т.д.), которая могла настраиваться снаружи при помощи конфигурационного регистра. На борту приставки также имелось место для mSD карты, но разьём был не припаян. Для того, чтобы найти пятачки конфигурационного регистра и пины UART мне пришлось спаять процессор и прозвонить дорожки. Когда все контакты были найдены, я подключил адаптер UART и запустил приставку. На экрана высветился U-Boot. Загрузка системы прерывалась нажатием клавиш и U-Boot выходил в режим ввода, но ни на какие клавиши кроме enter, никак не реагировал. И эта лазейка тоже была закрыта.
Читать дальше →

Обзор плат на SoC ARM+FPGA. Часть первая. Мир Xilinx

Reading time14 min
Views69K
Часть 1. Мир Xilinx
Часть 2. Мир Intel (Altera)

В опубликованном ранее переводе обзора 98 «хакерских» плат немалый интерес аудитории вызвали платы на базе SoC, сочетающих в себе ядра ARM и FPGA, такие, как Parallella. И это неудивительно, ведь такая комбинация даёт воистину потрясающие возможности по сравнению с «просто» процессором или «просто» FPGA. На таких SoC можно строить системы, сочетающие в себе алгоритмичски сложные задачи, поддержку сетевых стеков, GUI и прочих вещей, проще поддающихся реализации на процессоре, и задачи, требующие жесткого реального времени, обработки сигналов, обработки изображений и другие задачи, для реализации которых удобны FPGA. Разумеется, для многих задач можно использовать простые FPGA (возможно, включив в них IP-ядро процессора типа NIOS II или MicroBlaze), многие задачи можно решить на процессоре достаточной мощности, используя операционные системы реального времени (типа RTEMS), но всё же, SoC являются в настоящее время очень привлекательным вариантом для решения множества задач, как в профессиональных областях, так и для хобби.


Осторожно, много картинок!

Модернизация IDA Pro. Учимся писать загрузчики на Python

Reading time33 min
Views12K


Привет всем,


цикл статей по написанию разных полезных штук для IDA Pro продолжается. В прошлый раз мы исправляли процессорный модуль, а сегодня речь пойдёт о написании модуля-загрузчика (лоадера) для одной винтажной операционной системы, а именно — для AmigaOS. Писать будем на Python. Также я постараюсь раскрыть некоторые тонкости при работе с релоками (они же relocations), которые встречаются во многих исполняемых файлах (PE, ELF, MS-DOS и т.п.).

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

Тред Ариадны: как полюбить JSR-133. Доклад Яндекса

Reading time12 min
Views5.7K
Многоядерные процессоры — обыденность. Рано или поздно любому программисту-практику придется зайти в лабиринт многопоточного программирования и встретиться с населяющими его «чудовищами». Поговорим о том, с чего начать такой путь и какие инструменты и подходы помогут выйти победителем. Я выступил с этим докладом перед будущими участниками круглогодичной стажировки Яндекса.


— Меня зовут Сева Миньков. Я работаю в отделе облачной инфраструктуры поискового департамента. Занимаюсь в основном бэкендом. Пишу на разных языках, но чаще всего это Java и языки, запускаемые на Java Virtual Machine (JVM).
Читать дальше →

Junior FPGA Design Engineer: как стать?

Reading time11 min
Views148K
Всем привет!

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

Разработка под FPGA (ПЛИС) — это не просто какой-то язык. Это очень объемная область, с огромным количеством подводных камней и нюансов.

В этой статье вы найдете:
  • список тем, которые должен освоить начинающий разработчик под FPGA
  • рекомендуемую литературу по каждой из тем
  • набор тестовых вопросов и лабораторных работ
  • классические ошибки новичков (и советы по исправлению)

Добро пожаловать под кат!
Читать дальше →

Превращаем скрипты в красивые инструменты для машинного обучения

Reading time6 min
Views16K

Создаём семантический поисковик с машинным обучением в реальном времени за 300 строк Python кода.

Мой опыт подсказывает, что любой более или менее сложный проект по машинному обучению рано или поздно превращается в набор сложных неподдерживаемых внутренних инструментов. Эти инструменты, как правило, мешанина из скриптов Jupyter Notebooks и Flask, которые сложно развёртывать и интегрировать с решениями типа GPU сессий Tensorflow.


Впервые я столкнулся с этим в университете Карнеги, затем в Беркли, в Google X, и, наконец, при создании автономных роботов в Zoox. Зарождались инструменты в виде небольших Jupyter notebooks: утилита калибровки сенсора, сервис моделирования, приложение LIDAR, утилита для сценариев и т.д.


С ростом важности инструментов появлялись менеджеры. Бюрократия росла. Требования повышались. Маленькие проекты превращались в огромные неуклюжие кошмары.


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

Как быстро делать прототипы устройств и почему это важно. Доклад Яндекс.Такси

Reading time16 min
Views29K
Любой технически сложный hardware-проект — всегда уравнение с множеством неизвестных: платформа, компоненты, технологии, производство, функциональность, реализуемость. «Пощупать», что получается, можно, когда пройдены дорогостоящие этапы: R&D, выбор комплектующих, разработка программ и поиск фабрики для производства.



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

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

Из физиков в Data Science (Из двигателей науки в офисный планктон). Третья часть

Reading time12 min
Views33K


Эта картинка, за авторством Артура Кузина (n01z3), достаточно точно суммирует содержание блог поста. Как следствие, дальнейшее повествование должно восприниматься скорее как пятничная история, нежели как что-то крайне полезное и техническое. Кроме того, стоит отметить, что текст насыщен английскими словами. Какие-то из них я не знаю как правильно перевести, а какие-то переводить просто не хочется.


Первая часть.
Вторая часть.


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


Шел январь 2017 года. На тот момент у меня было чуть больше года трудового стажа и работал я в Сан-Франциско в компании TrueAccord как Sr. Data Scientist.


TrueAccord — это стартап, который занимается сбором долгов. По-простому — коллекторское агентство. Обычно коллекторы много звонят. Мы же посылали много email'ов, а звонили мало. Каждый email вел на сайт компании, где должнику предлагалось сделать скидку на долг, да еще и позволить платить в рассрочку. Такой подход приводил к лучшей собираемости, позволял масштабироваться и меньше встревать на судебные иски.

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

Градиентный спуск по косточкам

Reading time37 min
Views66K

В интернете есть много статей с описанием алгоритма градиентного спуска. Здесь будет еще одна.


8 июля 1958 года The New York Times писала: «Психолог показывает эмбрион компьютера, разработанного, чтобы читать и становиться мудрее. Разработанный ВМФ… стоивший 2 миллиона долларов компьютер "704", обучился различать левое и правое после пятидесяти попыток… По утверждению ВМФ, они используют этот принцип, чтобы построить первую мыслящую машину класса "Перцептрон", которая сможет читать и писать; разработку планируется завершить через год, с общей стоимостью $100 000… Ученые предсказывают, что позже Перцептроны смогут распознавать людей и называть их по имени, мгновенно переводить устную и письменную речь с одного языка на другой. Мистер Розенблатт сказал, что в принципе возможно построить "мозги", которые смогут воспроизводить самих себя на конвейере и которые будут осознавать свое собственное существование» (цитата и перевод из книги С. Николенко, «Глубокое обучение, погружение в мир нейронный сетей»).


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

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

Как не промахнуться с бюджетом на серийное производство корпусов-2: цены на мелкосерийное литьё пластика

Reading time3 min
Views28K
В этой статье на Хабре мы привели 20 примеров цен на изготовление партий корпусов. Добавляем ещё несколько реальных случаев: это цены на мелкосерийное производство литьём пластика, от 25 до 50 штук. Возможно, теперь вы более лучше (с) представите, сколько «это» будет стоить.



Все приборы (дизайн и конструкция) разрабатывались у нас в Формлабе, организацией производства занимались тоже мы. Поехали.
Читать дальше →

Вычисление 2D-коллизий: алгоритм Гилберта — Джонсона — Кирти

Reading time11 min
Views24K
image

Я занялся изучением процессов распознавания коллизий, и это привело меня к алгоритму Гилберта — Джонсона — Кирти (Gilbert-Johnson-Keerthi, GJK).

Все примеры кода в посте написаны на TypeScript. В примерах используются созданные мной структуры, которые подробно в посте не рассмотрены. Они просты и их можно посмотреть в репозитории GitHub:

  • Vector
  • IShape
  • Collision

Весь код из поста хранится в репозитории GitHub:

https://github.com/jthomperoo/gjk-ts-implementation

Пост написан на основании этой статьи и рекомендованного в ней видео:


Введение


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

Попытки начать обучение ребенка программированию с Minecraft pocket edition

Reading time5 min
Views58K


На дворе осень и сын все чаще остается дома, уткнувшись в телефон или планшет, слабо реагируя на внешние раздражители. Меня это огорчает. Сам я начал программировать, как мне кажется, с того, что к моему первому компьютеру БК 0010-01 игры то на кассетах в комплекте шли, а вот магнитофон не шел. Пока добывали магнитофон с подходящим линейным выходом, я успел попробовать Бейсик, спасибо отцу за первые уроки. Так что, когда смог со скрипом загрузить первую графическую игру, то смотрел на нее уже не как на то, во что наконец буду играть, а очарованно думал, как бы сделать свою не хуже. Сына же, в его 8 лет, давно поглотил мир видеоигр и ютуба, так что начинать программирование с трели на встроенном динамике, похоже, впечатления не произведет.

Миниатюрный электротехнический конструктор для детей своими руками

Reading time2 min
Views18K
Хотя я и создаю настольные игры, обучающие в том числе и основам электротехники, но я всегда рекомендую совмещать их с физическими деталями, проводами и макетными платами.

И поэтому я хочу представить вам конструктор размером с пластиковую банковскую карточку, который был разработан для ознакомления детей с простыми схемами, но достаточно необычным образом. Идея была сделать простоту уровня Знатока, но на макетных платах.

Книга «Классические задачи Computer Science на языке Python»

Reading time8 min
Views20K
image Многие задачи в области Computer Science, которые на первый взгляд кажутся новыми или уникальными, на самом деле уходят корнями в классические алгоритмы, методы кодирования и принципы разработки. И устоявшиеся техники по-прежнему остаются лучшим способом решения таких задач!

Книга даст вам возможность глубже освоить язык Python, проверить себя на испытанных временем задачах, упражнениях и алгоритмах. Вам предстоит решать десятки заданий по программированию: от самых простых (например, найти элементы списка с помощью двоичной сортировки), до сложных (выполнить кластеризацию данных методом k-средних). Прорабатывая примеры, посвященные поиску, кластеризации, графам и пр., вы вспомните то, о чем успели позабыть, и овладеете классическими приемами решения повседневных задач.
Читать дальше →

Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком

Reading time12 min
Views22K

Совершенствуя свой комнатный термостат, о котором писал раньше, я задался целью дополнить его беспроводным датчиком температуры для измерения температуры воздуха на улице, собрать термостат с питанием от батареек и заменить модули приемник-передатчик RF 433MHz другой парой радиомодулей с большей дальностью связи при напряжении питания не более 3В. По ходу решения этих задач вырисовалась автономная метеостанция, речь о которой пойдет ниже.


Тем, кто тут впервые, советую сразу перейти сюда. Тут — новая версия метеостанции.

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

CAGR как проклятие специалистов, или ошибки прогнозирования экспоненциальных процессов

Reading time20 min
Views42K

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

  • «У телефона слишком много недостатков, чтобы его можно было серьезно рассматривать, как средство коммуникации. Устройство не представляет для нас никакой ценности», — писали специалисты Western Union, тогда крупнейшей телеграфной компании в 1876 году. 
  • «У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Рентгенография окажется обманом», — зажигал Уильям Томсон лорд Кельвин в 1899, и можно, конечно, шутить, что британские ученые зажигали еще в XIX веке, но мы еще долго будем измерять температуру в Кельвинах, и сомневаться в том, что многоуважаемый лорд был хорошим физиком, причин нет. 
  • «Кто, черт возьми, захочет слышать, как актеры говорят?», — говорил про звуковое кино Гарри Ворнер, основавший Warner Brothers в 1927, один из лучших экспертов по кино того времени. 
  • «Нет причин, по которым кому-то нужен домашний компьютер», — Кен Олсон, основатель корпорации Digital Equipment в 1977, незадолго до взлета домашних компьютеров…
  • В наше время ничего не поменялось: «Нет никаких шансов, что iPhone получит значительную долю рынка», — писал в USA Today гендиректор Microsoft Стив Балмер в апреле 2007 перед триумфальным взлетом смартфонов.

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

Как мы переводили легаси проект на GraphQL

Reading time5 min
Views4.2K
Привет, Хабр. Меня зовут Антон Потапов, я iOS разработчик в компании FINCH. Сегодня я хочу подробно рассказать про то как перевести мобильный проект на GraphQL, описать плюсы и минусы этого подхода. Приступим.

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

Information

Rating
Does not participate
Location
Kassel, Hessen, Германия
Registered
Activity