Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Как сделать свой собственный менеджер состояния в React всего с одним хуком

Время на прочтение5 мин
Количество просмотров5.5K

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Кастомизация HTML5 progress element

Время на прочтение3 мин
Количество просмотров57K


Прогрессбар — элемент вроде и редко встречающийся на сайтах (в отличии от селектов, чекбоксов, инпутов и прочего), но все равно без него не обойдется ни один ui-kit.

На данный момент HTML5 предоставляет нам нативный элемент progress, базовый функционал которого поддерживается практически всеми современными браузерами (caniuse.com/#feat=progress).

Но на базовых возможностях стилизации представляемых скажем IE11, мягко говоря далеко не уедешь. Все же хочется чтобы прогрессбары были с анимацией, градиентом, плавной сменой ползунка прогресса, и самое главное с выводом значения в процентах.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии15

Самодельные электронные часы, элементная база — часть 2

Время на прочтение6 мин
Количество просмотров50K
Привет, geektimes! В первой части статьи были рассмотрены принципы получения точного времени на самодельных часах. Пойдем дальше, и рассмотрим, как и на чем это время лучше выводить.

1. Устройства вывода


Итак, у нас есть некая платформа (Arduino, Raspberry, PIC/AVR/STM-контроллер, etc), и стоит задача подключить к нему некую индикацию. Есть множество вариантов, которые мы и рассмотрим.

Сегментная индикация


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


Осторожно, траффик!
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии36

Генерируем PDF-файлы в веб-проекте: программа wkhtmltopdf

Время на прочтение4 мин
Количество просмотров34K
При работе над веб-проектом иногда возникает необходимость генерировать PDF-файлы с большими таблицами: прайс-листы на тысячи позиций. Нашлись разные библиотеки для генерации PDF-файла из PHP-скрипта:

• FPDF
• MPDF — основанная на FPDF библиотека, позволяющая генерировать pdf-файл из любого html-кода
• DOMPDF
• TCPDF

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

Дальнейший поиск помог найти программу wkhtmltopdf. Сайт программы: http://wkhtmltopdf.org.
Читать дальше →
Всего голосов 15: ↑10 и ↓5+5
Комментарии31

Атрибуты свойств в Objective-C. Инструкция для начинающих

Время на прочтение9 мин
Количество просмотров82K
image

Есть множество разных мест, где описано значение атрибутов, используемых при объявлении свойств, но, как правило, все такие источники либо описывают применение только одного из атрибутов, либо содержат еще кучу ссылок на другие документы, переходя по которым со временем начинаешь терять нить рассуждений. Безусловно, нужно стремиться познать все тонкости, для чего нужно прочитать горы литературы. Но для начала вполне достаточно разобраться в основах. Ниже я постарался максимально просто изложить основные используемые при объявлении свойств атрибуты, их значение и основные случаи, когда стоит использовать то или иное значение атрибута.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии20

Умный дом или игрушка для мужчин (продолжение №1)

Время на прочтение4 мин
Количество просмотров26K
Спасибо читателям за поддержку предыдущей статьи. Думаю, пора раскрыть самое интересное, что есть в этой игрушке — это правила.

Для тех, кто не в теме читал предыдущую статью. Правила позволяют очень гибко управлять умным домом неподготовленному человеку. Нужно только понимать, что такое Амперы, Ватты, понимать, как работает «и» и «или», чем отличается Edge trigger от Level trigger, ну и, наконец, иметь логический склад ума. В общем, не все так просто, но ведь и «издание», где публикуется эта статья тоже не для «полных гуманитариев».

Перейдем сразу к делу. Ниже показано правило, по которому отключается неприоритетная нагрузка при превышении общего потребления электричества на дачном участке 28 А.



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

На входе после счетчика стоит автомат на 32 А. При длительном превышении общей нагрузки в 32 А отключится входящий автомат. Дачный участок останется без электричества. Правила настроены так, чтобы при превышении общего потребления от 25 А до 30 А отключались соответствующие неприоритетные потребители. При 30 А отключается все, что находится под управлением умного дома. Мимо него могут пройти сварочные работы на участке, использование других инструментов, требующих большого потребления таких как: пылесос, электрогриль, электрочайник и т.п.

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии27

Экскурсия на производство компании Ноотехника + обзор набора «Умный дом за 1 час с Noolite»

Время на прочтение13 мин
Количество просмотров34K
Сегодня мы расскажем о том, как Madrobots совместно с компанией Ноотехника придумали и сделали наборы, которые позволяют сделать дом немного более «умным». Под катом — экскурсия на производство компании Ноотехника, обзор наших наборов и некоторых штук от ноотехники, про которые я еще не писал.

Не переключайтесь!
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии40

Брелок Гейгера — разведчик радиации

Время на прочтение17 мин
Количество просмотров30K
— А правда, что тонер радиоактивный?
— Нет, там есть свинец, а он защищает от радиации.
Из услышанного разговора.

Он черен и таинственен как самолет-разведчик SR-71 «Blackbird».
Он не имеет опознавательных знаков на борту.
Он обладает отличными ТТХ.
Он умеет практически всё.
Он не спит и мало ест.
Он всегда с тобой.
Он наш!

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



В статье: демонстрация работы в условиях нормального и повышенного уровней радиоактивного фона, взаимодействие с компьютером, описание программ, архивные графики, вскрытие изделия и многое другое.
Но самое главное, это задание читателям ТМ = Х + GT + MM о выведении данных всех брелков на экраны своих мониторов, что позволит уменьшить количество горячих пятен на планете, определить одну из возможных причин болезней, продлить или спасти жизнь многим людям.
Поможет в этом открытый протокол обмена с устройством, что упростит подключение интеллектуального датчика к компьютеру и другим устройствам.
Можно жить и без него, но без него можно и не прожить... долго
Всего голосов 38: ↑35 и ↓3+32
Комментарии121

«Почти умный» тёплый пол на Arduino

Время на прочтение6 мин
Количество просмотров34K
Мой обычный вечер — это посиделки за компьютером. Холодными вечерами частенько появлялось желание сделать моё место отдыха комфортнее. Точнее, периодически было просто холодно ногам. Идеи были различные, вплоть до покупки USB тапочек с подогревом. Однако, все они казались мне нелепыми и отметались. И вот однажды, просматривая YouTube канал одного из любителей Arduino, я наткнулся на видео, где рассказывалось про инфракрасную плёнку. Увидев эту плёнку, я сразу понял: «Вот то, что мне надо!»

Данный проект можно кратко описать так: я положил кусок инфракрасной плёнки под дополнительный слой паркета, добавив к нему систему автоматического управления с помощью Arduino, нескольких датчиков и VB.NET. Теперь по порядку, что и как получилось.


Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии17

Создаем комнатный детектор движения на Arduino и MATLAB

Время на прочтение7 мин
Количество просмотров27K

В этом примере будет создан простой детектор движения, на базе фоторезистора и Arduino. Управляется при помощи Arduino Support Package для MATLAB.


Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии2

Arduino Mega Server

Время на прочтение7 мин
Количество просмотров94K
image

Да, это снова Ардуино, но не спешите закрывать страничку, на этот раз вас ждёт нечто действительно новое и интересное. В основном в этой статье речь пойдёт о микроконтроллерных платах Arduino Mega и плате сетевого интерфейса Ethernet Shield W5100 и о том чуде, которое можно с ними сотворить если позволить себе выйти за рамки стереотипов.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии34

Программируемое реле на Ардуино

Время на прочтение16 мин
Количество просмотров74K
Идея банальна, понадобился контроллер для управления нагрузкой в доме:
1. Котел отопления.
2. Накопительный бойлер для водоснабжения.
3. Насос в скважине.

Читал массу увлекательных статей на тему ХХ на Ардуино, читая которые четко фиксировал в голове мысль «хочу Ардуино». Прикинув стоимость компонентов и готовых решений, посчитал явную выгоду от внедрения Ардуино.

image

Итак, программа минимум:


1. 4 реле, часы (RTC), ЖК экран;
2. Режимы работы каждого реле: включено, выключено, суточный таймер, одноразовое включение;
3. Кнопки управления для настройки времени и режимов реле;

В доме установлен двухтарифный счетчик, поэтому бойлер нагревает воду с 23 до 7 утра. Аналогично отопление: два из трех тэнов, по моей задумке будут включаться ночью. Управление температурой пока остается родное на штатном пульте. Одноразовое включение в качестве резерва пойдет на насос, программируем включение, например, на набор емкости или прокачку скважины, после чего реле переходит в режим выключено. Основная особенность: изготовлено законченное устройство, управляемое кнопками, и не требующее подключения к ПК.
Далее сборка и код
Всего голосов 14: ↑14 и ↓0+14
Комментарии72

Actor Open Messaging Platform от разработчика Telegram

Время на прочтение1 мин
Количество просмотров19K
Всем привет!

Наша команда недавно выпустила небольшой продукт — открытую платформу для создания мессенджеров — Actor Messaging Platform.



Всего за несколько дней после запуска мы оказались на главной Hacker News (кто из разработчиков не читает — зря), на Reddit и собрали больше 600 звезд на GitHub от разработчиков со всего мира. У нас появилось небольшое сообщество, участники которого помогают друг друге в работе и улучшении продукта. Один из участников уже реализовал несколько важных вещей, необходимые Актору. Например, достаточно высококачественные звонки.
Читать дальше →
Всего голосов 33: ↑24 и ↓9+15
Комментарии67

UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое

Время на прочтение10 мин
Количество просмотров33K
Я не претендую на истину в последней инстанции, но и в разработке кое-чего все-таки смыслю. Посему решил поделиться с вами некоторыми результатами проделанной работы, поделиться некой компиляцией знания о навигационных контроллерах, так сказать. Может это и поможет какой-либо из бренных оболочек, способных именоваться далее моими читателями, создать более совершенный программный продукт.

Предметом исследования будет навигационный контроллер, а именно класс UINavigationController из стандартного фреймворка UIKit для работы с интерфейсом, который нам любезно предоставляет Apple.

Вкратце о...


«Контроллер» в данном случае — некий класс, инкапсулирующий логику, согласно концепции (еще называемой паттерном) MVC.





Навигационный контроллер (UINavigationController) — класс высокого уровня абстракции, содержит в себе иерархию других контроллеров представлений, между представлениями(вьюшками/UIView) которых способен осуществлять навигацию (в чем его, собственно, основная задача и состоит!), передавая в нужный момент управление соответствующему контроллеру. Кроме этого — композиционно содержит в себе навигационную панель (UINavigationBar), которую отображает на экране, и соответствующим образом меняет содержимое данной панели: в зависимости от активного контроллера.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии13

Генерируем номер версии и билда на иконке iOS приложения

Время на прочтение2 мин
Количество просмотров11K


В процессе разработки приложение тестируется, и бывает, что нужно знать, какая версия приложения и с каким номером сборки у тестировщика/другого участника процесса установлена. Например, баг уже исправлен, а человек новый билд ещё не поставил и сетует, что ничего не исправлено.

Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:

Пример

Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Как красиво оформить публикацию на Хабре

Время на прочтение7 мин
Количество просмотров45K
Публикация – основная единица связи автора с читателем. Практика показывает, что на Хабре можно разместить почти любой формат: небольшой анонс и лонгрид-обзор, интервью, фотоотчёт, трансляцию события, урок и многое-многое другое. Нередко успех публикации зависит и от её оформления – приятно оформленный материал читать одно удовольствие. В этой статье мы постараемся предоставить вам много полезных советов по хорошему оформлению материала.

И первый лайфхак – кликабельная картинка до ката, которая ведёт сразу внутрь публикации:


Читать дальше →
Всего голосов 140: ↑121 и ↓19+102
Комментарии112

iOS Инструменты разработчика

Время на прочтение26 мин
Количество просмотров35K

Вступление


Всем привет, меня зовут Григорий, последние 5 лет занимался программированием под iOS. Сейчас решил сменить сферу деятельности и ударился в веб, но чтобы добро не пропадало, хочу поделиться с сообществом своими наработками, накопившимися за это время. Библиотеки выложены на GitHub и добавлены в CocoaPods. Инструкции по установке и использованию вы сможете найти по ссылкам на GitHub, здесь же будет краткое описание.

Минимальная поддерживаемая версия — iOS 6.0.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии27

Организация Objective C класса

Время на прочтение7 мин
Количество просмотров15K
В предыдущей статье я затронул тему структуры проекта. На мой взгляд, это первый шаг с которого начинается красивый код.
Второй шаг это правильная организация файлов самого класса.

Кому-то статьи про Obj C могут показаться архаизмом, но пока мы не планируем повсеместный переезд на Swift. Это скорее плавное замещение в новых проектах. Все еще остается огромная кодовая база на Objective C которую необходимо поддерживать.
К тому же, на Swift еще не накоплено достаточно опыта в больших проектах.

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

В заголовочном файле 279 строк, в файле реализации 2948 строк.
Привет, ⌘F, я не скучал.
Читать дальше →
Всего голосов 20: ↑12 и ↓8+4
Комментарии21

Автоматический регулятор температуры газовой колонки

Время на прочтение5 мин
Количество просмотров57K
Хочу рассказать о создании несложного устройства, которое сильно облегчило жизнь домашним обитателям — автоматический регулятор температуры газовой колонки. Подобные устройства уже создавались и описывались здесь на хабре, хотелось сделать чуть более продвинутый девайс и подробно описать весь процесс создания от задумки и измерения до реализации, без использования готовых модулей типа Arduino. Устройство будет собрано на макетной плате, язык программирования — C. Это моя первая разработка законченного (и работающего!) устройства.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии31

По-настоящему адаптивные письма. Часть… снова первая

Время на прочтение9 мин
Количество просмотров27K


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

К чему мы приходим:
— Использование внешних стилей и последующий прогон кода через инлайнер. Из-за усложнения кода это стало целесообразным
— Улучшение семантики через именование классов и сокращение участков кода
— Частичная поддержка the Bat! Хотя Николь на него забила.
— Полная поддержка всех мобильных почтовых клиентов
— Использование ранее опасных конструкций. Благодаря усердному тестированию проблемы решены.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии25
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность