Из своего опыта скажу следующее:
1. Тесты контроллеров, как правило, не окупают себя — они пишутся дольше всего и наиболее чувствительны к изменением тестируемого кода. Лично по мне — в рельсах лучше максимально отказаться от тестов контроллеров (оставить только там где это необходимо), а писать интеграционные тесты — т.е. именно слать запросы get, put, post, delete и т.д. на нужные адреса, либо кликать по ссылкам.
Вы же не тестируете каждую вьюху? Хотя такая возможность тоже есть.
2. Лучше всё же shared examples. Решается просто — весь общий код пишется, собственно, в него, а нужные переменные передаются через let:
it_behaves_like "protected controller" do
let(:method) { 'hello' }
end
По мне, основное и главное свойство тестов (помимо того что они тестируют нужный функционал) — это их читаемость.
Непонятные тесты, которые дают 100% покрытия — не тот результат, к которому бы я стремился. Понятные читаемые тесты, тестирующие большинство ситуаций + самые критичные места — это моя цель.
Я, конечно, не в курсе какие микросхемы стоят у MrYuran, но с навигацией по докам я могу помочь.
Однонаправленные изоляторы:
Выбираете подходящую микросхему, например Si8631BB-B-IS — изолятор на 2.5 кВ, два прямых и три обратных канала, скорость до 150 Мбит/сек, низкий уровень на всех выходах по умолчанию и т.д.
Далее переходите сюда и на вкладке Documentation ищете подходящую pdf-ку
Несколько раз покупал ТУТ (один раз) и ТУТ (3 раза) «белые» 8-филаментовые.
Из них три вообще не мерцают (сфотографировал в сравнении с 75-ваттной ЛН)
и
а одна мерцает
Причем самое неприятное, что у того же самого поставщика (по второй ссылке), и в такой же коробке.
Продавец без разговоров Full Refund, но все равно неприятно.
Хотелось бы предупредить тех, кто собирается использовать этот фильтр.
На офф. сайте есть более свежая версия — www.x-io.co.uk/open-source-imu-and-ahrs-algorithms — в которой, судя по всему, есть ошибка в формуле шага градиентного спуска (источник).
Ээх, велосипеды.
pixi.js возьмите, там и 20 тысяч спрайтов спокойно будут тянуться :) www.goodboydigital.com/pixijs/bunnymark/ — у меня фпс начинает всаживаться (с 60 до 57 фпс, но все же) на где-то 30к, насколько помню, меньше 25 кадров в секунду — это 50к зайцев.
UnitPay. Думаю, что unitpay это представитель этого агрегатора.
Опробовано много — только эти порадовали. Комиссии небольшие, есть возможность переложить их на платящего :)
Работают с физиками.
Хорошая документация и тесты для проверки работы системы с вашей стороны.
Внесу свои 5 копеек:
В программе Naza Assistant можно включить два дополнительных режима полета IOC (интелектуальные режимы) — Course Lock и Home Lock. Их переключение назначается на тумблер S2 (Off-CL-HL). Упрощенно эти режимы означают следующее:
Course Lock — при включении коптер записывает направление «вперед» и, в дальнейшем, при использовании данного режима управление будет работать по этому запомненному напрвлению носа коптера.
Home Lock — при включении коптер таке записывает координаты точки взлета (Home) и при активации этого режима в какую бы сторону не был направлен нос коптера при нажатии правого стика на себя коптер будет лететь на вас, от себя — от вас. Полезно если потеряли ориентацию коптера в пространстве.
Еще немного добавлю про безопасность — очень рекомендую для начала поставить защиту пропеллеров. Это поможет сберечь как пропы, так и разнообразную собственность и части тела в случае нештатной ситуации. Вес защита добавит небольшой (около 70 грамм ) и на времени полета скажется не сильно. Правда с защитой фантик будет более чувствителен к ветру. Так же стоит помнить о том, что не следует летать над людьми — всякое может произойти и падающий сверху 1кг пластика и электроники не добавит приятных ощущений наблюдателям.
И напоследок позволю себе не согласиться насчет FC40. Да, это первый фантик, но с обновленным полетным контроллером Naza-M V2 и управлением на частоте 5,8ГГц. Соответственно можно использовать любую камеру с Wi-Fi на борту без опасений внезапного улета фантика в сторону исторической родины.
Меньшая батарея FC40 компенсируется ее существенно меньшей стоимостью и распространенностью в хоббийных магазинах, так как там стандартный разъем XT-60. Во втором фантике батарея проприетарная и стоит весьма недешево. Также есть возможности установки в первый фантик двух батарей (как снаружи корпуса на подвесах, так и внутри корпуса с минимальными переделками) что дает около 15 минут полета при полной загрузке. Основной минус FC40 это отсутствие телеметрии в штатном варианте и дальность дейстивя Wi-Fi камеры. С последним народ борется путем использования Wi-Fi экстендеров — до 300-350 метров удается поднять дальность.
Собственно я сам летаю сейчас на FC40. Правда модернизирован он в хлам: установлен подвес Tarot T2-D, камера GoPro Hero 3+ BE, видеотрансмиттер 500mW на 2.4ГГц, телеметрия DJI iOSD mini, приемник и монитор 7". Батарею пользую 2700mAH. На подходе апгрейд аппаратуры управления — дальность видеолинка сейчас до 1км, а вот управление я терял на 400 метрах. Благо failsafe отработал как по учебнику.
Да ну? Как раз это в последнюю очередь надо. Умный дом должен начинаться с умного сортира:
1) автоматическая вентиляция
2) Защита от протечек и перекрытие воды когда квартира ставится на охрану.
3) слежение за температурой стояки и подключение бакового нагревателя автоматом
4) логи температуры воды, для озолупливания коммунальщиков.
5) автоматический ароматизатор/освежитель
А также со входной двери:
1) автоответчик на домофон и вынос домофона в телефон (через сотовый мост) или на комп.
2) видеоглазок пишущий всех кто шарится возле двери и сливает это на сервер.
3) кодовый замок (вообще шик такую экзотику ни один домушник не вскроет)
4) трансляция прогноза погоды и обстановки за бортом в прихожую, чтобы сразу по погоде одеться.
5) трансляция состояния всех датчиков а также токовых потребителей на входную группу, чтобы с первого взгляда оценить все ли выключено, не забыт ли где то утюг и тыды.
Освещение в последнюю очередь идет:
1) аварийное освещение. Пропало питание — зажигаются светодиодные минисветильники от батарей и то только в темное время суток.
2) дистанционное управление светом, в идеале голосовое.
Вот это все реально облегчает и упрощает жизнь, а главное легко реализуемо в обычной квартире без тотального дестроя всего и вся.
Интересно было бы взглянуть внутрь железки, посмотреть, что там за радио-модуль установлен. 5 мВт на 433 МГц с дешёвым китайским передатчиком (который АМ использует) пробивает 10 этажей (с крыши до первого этажа леснечной площадки), а при наличии прямой видимости бьёт примерно на 1 км. В качестве антенны кусок провода ~16см.
Я правильно понимаю, что API не имеет какой-либо авторизации? Т.е. вставив сюда несколько картинок с URL 192.168.0.168/api.htm?ch=X&cmd=2 где X принадлежит [0,31], у владельцы этих устройств, не сменивших IP и открывших статью, включится весь свет? :)
Поэтому в самом начале функции run() можно создать анонимную функцию и положить ее в список defer
После этого делать просто:
1. Тесты контроллеров, как правило, не окупают себя — они пишутся дольше всего и наиболее чувствительны к изменением тестируемого кода. Лично по мне — в рельсах лучше максимально отказаться от тестов контроллеров (оставить только там где это необходимо), а писать интеграционные тесты — т.е. именно слать запросы get, put, post, delete и т.д. на нужные адреса, либо кликать по ссылкам.
Вы же не тестируете каждую вьюху? Хотя такая возможность тоже есть.
2. Лучше всё же shared examples. Решается просто — весь общий код пишется, собственно, в него, а нужные переменные передаются через let:
По мне, основное и главное свойство тестов (помимо того что они тестируют нужный функционал) — это их читаемость.
Непонятные тесты, которые дают 100% покрытия — не тот результат, к которому бы я стремился. Понятные читаемые тесты, тестирующие большинство ситуаций + самые критичные места — это моя цель.
Однонаправленные изоляторы:
Выбираете подходящую микросхему, например Si8631BB-B-IS — изолятор на 2.5 кВ, два прямых и три обратных канала, скорость до 150 Мбит/сек, низкий уровень на всех выходах по умолчанию и т.д.
Далее переходите сюда и на вкладке Documentation ищете подходящую pdf-ку
Даташит тут
Выбираете какой нравится и кликаете здесь на подходящую pdf-ку
Даташит на двухканальные здесь, на четырехканальные здесь
Из них три вообще не мерцают (сфотографировал в сравнении с 75-ваттной ЛН)
и
а одна мерцает
Причем самое неприятное, что у того же самого поставщика (по второй ссылке), и в такой же коробке.
Продавец без разговоров Full Refund, но все равно неприятно.
DestroyWindowsSpying: http://rutracker.org/forum/viewtopic.php?t=5054236
DoNotSpy10: http://pxc-coding.com/portfolio/donotspy10/
Novicorp Remove Windows 10 Spying: http://wintoflash.com/download/en/
Windows 10 Privacy Fixer: https://wiiare.in/windows-10-privacy-fixer/
Windows 10 Tracking Disable Tool: https://github.com/10se1ucgo/DisableWinTracking
И, скорее всего, это ещё не всё. Правда, большинство не имеет открытого исходного кода.
На офф. сайте есть более свежая версия — www.x-io.co.uk/open-source-imu-and-ahrs-algorithms — в которой, судя по всему, есть ошибка в формуле шага градиентного спуска (источник).
s0 = -_2q2 * (2.0f * q1q3 — _2q0q2 — ax) + _2q1 * (2.0f * q0q1 + _2q2q3 — ay) — _2bz * q2 * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (-_2bx * q3 + _2bz * q1) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + _2bx * q2 * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);
s1 = _2q3 * (2.0f * q1q3 — _2q0q2 — ax) + _2q0 * (2.0f * q0q1 + _2q2q3 — ay) — 4.0f * q1 * (1 — 2.0f * q1q1 — 2.0f * q2q2 — az) + _2bz * q3 * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (_2bx * q2 + _2bz * q0) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + (_2bx * q3 — _4bz * q1) * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);
s2 = -_2q0 * (2.0f * q1q3 — _2q0q2 — ax) + _2q3 * (2.0f * q0q1 + _2q2q3 — ay) — 4.0f * q2 * (1 — 2.0f * q1q1 — 2.0f * q2q2 — az) + (-_4bx * q2 — _2bz * q0) * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (_2bx * q1 + _2bz * q3) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + (_2bx * q0 — _4bz * q2) * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);
s3 = _2q1 * (2.0f * q1q3 — _2q0q2 — ax) + _2q2 * (2.0f * q0q1 + _2q2q3 — ay) + (-_4bx * q3 + _2bz * q1) * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (-_2bx * q0 + _2bz * q2) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + _2bx * q1 * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);
s1= _2q3*(2*(q1q3 — q0q2) — ax) + _2q0*(2*(q0q1 + q2q3) — ay) + -4*q1*(2*(0.5 — q1q1 — q2q2) — az) + _4bz*q3*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx) + (_4bx*q2+_4bz*q0)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my) + (_4bx*q3-_8bz*q1)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);
s2= -_2q0*(2*(q1q3 — q0q2) — ax) + _2q3*(2*(q0q1 + q2q3) — ay) + (-4*q2)*(2*(0.5 — q1q1 — q2q2) — az) + (-_8bx*q2-_4bz*q0)*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx)+(_4bx*q1+_4bz*q3)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my)+(_4bx*q0-_8bz*q2)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);
s3= _2q1*(2*(q1q3 — q0q2) — ax) + _2q2*(2*(q0q1 + q2q3) — ay)+(-_8bx*q3+_4bz*q1)*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx)+(-_4bx*q0+_4bz*q2)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my)+(_4bx*q1)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);
pixi.js возьмите, там и 20 тысяч спрайтов спокойно будут тянуться :)
www.goodboydigital.com/pixijs/bunnymark/ — у меня фпс начинает всаживаться (с 60 до 57 фпс, но все же) на где-то 30к, насколько помню, меньше 25 кадров в секунду — это 50к зайцев.
Опробовано много — только эти порадовали. Комиссии небольшие, есть возможность переложить их на платящего :)
Работают с физиками.
Хорошая документация и тесты для проверки работы системы с вашей стороны.
В программе Naza Assistant можно включить два дополнительных режима полета IOC (интелектуальные режимы) — Course Lock и Home Lock. Их переключение назначается на тумблер S2 (Off-CL-HL). Упрощенно эти режимы означают следующее:
Course Lock — при включении коптер записывает направление «вперед» и, в дальнейшем, при использовании данного режима управление будет работать по этому запомненному напрвлению носа коптера.
Home Lock — при включении коптер таке записывает координаты точки взлета (Home) и при активации этого режима в какую бы сторону не был направлен нос коптера при нажатии правого стика на себя коптер будет лететь на вас, от себя — от вас. Полезно если потеряли ориентацию коптера в пространстве.
Еще немного добавлю про безопасность — очень рекомендую для начала поставить защиту пропеллеров. Это поможет сберечь как пропы, так и разнообразную собственность и части тела в случае нештатной ситуации. Вес защита добавит небольшой (около 70 грамм ) и на времени полета скажется не сильно. Правда с защитой фантик будет более чувствителен к ветру. Так же стоит помнить о том, что не следует летать над людьми — всякое может произойти и падающий сверху 1кг пластика и электроники не добавит приятных ощущений наблюдателям.
И напоследок позволю себе не согласиться насчет FC40. Да, это первый фантик, но с обновленным полетным контроллером Naza-M V2 и управлением на частоте 5,8ГГц. Соответственно можно использовать любую камеру с Wi-Fi на борту без опасений внезапного улета фантика в сторону исторической родины.
Меньшая батарея FC40 компенсируется ее существенно меньшей стоимостью и распространенностью в хоббийных магазинах, так как там стандартный разъем XT-60. Во втором фантике батарея проприетарная и стоит весьма недешево. Также есть возможности установки в первый фантик двух батарей (как снаружи корпуса на подвесах, так и внутри корпуса с минимальными переделками) что дает около 15 минут полета при полной загрузке. Основной минус FC40 это отсутствие телеметрии в штатном варианте и дальность дейстивя Wi-Fi камеры. С последним народ борется путем использования Wi-Fi экстендеров — до 300-350 метров удается поднять дальность.
Собственно я сам летаю сейчас на FC40. Правда модернизирован он в хлам: установлен подвес Tarot T2-D, камера GoPro Hero 3+ BE, видеотрансмиттер 500mW на 2.4ГГц, телеметрия DJI iOSD mini, приемник и монитор 7". Батарею пользую 2700mAH. На подходе апгрейд аппаратуры управления — дальность видеолинка сейчас до 1км, а вот управление я терял на 400 метрах. Благо failsafe отработал как по учебнику.
1) автоматическая вентиляция
2) Защита от протечек и перекрытие воды когда квартира ставится на охрану.
3) слежение за температурой стояки и подключение бакового нагревателя автоматом
4) логи температуры воды, для озолупливания коммунальщиков.
5) автоматический ароматизатор/освежитель
А также со входной двери:
1) автоответчик на домофон и вынос домофона в телефон (через сотовый мост) или на комп.
2) видеоглазок пишущий всех кто шарится возле двери и сливает это на сервер.
3) кодовый замок (вообще шик такую экзотику ни один домушник не вскроет)
4) трансляция прогноза погоды и обстановки за бортом в прихожую, чтобы сразу по погоде одеться.
5) трансляция состояния всех датчиков а также токовых потребителей на входную группу, чтобы с первого взгляда оценить все ли выключено, не забыт ли где то утюг и тыды.
Освещение в последнюю очередь идет:
1) аварийное освещение. Пропало питание — зажигаются светодиодные минисветильники от батарей и то только в темное время суток.
2) дистанционное управление светом, в идеале голосовое.
Вот это все реально облегчает и упрощает жизнь, а главное легко реализуемо в обычной квартире без тотального дестроя всего и вся.
Я правильно понимаю, что API не имеет какой-либо авторизации? Т.е. вставив сюда несколько картинок с URL 192.168.0.168/api.htm?ch=X&cmd=2 где X принадлежит [0,31], у владельцы этих устройств, не сменивших IP и открывших статью, включится весь свет? :)
простите, не удержался :)
Чем будет принципиально отличаться модуль на более мощных потребителей?