Pull to refresh
3
0
Чернов Дмитрий @ChernovDmitry

User

Send message

Реализация Spring Framework API с нуля. Пошаговое руководство для начинающих. Часть 1

Reading time 19 min
Views 59K


Spring Framework является одним из самых сложных фремворков для понимания и изучения. Большинство разработчиков изучают его медленно, через практические задачи и гугл. Этот подход не эффективен, так как не даёт полной картины и при этом требует больших затрат.

Я хотел бы предложить вам принципиально новый подход к изучению Спринга. Он заключается в том, что человек проходит через серию специально подготовленных туториалов и самостоятельно реализует функционал спринга. Особенность этого подхода в том, что он, помимо 100%-го понимания изучаемых аспектов Spring даёт ещё большой прирост в Java Core (Annotations, Reflection, Files, Generics).

Статья подарит вам незабываемые ощущения и позволит почувствовать себя разработчиком Pivotal. Шаг за шагом, вы сделаете ваши классы бинами и организуете их жизненный цикл (такой же, как и в реальном спринге). Классы, которые вы будете реализовывать — BeanFactory, Component, Service, BeanPostProcessor, BeanNameAware, BeanFactoryAware, InitializingBean, PostConstruct, PreDestroy, DisposableBean, ApplicationContext, ApplicationListener, ContextClosedEvent.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 17

GWT Grid

Reading time 1 min
Views 8.4K
Недавно на Хабре обсуждались таблицы, используемые в веб-интерфейсах учётных систем. Вдохновившись этой темой, мы решили выложить в открытый доступ исходные продуктивные коды своей таблицы: https://finbudgetgrid.googlecode.com
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 16

Spring Boot: от начала до продакшена

Reading time 15 min
Views 364K

В данной статье я попробую расписать все шаги, которые потребуются для создания небольшого проекта на Spring Boot и развертывания его на боевом сервере.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 38

Ричард Хэмминг: Глава 10. Теория кодирования — I

Reading time 11 min
Views 14K
«Цель этого курса — подготовить вас к вашему техническому будущему.»

imageПривет, Хабр. Помните офигенную статью «Вы и ваша работа» (+219, 2442 в закладки, 394k прочтений)?

Так вот у Хэмминга (да, да, самоконтролирующиеся и самокорректирующиеся коды Хэмминга) есть целая книга, написанная по мотивам его лекций. Мы ее переводим, ведь мужик дело говорит.

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

Мы уже перевели 28 (из 30) глав. И ведем работу над изданием «в бумаге».

Теория кодирования — I


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

Для упрощения проблемы представления информации рассмотрим проблему передачи информации от точки к точке. Этот вопрос связан с вопросом сохранения информация. Проблемы передачи информации во времени и в пространстве идентичны. На рисунке 10.1 представлена стандартная модель передачи информации.

image

Рисунок 10.1
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 0

Как мы делали БелАЗ. Часть 1 – Железо

Reading time 15 min
Views 82K


Наверное, все знают, что большие карьерные самосвалы имеют электромеханическую трансмиссию (уже с 1968 года): ДВС вращает генератор, энергия от которого приводит в движение тяговые электродвигатели в задних колесах самосвала. В интернете можно найти много обзорных статей и «тест драйвов» этих машин, но многие технические подробности обычно опускаются. Эта серия статей будет написана с изнаночной стороны, от имени разработчиков электрической трансмиссии: как мы это разрабатывали, на каких контроллерах, на каких двигателях, как отлаживали и запускали машину. Также мы готовы ответить на интересующие вопросы в комментариях. Интересно? Добро пожаловать под кат.
Читать дальше →
Total votes 213: ↑213 and ↓0 +213
Comments 256

Автопилот на AT91SAM7

Reading time 13 min
Views 13K

1. Вступление


Радиоуправляемыми самолетами я увлекся еще в 2002 году, живя в Праге. Первый самолет был с размахом крыла 1.2 м, двигатель 2-х тактный ДВС. Вот фрагмент видеозаписи тех времен. Однажды в 2008 году мне в руки попал акселерометр ADXL202E. Имея опыт разработки устройств на контроллере семейства MCS-51(это был Рубидиевый стандарт частоты и система сбора данных), я решил сделать автопилот для радиоуправляемой модели Mentor. Первым делом я подключил акселерометр к контроллеру. Для простоты я выбрал отладочную плату с контроллером AT91SAM7, за удобство и простоту работы с ней. Надо заметить, что я решил не изучать ничего про автопилоты в интернете, а делать все самостоятельно с "0", чтобы было интересней.



Итак, волей случая в 2008 году мне довелось полетать на самолете и иметь возможность использовать на борту ноутбук и свою платку с акселерометром. Сегодня любой владелец
планшета или смартфона может такой эксперимент провести самостоятельно, поскольку
акселерометры имеются почти во всех устройствах. Вот тут-то я и сделал для себя первое "открытие"

Читать дальше →
Total votes 31: ↑24 and ↓7 +17
Comments 12

Оптимизация портфеля ценных бумаг средствами Python

Reading time 12 min
Views 25K

Введение


На финансовом рынке обращается, как правило, несколько типов ценных бумаг: государственные ценные бумаги, муниципальные облигации, корпоративные акции и т.п.

Если у участника рынка есть свободные деньги, то их можно отнести в банк и получать проценты или купить на них ценные бумаги и получать дополнительный доход. Но в какой банк отнести? Какие ценные бумаги купить?

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

Программные средства для анализа портфелей ценных бумах должны работать с матрицами доходности и решать задачи нелинейного программирования с ограничениями в виде строгих и нестрогих неравенств. Символьное решение на Python некоторых типов задач нелинейного программирования мною уже рассматривалось в публикации [1]. Однако, применить предложенные в указанной публикации методы для анализа портфеля ценных бумаг нельзя из-за ограничений в виде строгих неравенств.

Целью настоящей публикации является разработка методов оптимизации портфелей ценных бумаг с использованием библиотеки scipy.optimize. Пришлось исследовать и применить при программировании такие мало известные возможности указанной библиотеки, как введение дополнительных ограничений в функцию цели [2].
Читать дальше →
Total votes 15: ↑10 and ↓5 +5
Comments 7

Бронебойные снаряды с прямоточным воздушно- реактивным двигателем

Reading time 7 min
Views 19K


Введение


В настоящее время в качестве бронебойных боеприпасов широкое применение получили бронебойные оперенные подкалиберные снаряды (БОПС), обладающие высокой проникающей способностью.

Это достигается за счет высокой начальной скорости боеприпаса (1650 – 1840 м/с) и малого поперечного сечения (d = 20-30 мм). Для компенсации силы сопротивления воздуха применяют придание боеприпасу реактивной тяги.

Прямоточный воздушно-реактивный двигатель (ПВРД), прост по конструкции, имеет высокий коэффициент полезного действия при больших числах Маха компактен, поскольку не требует наличие окислителя в составе топлива, так как использует кислород окружающей среды [1].
Читать дальше →
Total votes 44: ↑37 and ↓7 +30
Comments 13

Моделирование динамических систем: решение нелинейных уравнений

Reading time 8 min
Views 12K

Введение



Конечной целью математического моделирования в любой области знаний является получение количественных характеристик исследуемого объекта. Некоторые параметры пушки, стрельбу из которой мы моделировали в прошлый раз, были заданы в условии задачи: начальная скорость снаряда, его калибр и материал, из которого он изготовлен. Угол наклона ствола можно отнести к варьируемым параметрам: любое серьезное орудие допускает наводку, в том числе и в вертикальной плоскости.



На выходе мы получили траекторию полета снаряда, что дает нам ориентировочные представления о характеристиках орудия: при заданных параметрах мы получили дальность стрельбы чуть более 2,5 км и высоту подъема снаряда чуть выше 800 метров. Точнее мы сказать не можем, вернее можем, если с карандашиком по сетке определим координаты нужных точек на графике. Но это, как известно, не наш метод. Хорошо бы получить эти данные с точностью, обеспечиваемой используемыми нами инструментами и без ручного труда. Вот об этом мы сегодня и поговорим.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 11

“Восстание МашинLearning” или совмещаем хобби по Data Science и анализу спектров лампочек

Reading time 19 min
Views 9.8K
В завершающей статье цикла, посвящённого обучению Data Science с нуля, я делился планами совместить мое старое и новое хобби и разместить результат на Хабре. Поскольку прошлые статьи нашли живой отклик у читателей, я решил не откладывать это надолго.

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

Данная статья написана в стиле от новичка-новичкам, поэтому опытные читатели вряд ли, почерпнут для себя, что-то новое и если есть желание решить задачу классификации источников света по спектрам, то им есть смысл сразу взять данные из GitHub

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

Мы пройдем с вами путь от попытки понять где можно применить даже небольшие знания по ML (которые можно получить из базовых книг и курсов), до решения непосредственно самой задачи классификации и мыслей о том «что теперь со всем этим делать?!»

Милости прошу всех под кат.


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

Избавляемся от рутины RecyclerView.Adapter с помощью DataBinding

Reading time 5 min
Views 22K


RecyclerView — основной UI элемент практически любого приложения. Написание адаптеров и ViewHolder'ов зачастую слишком рутинная работа и содержит достаточно boilerplate кода. В этой статье я хочу показать как с использованием DataBinding и паттерна MVVM можно написать абстрактный адаптер и напрочь забыть про ViewHolder'ы, inflate, ручной биндинг и прочую рутину.

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 4

Применение преобразования Фурье для создания гитарного тюнера на Android. Часть 1

Reading time 5 min
Views 14K

В основе спектрального анализа звуковых данных лежит алгоритм, который носит название преобразование Фурье. При раскладывании исходного звукового сигнала на частотные составляющие, отдельные частоты называются гармониками. Основная гармоника определяет высоту звучания, а второстепенные гармоники определяют его тембр. Есть достаточно много мобильных приложений, которые используют преобразование Фурье для того, чтобы отобразить весь спектр частот (гармоник). Так же, есть мобильные приложения, которые служат для настройки гитар. Они работают по принципу: основная гармоника находится по самому высокому значению амплитуды в спектре. Такое утверждение не совсем верно, потому что основная гармоника определяется самой наименьшей из всех кратных этой гармонике, либо шагом между гармониками. Возникает необходимость найти способ, который позволит отобразить значение основной гармоники в спектре звукового сигнала.

В первой части статьи мы рассмотрим принцип работы дискретного преобразование Фурье, а также возможность записывать звуковые данные с Android устройства с помощью класса AudioRecord.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 5

LibGDX + Scene2d (программируем на Kotlin). Часть 2

Reading time 9 min
Views 8.3K
Всем привет. Сегодня я расскажу об атласе текстур, шкурках, пройдемся еще раз по работе с версткой. Далее интернационализация и в заключение пара тонкостей по работе с цветом. И в следующем уроке перейдем к модели игры и связыванию игровой логики и элементов UI.

Предыдущие части


Атлас текстур


Одним из важнейших параметров «комфортности» приложения является время загрузки. Узким звеном в этом плане является считывание с накопителя. Если мы используем везде вот такие конструкции
Image(Texture("backgrounds/main-screen-background.png"))
то мы создаем избыточную задержки. В данном случае текстура «backgrounds/main-screen-background.png» будет считана с накопителя в синхронном режиме. Это не всегда является злом. Как правило загрузка одной фоновой картинки не портит впечатления от работы с программой. Но если мы будет каждый элемент нашей сцены считывать таким образом, скорость и плавность приложения могут серьезно просесть.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 8

Советский HI-FI и его создатели: путешествие «Брига» «капитана» Лихницкого

Reading time 9 min
Views 49K
Этот пост является пилотным в цикле публикаций о культовой аппаратуре в советской аудиотехнике. Мы сравнительно давно обещали этот цикл, но как-то «не доходили руки». В серию статей войдут несколько УМЗЧ, виниловых проигрывателей, акустических систем высокой верности воспроизведения. Иными словами, писать буду про устройства, которые оставили след в истории СССР, а для многих стали символами эпохи. Я постараюсь не обойти стороной историю создания этих девайсов, а также некоторые значимые моменты в биографии их создателей.



Полагаю, будет справедливо первую публикацию посвятить усилителю «Бриг» и его создателям Анатолию Лихницкому и Алле Каляевой, как первопроходцам серийного HI-FI в СССР. Признаюсь, что не редко я иронизирую по поводу маргинальных взглядов Лихницкого на звук и некоторые аспекты схемотехники, о которых этот человек много писал в конце жизни, что никак не умаляет его заслуг как инженера и организатора работ по созданию первого советского HI-FI УМЗЧ. Следует также отметить существенный вклад в создание усилителя инженера Николая Слесарева и дизайнера Владимира Ратаева.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 76

Airbus Racer — вертолет, сочетающий в себе достоинства вертолета и самолета

Reading time 2 min
Views 13K
Вертолеты в сравнении с самолетами летают достаточно медленно, имея в качестве неоспоримого преимущества возможность посадки и взлета практически с любой поверхности. Airbus собирается совместить в своем новом проекте достоинства обоих решений. Новый Racer должен достигать скорости в районе 400 км/ч и оснащен тремя винтами: двумя вертикальными и одним горизонтальным.


Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 32

Очередные умные часы своими руками

Reading time 18 min
Views 89K


Вдохновившись некоторое время назад статьей «Умные часы своими руками за 1500р.», я тоже решил попробовать сделать подобный девайс.


Эта статья не позиционируется как руководство к действию или инструкция, скорее как указание на ключевые моменты, с которыми мне пришлось столкнуться. Быть может, кому-то она послужит источником вдохновения и полезной информации.


Подбор компонентов, разводка платы, пайка в суровых условиях, 3D-печатный корпус и JavaScript на часах — под катом. Welcome!

Total votes 145: ↑144 and ↓1 +143
Comments 214

Переделка кнопочного радио выключателя в сенсорный

Reading time 2 min
Views 20K


Давно мечтал дома установить сенсорный выключатель, мечта сбылась, когда мне подарили недорогой сенсорный выключатель FD Electronics. Выглядит красиво, работает отлично. Но это просто выключатель, а у меня умный дом на базе Z-Wave и конечно я захотел интегрировать его в свою систему.

У FD Electronics, Livolo и DeLumo есть радио выключатели работающие на частотах 433МГц и 868МГц соответственно, но интегрировать их в умный дом не получится. Эти выключатели работают только с пультами этих же производителей, управления с компьютера нет, обратной связи нет, т.е. если кто-то включит свет я об этом не узнаю.

Было принято решение скрестить ежа с ужом мой кнопочный радио выключатель Z-Wave.Me Dimmer с сенсорным выключателем FD Electronics. Изучив схемы обоих выключателей, я решил выкинуть силовую часть сенсорного выключателя и использовать только корпус и сенсорную панель, а от своего Z-Wave выключателя взять силовую и радио часть. Суть переделки заключается в замене механических кнопок на сенсорные, этот способ подходит к выключателю любой технологии.

Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 46

Сенсорный радио выключатель на батарейках. Livolo + Z-Uno

Reading time 3 min
Views 24K

Я полюбил сенсорные выключатели! Мне нравится их внешний вид, блестящее стекло, подсвечивающиеся кнопочки, смотрятся элегантно!
Т.к. моя квартира автоматизирована технологией Z-Wave, то и сенсорные выключатели должны поддерживать эту технологию. С переделкой кнопочного радио выключателя в сенсорный я справился в прошлый раз. Теперь мне нужен пульт на батарейках в виде сенсорного выключателя, который я смогу приклеить на двухсторонний скотч на кухне, чтобы дети доставали.
Сенсорные Z-Wave выключатели Vitrum
Если вы можете себе позволить выключатель за 20К ₽, обратите свое внимание на Z-Wave продукцию Vitrum

Если вы хотите свой уникальный сенсорный выключатель, да еще и не дороже 4К ₽, добро пожаловать под кат.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Comments 73

Открытый курс машинного обучения. Тема 5. Композиции: бэггинг, случайный лес

Reading time 28 min
Views 258K

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


UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.


Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).


Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Comments 31

Information

Rating
Does not participate
Location
Чебоксары, Чувашия, Россия
Date of birth
Registered
Activity