Pull to refresh
Козлов Василий Иосифович@saintbyteread⁠-⁠only

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

Send message

Отзывчивое Android-приложение или 1001 способ загрузить картинку

Reading time16 min
Reach and readers55K
О реализации многопоточности при разработки Android-приложений уже написано немало. В этой же статье хочется провести сравнение нескольких распространенных на сегодня способов скачать/прочитать/сохранить/посчитать, при этом не дав пользователю повода для раздражения. Постараться понять, когда то или иное решение будет уместным, а чего лучше не делать вовсе. Попытаемся показать, почему привычных вещей, таких как класс Thread и пакет java.util.concurrent оказывается недостаточно, когда речь заходит об Android-приложении.

Читать дальше →

Разработка циферблатов для Android Wear — это проще, чем кажется

Reading time3 min
Reach and readers31K
Когда возникла идея делать циферблаты для часов на Android Wear, к делу приступили без страха. Опыт разработки под «большой» андроид был, а на часиках крошечный экран и всего одна кнопка — легче лёгкого.


Читать дальше →

Стабилизация таймлапс-видео на калькуляторе (IPython+OpenCV)

Reading time6 min
Reach and readers14K
Подобно многим стихийным и сезонным любителям астрофотографии, в этом августе я ловил ночью Персеиды. Улов небольшой есть, но сейчас не о нём, а о том, что побочным результатом такого лова стала серия фотографий, которые напрашивались на то, чтобы сделать из них таймлапс. Но вот незадача: установка камеры оказалась не столь уж жесткой, как хотелось бы, и между кадрами появилось небольшое смещение. Попытался исправить его плагином дешейкинга в VirtualDub, но результаты не порадовали. Тогда было решено сделать свой велосипед: подробнее о результатах и том как они получены — под катом.
Читать дальше →

Как узнать, наша жизнь уже под колпаком ИИ или ещё нет? (паранойи пост)

Reading time7 min
Reach and readers20K
У вас бывает так, что думаются странные мысли? Вот прокрастинируешь так, никого не трогаешь, мысль вяло и бесконтрольно течёт, а потом БАЦ, и приходи в голову…



Так вот и у меня, мучает давно одна мысль и надо ей поделиться. Нет, она не совсем it-шная, но в то же время околоайтишная и как-то связана со всеми этими вашими «интернетами», искусственным интеллектом и прочим.
Читать дальше →

Какой квадрокоптер выбрать для GoPro? Рассмотрим лучших среди бюджетных

Reading time4 min
Reach and readers120K
Свой первый квадрокоптер я купил более двух лет назад и купил я его, чтобы открыть новые ракурсы для своей «гопрошки». Сегодня совсем другая ситуация и на рынке квадрокоптеров и с курсом доллара, однако желание купить квадрокоптер для съёмки с воздуха — всё так же актуально. Поэтому в этой статье я расскажу о том, на какие квадрокоптеры стоит обратить внимание и с какими сложностями вы можете столкнуться.


«Подвес DJI Phantom»
Читать дальше →

Технологии ASR и TTS для прикладного программиста: теоретический минимум

Reading time27 min
Reach and readers36K

Введение


В последние несколько лет голосовые интерфейсы окружают нас все плотнее. То, что когда-то демонстрировалось только в фильмах о далеком будущем, оказалось вполне реальным. Дело дошло уже до встраивания движков для синтеза (Text To Speech — TTS) и распознавания (Automatic Speech Recognition — ASR) речи в мобильные телефоны. Более того, появились вполне доступные API для встраивания ASR и TTS в приложения.

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

Но для затравки — анекдот:
Урок русского языка в грузинской школе.
Учитель говорит: «Дети, запомните: слова сол, фасол и вермишел пишутся с мягким знаком, а слова вилька, булька, тарелька – без мягкого знака. Дети, запомните, потому что понять это невозможно!»

Раньше этот анекдот казался мне смешным. Теперь — скорее жизненным. Почему так? Сейчас постараюсь объяснить…
Читать дальше →

ipgeobase в Nginx

Reading time3 min
Reach and readers18K
Когда возникает задача — по адресу посетителя получать его город и налоговый (автомобильный) код региона, кажется — да это же просто, в инете полно таких штук!
А потом смотришь: одни платные, другие нельзя у себя развернуть, третьи можно, но это ресурсозатратно, четвертые о регионах РФ ничего не знают…
И тут на помощь спешит больной мозг программиста с навязчивой идеей: «Нет у других — сделай сам»

Читать дальше →

Семь вредных советов начинающему коптероводу

Reading time2 min
Reach and readers28K
За время пока я летаю на квадрокоптерах — я совершил массу ошибок, которые мог бы не совершать. Пусть эти 7 вредных советов будут подсказкой тем, у кого этот путь ещё впереди.

Вредный совет №1:
Если вы первый раз запускаете свой квадрокоптер на улице — обязательно проверьте какую высоту он может набрать. И путь вас не смущает сильный ветер — вы же уже получили 80lvl в игре с квадрокоптером.

Читать дальше →

ГЭС изнутри

Reading time5 min
Reach and readers68K
Теоретически с гидроэлектростанциями все понятно — вода идет из верхнего бьефа в нижний, крутит рабочее колесо турбины. Турбина вращает генератор, а тот вырабатывает электричество…
Интересны детали.



Хозяйке на заметку: чтобы получить 1 киловатт-час электроэнергии, надо спустить с высоты 27 метров 14 тонн воды.
Читать дальше →

Предложение от Яндекс.Денег в новом стандарте платежей W3C

Reading time6 min
Reach and readers20K
Привет! Меня зовут Евгений Виноградов. Я работаю в Яндекс.Деньгах и участвую в работе группы W3C, посвященной стандартам интернет-платежей. Помимо нас и ещё нескольких платёжных сервисов, в неё вошли международные IT-компании, банки, регуляторы, организации, работающие с Bitcoin. На самом деле, группа существует уже больше трех лет. Всё это время она обсуждает содержание будущего стандарта для интернет-платежей, но только недавно — после очной встречи участников — дело заметно продвинулось вперед.



Мы в Яндекс.Деньгах не понаслышке знаем, с какими сложностями приходится сталкиваться разработчикам, например, интернет-магазинов. Сейчас для использования разных платёжных систем им приходится разбираться с документацией и особенностями каждой из них, а процесс подключения платёжных решений к мелкому магазину может растягиваться на месяцы. Если же подключение будет выполняться практически идентично, достаточно будет изучить процедуру один раз — и вы будете способны работать со всеми платежными системами.

Одним из наших предложений в рамках работы над стандартом стал способ инициализации платежа с условным названием «payto:» — по аналогии со всем известным сценарием отправки сообщений электронной почты через URI-схему «mailto:».

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

Оптимизируем запросы к Facebook Graph API с помощью Real-Time Updates

Reading time9 min
Reach and readers17K
Приложения для Facebook могут иметь разнообразный функционал: например, часто приложению будет достаточно информации, полученной через API, во время работы пользователя с приложением. Но что делать, если ваше приложение должно работать с самыми “свежими” данными пользователе, даже если они не открывали его уже больше месяца?

Есть два способа для того, чтобы получать данные не только во время работы пользователя с приложением:
  1. Получить от пользователя offline_access permission (сохранить “вечный” пользовательский access_token) и получать необходимые данные “по расписанию” (дергать скрипт cron-ом).
  2. Написать скрипт, который будет получать все изменения данных от Facebook, настроить и подписаться на обновления через Real-Time Updates.

Под катом вы узнаете виртуальный пример, как использование real-time updates помогает сократить за день количество запросов к API более чем в 100 раз в некоторых ситуациях. Мы напишем скрипт подписки на обновления и проверим его работу, получив данные о изменении объектов от самого Facebook.
Читать дальше →

12 малоизвестных фактов о CSS (продолжение)

Reading time12 min
Reach and readers58K
Больше года назад я опубликовал 12 малоизвестных фактов о CSS (перевод на хабре), и по сей день это была одна из самых популярных статей на SitePoint. С тех пор я собирал больше интересностей и маленьких советов по CSS для новой публикации. Мы же все знаем, что каждый успешный фильм должен способствовать выходу новомодного сиквела, верно?


Автор иллюстрации SitePoint/Natalia Balska.

Итак, давайте посмотрим на подборку уже этого года дюжины малоизвестных фактов о CSS. Я уверен, что многим из вас известны, по крайней мере, некоторые из них, но вы можете дать мне знать в комментариях сколько из фактов оказались для вас новыми.

Примечание переводчика
0. Да, я видел опубликованный пару часов назад перевод этой же статьи. Но мне совесть не позволит удалить многодневный труд из-за опоздания на пару часов :) в общем, на ваш суд.

1. Оригинальная статья изобилует рабочими демонстрациями с CodePen. Хабр, к сожалению, не поддерживает вставки с подобных ресурсов, а заменять рабочие динамические примеры статичными картинками, думаю, не имеет смысла. Поэтому статья получилась немного «лысой» простыней, но, я надеюсь, заинтересованные читатели будут открывать недостающие примеры по ссылкам в новом окне.

2. Хотя я имею непосредственное отношение к верстке, перевод получился большим и не таким простым, как показался поначалу. Замечания по ошибкам, опечаткам, терминологии и т.п. просьба присылать личным сообщением в хабрапочту.
Читать дальше →

Простой телефонный интерфейс из Нокии

Level of difficultyEasy
Reading time2 min
Reach and readers25K


Наш автономный эхо-репитер управляется сигналами DTMF в общем канале связи. Для этого нужно использовать радиостанцию с клавиатурой и быть в зоне устойчивого радиопокрытия. Так как эти условия не всегда выполнимы, мы решили сделать доступ в радиосеть через сеть телефонную. Для этого было использовано классическое решение – установка телефонного интерфейса. Но в неклассическом его виде.
Читать дальше →

Собираем базу людей из открытых данных WhatsApp и VK

Reading time15 min
Reach and readers222K
Etan Hunt
кадр из фильма Миссия Невыполнима II

Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.

Первый успех


Было решено попробовать следующий вариант:
  • Добавить неизвестный номер в адресную книгу телефона;
  • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
  • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.

Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
Далее перебор аккаунтов WhatsApp и VK по Москве и Ненецкому АО и распознание лиц

За что вам платят деньги на работе?

Reading time6 min
Reach and readers19K

В своей речи в 1935-ом году Иосиф Сталин выдвинул лозунг, ставший впоследствии крылатой фразой: «Кадры решают все». Историческая оценка автора фразы неоднозначна, но озвученный им принцип взят на вооружение. Спустя шестьдесят шесть лет семнадцать человек, среди которых были Бек, Кокбёрн и Фаулер, подписали Agile-манифест разработки программного обеспечения, первой ценностью которого значилось: «Люди и взаимодействие важнее процессов и инструментов».

Сейчас много написано о том, насколько важны люди для любого бизнеса, что нужно отбирать лучших и как это делать. Эти книги написаны специалистами по HR для других специалистов по HR или руководителей, подбирающих себе сотрудников. Но что это означает на практике для «простых людей» — специалистов, ищущих работу, желающих строить карьеру и развиваться профессионально?
Читать дальше →

Бесплатное распознавание речи от российской компании Стэл

Reading time6 min
Reach and readers13K
Когда возникает необходимость превратить звуковой файл с речью в текст, первыми на ум приходят решения Гугла и Яндекса. Но, кроме Яндекса, есть ещё одна отечественная компания — «Стэл» (http://speech.stel.ru/), API которой поддерживает «over 9000» и даже «очень очень много» запросов в день, а пробные ключи Stel раздает бесплатно.

image

Читать дальше →

Анализ SSL/TLS трафика в Wireshark

Reading time7 min
Reach and readers249K


Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.

Читать дальше →

Пулы потоков: ускоряем NGINX в 9 и более раз

Reading time15 min
Reach and readers93K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →

Как определить лицо на фотографии с помощью PHP

Reading time3 min
Reach and readers40K
Определение лиц используется в соцсетях, фото-редакторах, видеочатах, умной капче, time tracking программах — можно придумать еще множество применений этой функции.
image
Читать дальше →

Разработка своей системы биллинга на Django

Reading time4 min
Reach and readers37K
При разработке большинства сервисов возникает потребность во внутреннем биллинге для аккаунтов сервиса. Так и в нашем сервисе возникла такая задача. Готовые пакеты для её решения мы так и не смогли найти, в итоге пришлось разрабатывать систему биллинга с нуля.
В статье хочу рассказать о нашем опыте и подводных камнях, с которыми пришлось столкнуться во время разработки.

Задачи

Задачи, которые нам предстояло решить были типичны для любой системы денежного учета: прием платежей, лог транзакций, оплата и повторяющиеся платежи (подписка).
Читать дальше →

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity