В современном цифровом мире микроконтроллерам часто требуется выполнять какие-то действия в физическом мире людей с помощью различных механических, оптических, акустических и других внешних устройств. Транзисторы призваны согласовать микроконтроллер с исполнительными устройствами. В статье рассмотрим применение биполярных транзисторов в ключевых режимах.
Андрей Николаев @Dremkin
Пользователь
Разрабы работают медленно и дорого — и люди считают нас лентяями. Просто в разработке всё сложно
7 мин
75K— Люди не из индустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?
Вместе с парнями из подкаста «Мы обречены» решили с этим разобраться и запустили совместную рубрику, где будем объяснять, почему в разработке всё так сложно. А для тех, кто любит читать, а не слушать, парни написали эту статью.
+147
Договорные модели разработки ПО
5 мин
10KТуториал
Как юристы в сфере ИТ, мы готовим договоры на создание ПО как для разработчиков, так и для заказчиков. В договоре необходимо учесть особенности различных моделей разработки ПО, выделить возникающие в связи с этим риски клиента и постараться их нивелировать.
Сегодня мы рассмотрим наиболее популярные условия заказной разработки ПО с точки зрения распределения рисков между заказчиком и исполнителем и дадим рекомендации по их снижению на уровне договора.
Любая из указанных ниже моделей разработки ПО может быть реализована на базе нашего рамочного договора с приложениями в соответствующей модификации.
Условия применения. Применяется в стандартных проектах с понятными решениями и требованиями, поддающимися детализации. Требования к результату выносятся в отдельное техническое задание. Фиксируются сроки выполнения работ и их стоимость.
Преимущества для заказчика. Понятный бюджет при определенных требованиях к результату.
Риски заказчика. Сложность изменения требований к продукту в процессе его разработки. В результате такие условия плохо подходят к разработке нестандартного ПО и сложных систем.
Сегодня мы рассмотрим наиболее популярные условия заказной разработки ПО с точки зрения распределения рисков между заказчиком и исполнителем и дадим рекомендации по их снижению на уровне договора.
Любая из указанных ниже моделей разработки ПО может быть реализована на базе нашего рамочного договора с приложениями в соответствующей модификации.
1. Договор с фиксированной ценой (Fixed Price)
Условия применения. Применяется в стандартных проектах с понятными решениями и требованиями, поддающимися детализации. Требования к результату выносятся в отдельное техническое задание. Фиксируются сроки выполнения работ и их стоимость.
Преимущества для заказчика. Понятный бюджет при определенных требованиях к результату.
Риски заказчика. Сложность изменения требований к продукту в процессе его разработки. В результате такие условия плохо подходят к разработке нестандартного ПО и сложных систем.
+10
Типичные взаимные блокировки в MS SQL и способы борьбы с ними
11 мин
106KЧаще всего deadlock описывают примерно следующим образом:
Процесс 1 блокирует ресурс А.
Процесс 2 блокирует ресурс Б.
Процесс 1 пытается получить доступ к ресурсу Б.
Процесс 2 пытается получить доступ к ресурсу А.
В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.
Процесс 1 блокирует ресурс А.
Процесс 2 блокирует ресурс Б.
Процесс 1 пытается получить доступ к ресурсу Б.
Процесс 2 пытается получить доступ к ресурсу А.
В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.
+20
DDoS атака в обход Qrator. Как защититься?
4 мин
26KЕсть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
+33
Мой опыт построения промышленной сети 1-Wire
4 мин
47KПредыстория
Как и многие хабрапользователи, обладая некоторыми навыками и неплохой фантазией, как-то наткнулся на сайт, тогда еще он висел на народе, и посвящался сопряжению самодельных устройств с ПК. Именно тогда зародилось семя безудержного интереса, чтобы что-то сделать и управлять этим с компьютера. Тогда, конечно, все начиналось с lpt порта принтера и постепенно перерастало на com порт и в конечном на usb. Все бы ничего, пока не наткнулся на сайт, посвящений созданию системы умного дома. Тогда я понял, что мне действительно интересно. Опустим долгий и интересный рассказ и перейдем прямо к теме.Пишу данную статью в качестве любителя, не профи, и надеюсь она поможет вам создать свою сеть с нуля, или почерпнуть полезный опыт для своей сети.В статья я хочу описать создание своей сети 1wire с нуля, включая все этапы построения и полезные советы.- Проектирование, печать, травление, лужения и пайка печатной платы;
- Монтаж промышленной шины 1wire;
- Программные и аппаратные средства управления и мониторинга.
+16
Квадрокоптер DJI Phantom FC40 — мини-разбоксинг и первый полёт
4 мин
49KПриветствую,
С летающими аппаратами, типа квадрокоптеры и его собратьями, я знаком очень поверхностно. Видел в пару фильмов и рекламных клипах, а в живую только на картинках и особого желания приобрести что-то подобное не было.
Но как это часто бывает, определённые события меняют ход дальнейших действий. Вот так случилось и у меня. Я увидел видео «каспаров и полёт валькирии» :) и решил «хочу».
Почитав разные статьи/форумы про квадрокоптеры и посмотрев десятки видео с полётами и падениями, мой выбор сузился до моделей типа ready-to-fly. Я не хотел собирать дрона сам, не хотел ничего паять и не хотел после сборки обрабатывать напильником, что бы он полетел. Я хотел достать товар коробки, зарядиться и улететь.
Дальнейшее штудирование темы остановило мой выбор на фирме DJI. В ассортименте были навороченные модели с много-мегапиксельными камерами, большим радиусом полёта, долгоиграющими аккумуляторами и прочими плюшками. Но цена отталкивала. Запустить больше 1000 евро в стратосферу — нет, спасибо. Для первой «этажерки» это через чур кучеряво и я снизил ценовую планку.
В итоге мной была выбрана модель DJI Phantom FC40.
С летающими аппаратами, типа квадрокоптеры и его собратьями, я знаком очень поверхностно. Видел в пару фильмов и рекламных клипах, а в живую только на картинках и особого желания приобрести что-то подобное не было.
Но как это часто бывает, определённые события меняют ход дальнейших действий. Вот так случилось и у меня. Я увидел видео «каспаров и полёт валькирии» :) и решил «хочу».
Почитав разные статьи/форумы про квадрокоптеры и посмотрев десятки видео с полётами и падениями, мой выбор сузился до моделей типа ready-to-fly. Я не хотел собирать дрона сам, не хотел ничего паять и не хотел после сборки обрабатывать напильником, что бы он полетел. Я хотел достать товар коробки, зарядиться и улететь.
Дальнейшее штудирование темы остановило мой выбор на фирме DJI. В ассортименте были навороченные модели с много-мегапиксельными камерами, большим радиусом полёта, долгоиграющими аккумуляторами и прочими плюшками. Но цена отталкивала. Запустить больше 1000 евро в стратосферу — нет, спасибо. Для первой «этажерки» это через чур кучеряво и я снизил ценовую планку.
В итоге мной была выбрана модель DJI Phantom FC40.
+19
Исчерпывающее руководство по составлению почтовых рассылок
13 мин
176KПеревод
Несмотря на то, что большая часть общения онлайн перешла в социальные сети, почтовые рассылки по-прежнему остаются важной частью любой маркетинговой кампании.
+27
Заставьте сайт работать на сенсорных устройствах
8 мин
68KСенсорные экраны на мобильных телефонах, планшетах, ноутбуках и настольных компьютерах открыли веб-разработчикам целый ряд новых взаимодействий. В переведенном руководстве Патрик Локи рассматривает основы работы с сенсорными событиями в JavaScript. Все рассматриваемые далее примеры есть в архиве.
+26
Собираем лазерный проектор из доступных деталей
7 мин
88KUPD: Добавлены файлы платы с ЦАП на GitHub
Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.
Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.
Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
- Гальванометры и драйверы к ним для отклонения луча лазера по осям X/Y
- 532нм 70mW лазерный модуль с питанием от 5В Dragon Lasers SGLM70
- Texas Instruments Stellaris Launchpad
- Самодельная плата с ЦАП AD7249BRZ
- Блок питания
+34
Наш контроллер для умного дома
6 мин
156KUPD: мы сняли работу Wiren Board Smart Home на видео
Краткое содержание:
На базе нашей платформы Wiren Board (компактный индустриальный компьютер с Linux и разными интерфейсами) мы сделали навороченный контроллер для домашней автоматизации Wiren Board Smart Home (ARM9 64MB RAM, GSM/GPRS, Ethernet, Wi-Fi, USB, 2xRS-485/Modbus, CAN, 2 реле, ASK/FSK радиомодуль 433MHz, NRF24L01+ и т.д.), к которому можно подключить кучу всяческих проводных и беспроводных исполнительных устройств и датчиков от разных систем и производителей. Устройство готово и протестировано. На устройства из первой большой партии мы открываем заказ с доставкой до майских праздников по специальной цене.
+81
Начинаем изучать Cortex-M на примере STM32, часть 2
21 мин
166KТуториал
Данная статья является продолжением цикла по программированию микроконтроллеров на базе ядра Cortex-M.
Первую статью можно прочитать здесь:
Начинаем изучать Cortex-M на примере STM32
Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.
Мне очень хочется, чтобы программисты использующие стандартные библиотеки, шаблоны, примеры и т.д. понимали как все это работает. А при отсутствии этих самых библиотек и примеров могли самостоятельно решить свою задачу.
Основной акцент сделан на изучение документации на ядро Cortex-M и документации на конкретный контроллер.
На этот раз речь пойдет про прерывания, а так же будут затронуты некоторые вопросы архитектуры памяти и структуры прошивки МК.
Первую статью можно прочитать здесь:
Начинаем изучать Cortex-M на примере STM32
Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.
Мне очень хочется, чтобы программисты использующие стандартные библиотеки, шаблоны, примеры и т.д. понимали как все это работает. А при отсутствии этих самых библиотек и примеров могли самостоятельно решить свою задачу.
Основной акцент сделан на изучение документации на ядро Cortex-M и документации на конкретный контроллер.
На этот раз речь пойдет про прерывания, а так же будут затронуты некоторые вопросы архитектуры памяти и структуры прошивки МК.
+27
Уменьшаем количество проводов в Arduino — I2C LCD экран и RTC часы по двум проводам
6 мин
228KСовсем недавно познакомился с Ардуино, поэтому многим мои примеры покажутся простыми.
Однако таким же новичкам, как я, данная информация будет полезна и сэкономит массу времени.
I2C — стандарт общения устройств по 2м проводам, при этом количество устройств, которое висит параллельно на этих проводах может быть очень большим. У каждого устройства есть свой адрес, по которому происходит обращение к устройству. Адресацию можно менять, если на устройстве есть перемычки, которыми можно установить дополнительное смещение относительно базового адреса, жестко прописанного в устройстве.
Это в двух словах.
Начал я все с того, что купил 16х2 символьный LCD дисплей на Ибее. Подключив стандартно — понял что это не то, что нужно. Масса проводов — занимает кучу ножек, хаос и беспорядок.
Погуглил, понял что есть дисплеи с интерфейсами, упрощающие подключение. погуглил еще, нашел переходник на I2C для моего LCD. Месяц ожидания, ура-ура, подключил.
Выглядит гораздо интереснее!
Однако таким же новичкам, как я, данная информация будет полезна и сэкономит массу времени.
I2C — стандарт общения устройств по 2м проводам, при этом количество устройств, которое висит параллельно на этих проводах может быть очень большим. У каждого устройства есть свой адрес, по которому происходит обращение к устройству. Адресацию можно менять, если на устройстве есть перемычки, которыми можно установить дополнительное смещение относительно базового адреса, жестко прописанного в устройстве.
Это в двух словах.
Начал я все с того, что купил 16х2 символьный LCD дисплей на Ибее. Подключив стандартно — понял что это не то, что нужно. Масса проводов — занимает кучу ножек, хаос и беспорядок.
Погуглил, понял что есть дисплеи с интерфейсами, упрощающие подключение. погуглил еще, нашел переходник на I2C для моего LCD. Месяц ожидания, ура-ура, подключил.
Выглядит гораздо интереснее!
+51
Гексапод Б.У.Н.Т
3 мин
81KНасмотревшись на youtube видео про гексаподов (особенно впечатлил PhantomX), решил попробовать свои силы в роботостроении. Забегая вперёд — всё получилось и вот результат:
Всех интересующихся прошу под кат, там вкратце описана история создания и трудности с которыми пришлось столкнуться, а так же видео работы гексапода. Ни каких графиков, схем и кода, только лирика.
Всех интересующихся прошу под кат, там вкратце описана история создания и трудности с которыми пришлось столкнуться, а так же видео работы гексапода. Ни каких графиков, схем и кода, только лирика.
+73
Как создавать и зарабатывать на SaaS (Часть 2 / бесценный опыт российских ISV)
14 мин
23KТуториал
Recovery Mode
В первой части статьи я рассуждал о способах оптимизации стоимости/функциональности при создании SaaS (Онлайн) сервисов. Мой подход к проблеме был скорей стратегический (куда бежать, что отрезать), но не технологический, да и надо было с чего-то начать. Что из этого получилось можно прочитать тут.
Сегодня, как я и обещал, у меня гости, которые открыто делятся своими рецептами создания успешных SaaS историй. Отмечу, что большинство приглашенных компании уже состоялись в плане бизнеса и лидируют в свои сегментах автоматизации (гуру). Пришли и проекты, которые только начинают завоевывать сердца пользователей семимильными шагами (новички). В гости, сегодня, заглянули: amoCRM, МойСлад, Asoft CRM, Сopiny, Do.Docs, Zingaya, SMEOn и я задал всем одни те же вопросы, которые помогут тиражировать опыт коллег и передать его новым командам. По-моему, получился интересный микс мнений, который поможет правильно подойти к созданию SaaS всем тем, кто решит или уже решил играть на этом поле.
Собственно, вопросы:
1. Как возникла идея создания сервиса?
2. Инструментарий разработки и почему именно этот?
3. Целевая аудитория сервиса?
4. Экономия при создании — методы, подходы, технологии.
5. Стратегия продвижения.
6. Friends/family/fools — откуда были привлечены средства на начало разработки?
7. Ошибки проекта и как справлялись.
8. Особое мнение (бонус по делу).
+8
10+ полезных jQuery сниппетов на каждый день
5 мин
86KТуториал
Перевод
Спустя годы библиотека jQuery стала неотъемлемой частью в работе каждого web-разработчика. Ведь она простая в использовании, быстрая и имеет очень широкие возможности. В этой статье я собрал список из более чем десяти сниппетов, которые вы можете свободно брать для использования. Их очень легко адаптировать под нужды ваших собственных проектов.
+24
Делаем вебсокеты на PHP с нуля
18 мин
308KНекоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.
Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.
Так я решил написать необходимый для меня функционал с нуля.
Получившийся код и ссылка на демонстрационный чат в конце статьи.
Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.
Так я решил написать необходимый для меня функционал с нуля.
Получившийся код и ссылка на демонстрационный чат в конце статьи.
+64
Трюки с CSS-анимациями: мгновенные изменения, отрицательные задержки, анимация transform-origin и другое
14 мин
221KПеревод
Применяя CSS-анимации в повседневной работе, я постепенно выработал привычку экспериментировать с ними в свободное время. Постоянно пытаясь реализовать очередную интересную задумку с использованием как можно меньшего числа элементов HTML, я обнаружил немало способов сделать с помощью CSS довольно неочевидные вещи. В этой статье я хочу поделиться некоторыми из них.
Обычно анимации используются для того, чтобы плавно менять свойства элементов со временем. Однако изменения могут также быть практически мгновенными. Для этого надо задать два ключевых кадра с очень маленьким интервалом, например в 0.001%:
Вот как я использовал этот приём для имитации мигающей неоновой вывески с помощью прозрачности и свойства
Быстрое изменение состояния посреди анимации
Обычно анимации используются для того, чтобы плавно менять свойства элементов со временем. Однако изменения могут также быть практически мгновенными. Для этого надо задать два ключевых кадра с очень маленьким интервалом, например в 0.001%:
@keyframes toggleOpacity {
50% { opacity: 1; } /* Turn off */
50.001% { opacity: 0.4; }
/* Keep off state for a short period */
52.999% { opacity: 0.4; } /* Turn back on */
53% { opacity: 1; }
}
Вот как я использовал этот приём для имитации мигающей неоновой вывески с помощью прозрачности и свойства
text-shadow
:+209
Очередной mp3-box из mpd и raspberry
5 мин
37KЗахотелось мне собрать сетевой аудиоплеер. Не «медиа», а исключительно под музыку. Раньше этим занимался домашний сервер (foobar2000 + всякие удаленные управления для него), но наконец-то созрел вынести его поближе к точке входа сетевых проводов в квартиру, потому возникла вакансия. А десктоп или ноут для этого использовать накладно в плане потребления ресурсов. Я не требователен, музыка у меня играет просто для создания приятного фона, а не для эстетического наслаждения, потому каких-то высоких требований к аудиотракту у меня не было, лишь бы не шипел сильно.
ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор
ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор
+14
Создаём сетевую звуковую карту с преферансом и поэтессами
6 мин
113KВдохновленный топиками раз и два, решил соорудить нечто похожее.
В наличии:
— Один усилитель с колонками
— Один стационарный компьютер
— Один ноутбук
— Желание слушать интернет радио независимо от двух предыдущих пунктов и перетыканию проводов
В результате родился план собрать «audio card over ethernet». Исследовав вопрос совместимости оборудования, я выбрал роутер TP-link MR3020 и USB аудио-карточку Creative SB Play.
Что из этого получилось:
О том, как это получить, добро пожаловать под кат.
В наличии:
— Один усилитель с колонками
— Один стационарный компьютер
— Один ноутбук
— Желание слушать интернет радио независимо от двух предыдущих пунктов и перетыканию проводов
В результате родился план собрать «audio card over ethernet». Исследовав вопрос совместимости оборудования, я выбрал роутер TP-link MR3020 и USB аудио-карточку Creative SB Play.
Что из этого получилось:
О том, как это получить, добро пожаловать под кат.
+115
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность