Pull to refresh
56
0.8
Глеб Ницман @gleb_l

Инженер

Send message

Акселерометр в системе ПИД-регулирования круиз-контроля автомобиля

Reading time5 min
Views6.1K
Я эксплуатирую в общем-то довольно современный, напичканный электроникой американский автомобиль. Из того, что управляет движением, в нем есть электронная система стабилизации, ПБС с эмуляцией блокировки дифференциала, естественно АБС, и конечно же, круиз-контроль. Последний еще не адаптивный (то есть без функции поддержания дистанции до впереди идущего авто). В машине — электронная педаль газа (это принципиальный момент для данной статьи — позже объясню, почему).

Всем, кто хочет знать, чем не угодил круиз-контроль, и что предлагается улучшить — welcome под кат.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments70

Yet Another Производственный Календарь на MS SQL. ПО->ША->ГО->ВО

Reading time5 min
Views8.1K
Написать свое решение меня подтолкнул пост на Хабре на аналогичную тему, в котором эта задача была решена «в лоб» — простым перечислением дней и флагом рабочий/выходной за весь диапазон жизнедеятельности системы, в которой этот календарь используется. В аналогичной ситуации я решил поступить немного хитрее, что в итоге оказывается и гораздо проще в поддержке. Если интересно, как это было сделано — welcome под кат:
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments0

XSL-трансформация на MS SQL без CLR

Reading time6 min
Views3.5K
Иногда очень удобно отправлять письма прямо изнутри БД, например, оповещения об успешности/неуспешности каких-то действий, информацию о состоянии системы, логи действий пользователей итд. Это может показаться дикостью, чудовищным велосипедом, кривым-косым решением, итд — но просто представьте, что это так.

Содержимое письма при таком способе приходится формировать plain-текстом, а рассылать почту либо через xp_sendmail, либо (более гибко) через почтовый COM-объект (например, CDO.Message), инстанциируя и управляя им через SQL-обертки для работы с OLE sp_OAxxxx.

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

+-----------+--------------+--------------+
| АБСОЛЮТНО | НЕ ВИДИТ ПРО | БЛЕМ В ТАКОМ |
| ОФОРМЛЕНИ | И СЛУЖЕБНОГО | ВЫВОДА <EOT> |
+-----------+--------------+--------------+

Что делать, если подобный формат начинает напрягать, а регистрировать на сервере свои компоненты, или «выныривать» из уровня БД на уровень приложения для отправки чего-то более красивого ну очень не хочется:
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments21

Переход через NULL

Reading time2 min
Views11K
Многие знают и используют встроенную функцию ISNULL(X, Y), которая заменяет первый аргумент на второй в случае, если он (первый) NULL. Менее употребима обратная встроенная функция NULLIF(X, Y), которая возвращает NULL, если первый аргумент равен второму. Комбинация этих двух функций позволяет избежать использования конструкций IF-ELSE или CASE-WHEN, что делает код компактнее. Если интересно посмотреть пару примеров — добро пожаловать под кат.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments16

«1-wire» для кнопок с индикацией

Reading time2 min
Views51K
Задумал я как-то в одной из конструкций применить вот такую кнопку с индикацией состояния:

image

Внутри — пара замыкающих или переключающих контактов и светодиод (опционально — уже с гасящим резистором на выбор для питания от 5, 12, или 24 В). Все бы с ней хорошо, но разместить кнопку планировал на приборной панели автомобиля, а управляющий блок — в моторном отсеке. А тянуть отдельные провода для контакта и для индикации уж очень не хотелось.

Как это решить, и что для этого нужно — под катом
Читать дальше →
Total votes 28: ↑19 and ↓9+10
Comments44

Интеллектуальное реле управления вентилятором охлаждения двигателя

Reading time8 min
Views95K
Прочитав пост mrsom о пересадке микроконтроллерной начинки в ретротахометр от Жигулей, решил рассказать об одной своей давней микроконтроллерной разработке (2006 год), сделанной для плавного управления электровентилятором охлаждения двигателей переднеприводных моделей ВАЗа.

image

Надо сказать, что на тот момент уже существовало немало разнообразных решений — от чисто аналоговых до микроконтроллерных, с той или иной степенью совершенства выполняющих нужную функцию. Одним из них был контроллер вентилятора компании Силычъ (то, что сейчас выглядит вот так, известной среди интересующихся своим автоматическим регулятором опережения зажигания, программно детектирующим детонационные стуки двигателя. Я некоторое время следил за форумом изготовителя этих устройств, пытаясь определить, чтов устройстве получилось хорошо, а что — не очень, и в результате решил разработать свое.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments15

Постраничная выборка данных — альтернативный взгляд на давно известное

Reading time8 min
Views15K
Проблема постраничной выборки информации из БД стара, как сама БД, и соответственно, обсуждена не одну тысячу раз. Нет, пожалуй, ни одной клиент-серверной системы, в которой эта проблема так или иначе не была бы адресована и решена. Сегодня я хочу рассказать об одном немного нестандартном способе взаимодействия клиентского слоя и MS SQL-бакенда при организации постраничной выборки в типичном публичном веб-приложении.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments9

Идея и реализация простого средства контроля расхода энергии аккумуляторов

Reading time3 min
Views29K
Наверное первое, о чем задумывается владелец после покупки троллингового мотора к лодке, или, скажем, установки электрокита на велосипед — это то, насколько далеко можно безопасно уплыть/уехать без необходимости возвращаться обратно на веслах или педалях. Подобная же участь не обошла и меня, поэтому когда несколько лет назад у меня появился электрический лодочный мотор, сразу же возникла идея реализовать контроль расхода ампер-часов из питающей мотор батареи простым, но при этом более-менее точным способом.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments11

MS SQL: генерация псевдослучайных данных с использованием newID(). Возможности и подводные камни

Reading time5 min
Views44K
Известно, что встроенная функция newID() широко используется разработчиками не только по прямому назначению — то есть для генерации уникальных первичных ключей, но и в качестве средства для генерации массивов псевдослучайных данных.
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments7

Information

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