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

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

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

Дистанционное измерение пульса с помощью Intel RealSense

Время на прочтение12 мин
Количество просмотров12K
Когда я впервые услышал о системе, которая способна определить частоту сердечных сокращений человека бесконтактным способом, я отнёсся к этому скептически, решил, что то, о чём шла речь, находится где-то между откровенным шарлатанством и магией Вуду. Много позже мне понадобилось больше узнать о технологиях, нужных для такого «волшебства». К моему удивлению, подобное оказалось не просто «возможным», но и уже существующим. Более того, это реализовано в последней версии Intel Real Sense SDK.


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

Две «страшные» проблемы при покупках за рубежом и методы их решения

Время на прочтение7 мин
Количество просмотров30K
Интернет-шоппинг — занятие выгодное, интересное и очень приятное, однако, тут, как и в любом другом деле, могут встретиться свои подводные камни, о которых нужно знать и которые нужно уметь обходить. Сегодня мы расскажем о 2 неочевидных проблемах, возникающих даже у опытных покупателей, а также о методах их решения — на самом-то деле совершенно простых и понятных, но, несмотря на это, всё равно вызывающих немало вопросов у посетителей интернет-магазинов США и наших пользователей.



Первая проблема – магазин прислал не тот товар, который вы заказывали (брак, фейк, низкое качество)


Кто виноват и что делать?
Всего голосов 13: ↑11 и ↓2+9
Комментарии22

«Стриж» в ЖКХ: полет нормальный

Время на прочтение4 мин
Количество просмотров28K
Сегодня создается рынок решений в области Machine to Machine и Интернета вещей, основанных на беспроводных технологиях LPWAN. Одним из первопроходцев этого рынка стала компания «СТРИЖ Телематика»

image

Стриж — это беспроводная система сбора, передачи и обработки данных счетчиков, датчиков и приборов учета для ЖКХ, электроэнергетики и систем безопасности. Сегодня поговорим о них.
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии82

Рецепты под Android: Как вкусно приготовить LayoutManager

Время на прочтение16 мин
Количество просмотров48K
Привет хабр!

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


Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии4

Что такое красивый код, и как его писать?

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

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


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

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

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

Профессии программиста, как и большинству других профессий, приходится учиться каждый день в течение нескольких лет, а, по большому счету, и всю жизнь. Вначале ты осваиваешь набор базовых знаний в объеме N семестровых курсов, потом долго топчешься по различным граблям, перенимаешь опыт старших товарищей, изучаешь хорошие и плохие примеры (плохие почему-то чаще).

Говоря о базовых знаниях, надо отметить, что умение писать красивый профессиональный код — это то, что по тем или иным причинам, в эти базовые знания категорически не входит. Вместо этого, в соответствующих заведениях, а также в книжках, нам рассказывают про алгоритмы, языки, принципы ООП, паттерны дизайна…

Да, все это необходимо знать. Но при этом, понимание того, как должен выглядеть достойный код, обычно появляется уже при наличии практического (чаще в той или иной степени негативного) опыта за плечами. И при условии, что жизнь “потыкала” тебя не только в сочные образцы плохого кода, но и в примеры всерьез достойные подражания.

В этом-то и заключается вся сложность: твое представление о “достойном” и “красивом” коде полностью основано на личном многолетнем опыте. Попробуй теперь передать это представление в сжатые сроки человеку с совсем другим опытом или даже вовсе без него.

Но если для нас действительно важно качество кода, который пишут люди, работающие вместе с нами, то попробовать все же стоит!
Читать дальше →
Всего голосов 97: ↑79 и ↓18+61
Комментарии146

Заметка о калибровке датчиков положения в домашних условиях

Время на прочтение10 мин
Количество просмотров24K
Для некоторых датчиков ускорения требуется дополнительная калибровка нуля после монтажа на плату. Когда я увидел несколько исходников с калибровкой датчиков ускорения, где составляющая G учитывалась просто путём вычитания из оси Z величины = 9,8 м/с2 — появилась идея написать данную заметку.


Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии22

1-Wire slave на МК. Часть 2: Реализация в коде

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

Первая статья цикла: 1-Wire slave на МК. Часть 1: Железо

Что есть в инетрнете по 1-Wire slave


В интернете про реализацию 1-Wire мастера можно найти множество информации, статей, application notes для микроконтроллеров на любой вкус и цвет.
А вот для реализации со стороны Slave материалов немного. Исходных кодов и того меньше. В итоге был найден один исходник для PIC, с ассемблерными вставками и ошибками. Недавно появилась статья на хабре для MSP430 от resetnow. Под катом наш вариант реализации задачи.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

Python 3.5; async/await

Время на прочтение5 мин
Количество просмотров282K
Тихо и незаметно (с), вышел Python версии 3.5! И, безусловно, одно из самых интересных нововведений релиза является новый синтаксис определения сопрограмм с помощью ключевых слов async/await, далее в статье об этом.

Поверхностный просмотр «PEP 0492 — Coroutines with async and await syntax» поначалу оставил у меня вопрос «Зачем это надо». Сопрограммы удовлетворительно реализуются на расширенных генераторах и на первый взгляд может показаться, что все свелось к замене yield from на await, а декоратора, создающего сопрограмму на async. Сюда можно добавить и возникающее ощущение, что все это сделано исключительно для использования с модулем asyncio.

Но это, конечно же, не так, тема глубже и интереснее.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии26

Написание framework на asyncio, aiohttp и мысли про Python3 часть первая

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

Года полтора назад встал вопрос совместимости написанного кода с Python3. Поскольку уже стало более менее очевидно, что развивается только Python3 и, рано или поздно, все библиотеки будут портированы под него. И во всех дистрибутивах по умолчанию будет тройка. Но постепенно, по мере изучения, что нового появилось в последних версиях Python мне все больше стал нравится Asyncio и, скорее, даже не Acyncio а написанный для работы с ним aiohttp. И, спустя какое то время, появилась небольшая обертка вокруг aiohttp в стиле like django. Кому интересно что из этого получилось прошу под кат.


Вторая часть


Введение
Краткий обзор других фреймворков на базе aiohttp
1. Структура
2. aiohttp и jinja2
3. aiohttp и роуты
4. Статика и GET, POST параметры, редиректы
5. Websocket
6. asyncio и mongodb, aiohttp, session, middleware
7. aiohttp, supervisor, nginx, gunicorn
8. После установки, о примерах.
9.RoadMap

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

Как настроить iOS-устройство и RAD Studio XE8 (Delphi, C++ Builder)

Время на прочтение4 мин
Количество просмотров19K
Сегодня мы “подружим” или настроим реальное iOS-устройство и RAD Studio XE8 (или Delphi, или C++ Builder, или Appmethod).

В итоге мы сможем запускать наши приложения не только в среде Window, Android, OS X, iOS-симуляторе, но и на реальных iOS-устройствах из одного и того же исходного кода.

План действий:
— настройка макбука + developer.apple.com;
— настройка RAD Studio XE8;
— запуск своего приложения на iOS-устройстве.

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

Криптография на Python: шифрование информации и создание электронных цифровых подписей с помощью пакета PyCrypto

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


Долго мучился с PyCrypto, в итоге получилась эта статья и полная реализация следующего протокола:

Этап отправки:

1. Алиса подписывает сообщение своей цифровой подписью и шифрует ее открытым ключом Боба (асимметричным алгоритмом).
2. Алиса генерирует случайный сеансовый ключ и шифрует этим ключом сообщение (с помощью симметричного алгоритма).
3. Сеансовый ключ шифруется открытым ключом Боба (асимметричным алгоритмом).
Алиса посылает Бобу зашифрованное сообщение, подпись и зашифрованный сеансовый ключ.

Этап приёма:

Боб получает зашифрованное сообщение Алисы, подпись и зашифрованный сеансовый ключ.
4. Боб расшифровывает сеансовый ключ своим закрытым ключом.
5. При помощи полученного, таким образом, сеансового ключа Боб расшифровывает зашифрованное сообщение Алисы.
6. Боб расшифровывает и проверяет подпись Алисы.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии6

Пошаговая видео-инструкция для новичков 3д печати, как настроить 3д принтер

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


Подготовил видео-инструкцию, о том как же настраивать такого дикого зверя, как слайсер для 3д принтера. Когда начинал свой путь в 3д печати, очень не хватало такого видео, исправляем ситуацию.

Приятного просмотра.

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

Ethernet Library или почему в природе не существует серверов на Arduino

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

В этой статье я опишу ситуацию с которой столкнулся во время разработки проекта Arduino Mega Server. Суть дела заключается в том, что существует такая библиотека Arduino Ethernet Library, написанная для поддержки сетевой платы Ethernet Shield на чипе W5100. Это стандартная плата и стандартная библиотека, которая многие годы поставляется в комплекте со средой разработки Arduino.

И эта библиотека является основой для всех проектов, использующих обмен информацией по проводной сети. Так вот, оказалось, что эта библиотека попросту профнепригодна. На ней в принципе невозможно построить нормальное сетевое взаимодействие. Можно только «баловаться» одиночными запросами и ответами. Ни о каком построении серверов на базе этой библиотеки речь не может идти. Почему?
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии74

Ускорение обработки изображений в Android

Время на прочтение29 мин
Количество просмотров16K
image Центральные процессоры и графические ядра современных устройств, работающих под управлением Android, способны на многое. Например, их вычислительную мощность можно направить на обработку изображений.

Для того чтобы это сделать, стоит обратить внимание на технологии OpenCL и RenderScript.

В этом материале рассмотрен пример Android-приложения, в котором показаны методики высокопроизводительной обработки изображений с использованием языков программирования OpenCL и RenderScript. Эти технологии разработаны с прицелом на возможности графического аппаратного обеспечения, рассчитанного на параллельную обработку данных (шейдерных блоков). Они позволяют ускорить работу со значительными объёмами данных и решение задач, предусматривающих большое число повторов команд. Хотя, для ускорения обработки графики в Android-приложениях, вы можете воспользоваться другими технологиями, в этом материале рассматриваются примеры построения инфраструктуры приложения и реализации графических алгоритмов на OpenCL и RenderScript. Здесь так же рассмотрен класс-обёртка для OpenCL API, который позволяет упростить создание и исполнение приложений, работающих с графикой и использующих OpenCL. Использование исходного кода этого класса в ваших проектах не требует лицензирования.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии3

Arduino Mega Server

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

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

Простая и очевидная замена android.util.Log

Время на прочтение3 мин
Количество просмотров17K
Однажды я писал один проект. Проект выдался большим и писал я его долго.
Там было все что только можно было запихнуть — и retrolambda/java8, и пара десятков
других библиотек (жадность заказчика до новых фич не знала границ, а потому
росло число зависимостей).

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

Все это время меня не покидало ощущуение, что управление уровнем логировния c
помощью изменения байт-кода — это нелепо. И тогда за полчаса я написал свой
примитивный логгер.

Обычно я редко довожу свои проекты до конца, но тут он был настолько прост — что теперь он лежит на гитхабе, желающие — пользуйтесь.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии28

R и Python — достойные соперники?

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


Всем доброй пятницы, дорогие читатели!

В истории компьютерной редакции издательства «Питер» найдется немного столь успешных книг, как "Программируем на Python" Майкла Доусона и не больше таких противоречивых тем, как изумительный язык R, прочно закрепившийся в числе бестселлерных тем «Амазона». В настоящее время мы договариваемся с правообладателями о новой замечательной книге по Python, но в то же время хотели проверить общественное мнение о R — целесообразно ли издавать новые книги об этом элитарном языке для гуру большой статистики, либо Python легко его одолеет, не то что Аполлона?

Добро пожаловать под кат!
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии15

Повышение удобства работы с Android-приложениями: распознавание жестов и не только

Время на прочтение9 мин
Количество просмотров21K
Пользователь перевернул телефон, когда поступил входящий вызов? Уберём звук. Устройство подняли так, будто хотят сделать фото? Включим, если за нас это ещё не сделали по старинке, камеру. Как? Сенсоры нам в помощь.

image
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии3

Определяем пользователей VPN (и их настройки!) и прокси со стороны сайта

Время на прочтение6 мин
Количество просмотров172K
W.I.T.C.H.
We can save the day from dark, from bad
There's no one we need


Многие из вас используют VPN или прокси в повседневной жизни. Кто-то использует его постоянно, получая доступ к заблокированным на государственном или корпоративном уровне ресурсам, многие используют его изредка, для обхода ограничений по географическому положению. Как вы можете знать, крупные интернет-игроки в сфере стриминга видео, музыки и продажи игр никогда не любили пользователей, которые легко обходят географические ограничения, разблокируя недоступный в их стране контент, или совершая покупки заметно дешевле. За примерами не нужно далеко ходить: Netflix изменил свое соглашение об использовании, добавив пункт о блокировке VPN, всего 2 месяца назад; Hulu тоже грешил блокировкой пользователей, а Steam вообще подозрительно смотрит на не-русскоязычных пользователей из России. В последнее время, компании пытаются блокировать уже не конкретных пользователей, а сами IP-адреса VPN-сервисов, создавая определенные неудобства уже самому VPN-сервису и его пользователям. Похоже, они не используют никаких спецсредств, а блокируют выборочно и вручную. Хоть я и не поддерживаю какие-либо блокировки вообще, меня заинтересовала техническая часть вопроса: можно ли как-то определить использование прокси-серверов и VPN со стороны сервера, не прикладывая особых усилий?
Можно, при определенных условиях. И достаточно точно.
Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии84

Эффективная работа с SQLite на примере ICQ

Время на прочтение9 мин
Количество просмотров29K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

Несколько слов об исходной задаче. Основная сущность у нас — профиль ICQ, у которого есть список контактов, а у тех есть сообщения. Наше приложение существует уже много лет, разрабатывалось разными людьми с разными подходами, номер версии основной БД уверенно приближался к 30. Кроме того, количество фич в продукте невозможно предсказать заранее, это тоже повлияло на архитектуру. В общем, модель данных изначально была примерно такой:

Читать дальше →
Всего голосов 50: ↑46 и ↓4+42
Комментарии8

Информация

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