Pull to refresh
17
Karma
0
Rating
Сергей Ковач @xy4

Java developer

  • Followers 9
  • Following 9
  • Posts
  • Comments

Компактный монитор домашнего воздуха (CO2, температура, влажность, давление) с Wi-Fi и мобильным интерфейсом

IOT DIY

image


Про измерение CO2 и его важность на Geektimes было уже немало публикаций (ссылки в конце статьи). Здесь же хочу описать проект компактного монитора уровня CO2, а также температуры, влажности и давления с Wi-Fi, обновлением прошивки по воздуху и интерфейсом в мобильном приложении. Сердца системы модуль на базе esp8266, сенсор CO2 MH-Z19 и фреймворк esp8266-arduino. И так, включим устройство в USB-розетку:

Читать дальше →
Total votes 78: ↑78 and ↓0 +78
Views 74K
Comments 144

Inverser – АПОЖ под Android

Development for Android *
АПОЖ — это довольно смешная музыкальная игра из программы «Хорошие шутки», которую вели на СТС Михаил Шац, Татьяна Лазарева и Александр Пушной.

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

Проще посмотреть запись оригинальной программы, чтобы понять, что к чему. Вот, наверное, самая знаменитая запись АПОЖ с Пряниковым и Иванушками-international — http://www.youtube.com/watch?v=M3mkUyJMw2I.

image

В свое время я при помощи ноутбука, внешнего микрофона, дополнительных колонок, Adobe Audition и быстрых рук сам проводил АПОЖ. Но это было крайне неудобно: нужен был навык, быстрота, а также куча техники с собой.

И вот, перед прошедшими выходными друзья подкинули мне ссылочку на свою новую программу под Android — Inverser.
Читать дальше →
Total votes 43: ↑35 and ↓8 +27
Views 10K
Comments 14

Пишем Instagram виджет для сайта. Инструкция для любопытных. Готовое решение для всех остальных

Website development *API *
Sandbox
image Недавно мне потребовалось интегрировать в сайт Instagram виджет. Чтобы пользователи видели последние опубликованные фотографии. Может даже подписывались.

Тут же выяснилось, что официального виджета у Instagram нет. Более того, с Instagram можно взаимодействовать исключительно через запросы к API. Никаких тебе JavaScript библиотек, генераторов кода и дизайна. Всё нужно делать руками.

Сразу нашлось множество сторонних сервисов разной степени платности и бесплатности. Объединяло их одно – клиент получает лишь код вызова виджета, всё остальное тянется с сервиса. Меня лично это не устраивало. Почему нет бесплатного standalone решения с открытым исходным кодом? Может быть я плохо искал? В общем, я решил внести свои пять копеек.

Инструкция по созданию виджета и готовое решение под катом.

Небольшое примечание. С момента написания этой статьи прошло уже семь месяцев. За это время виджет был установлен на около 80 ресурсах, создан репозиторий на GitHub, добрый человек подарил мне инвайт, виджет сменил механизм кэширования, обзавёлся собственным сайтом, добрые люди на его основе сделали плагин для CMS Битрикс, а я так и не нашёл аналогов в сети.
Читать дальше →
Total votes 50: ↑46 and ↓4 +42
Views 192K
Comments 16

Gson или «Туда и Обратно»

NAUMEN corporate blog Java *
Tutorial
Недавно мне пришлось поработать с библиотекой Google Gson, предназначенной для преобразования Java-объектов в текстовый формат JSON (сериализация) и обратного преобразования (десереализация). Часто при работе с Gson хватает стандартных настроек библиотеки, но бывают случаи (в том числе мой), когда необходимо кастомизировать процессы преобразований.

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

Для начала нужно выбрать какую-нибудь предметную область. Скажем, не знаю, почему-то приходят в голову мысль про отряд гномов. Собственно, почему бы и нет?


За синие горы, за белый туман...
Total votes 28: ↑27 and ↓1 +26
Views 140K
Comments 25

Легкий старт: Spring + MongoDB

Website development *Java *MongoDB *
Sandbox
Tutorial


Поискал на хабре схожие статьи, нашел только Morphia — легкий ORM для MongoDB, управляемый аннотациями, ничего по связке Spring Data + MongoDB не нашлось, в связи с этим решил написать пост из раздела «для самых маленьких» по настройке и использованию связки Spring + MongoDB.
Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Views 49K
Comments 11

Новое в Java 8

Java *
Translation
Java еще не умерла — и люди начинают это понимать.

Добро пожаловать в ведение по Java 8. Этот материал шаг за шагом познакомит вас со всеми новыми фичами языка. Вы научитесь использовать методы интерфейсов по умолчанию (default interface methods), лямбда-выражения (lambda expressions), ссылки на методы (method references) и повторяемые аннотации (repeatable annotations). Все это будет сопровождаться короткими и простыми примерами кода. В конце статьи вы познакомитесь с наиболее свежими изменениями в API, касающихся потоков, функциональных интерфейсов, расширений для ассоциативных массивов, а также с изменениями в API работы с датами.
Читать дальше →
Total votes 96: ↑95 and ↓1 +94
Views 469K
Comments 139

Авторизация клиентов в nginx посредством SSL сертификатов

Nginx *

Введение:


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

Поскольку на моём сервере используется nginx, то был установлен модуль SSL
Гугл не выдал ни одного работоспособного howto, но информация в сети есть по частям.

Итак, пошаговое руководство по настройке nginx на авторизацию клиентов через SSL-сертификаты.
Читать дальше →
Total votes 41: ↑34 and ↓7 +27
Views 110K
Comments 31

Backbone.Component — автономные компоненты UI для Backbone.js

SourceTalk corporate blog Website development *JavaScript *
На нашем проекте мы используем Backbone.js в качестве основного JS-фреймворка. Почему выбор пал на него, я возможно ещё расскажу в одном из следующих постов, в этот раз речь о другом. Как известно, из коробки Backbone предлагает весьма скромные возможности, компенсируя это максимальной гибкостью. Поскольку Backbone существует достаточно давно и успел обзавестись серьёзным сообществом разработчиков, для решения многих типовых задач Backbone-приложений сегодня существуют плагины либо целые надстроенные над Backbone фреймворки (многим известен например Backbone.Marionette, очень многообещающе выглядит недавно вышедший Base — кстати советую приглядеться).
Тем не менее, есть одна достаточно распространённая задача, адекватное решения которой мне до сих пор не попадалось: речь идёт о создании типовых автономных элементов UI. Скажем, у вас в проекте используется элемент выбора даты, для его создания вы используете найденный вами на бескрайних просторах гитхаба плагин jQuery. С этим последним всё хорошо кроме того, что вам нужно вручную дёргать его каждый раз, когда на вашей странице появляется соответствующий input, а потом возможно ещё и подчищать созданную им разметку во избежание дальнейших конфликтов. В итоге вам приходится писать много повторяющегося кода. Вот здесь вам и пригодится Backbone.Component.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 10K
Comments 45

Использование generic wildcards для повышения удобства Java API

Programming *Java *
Доброго времени суток!

Этот пост для тех, кто работает над очередным API на языке Java, либо пытается усовершенствовать уже существующий. Здесь будет дан простой совет, как с помощью конструкций ? extends T и ? super T можно значительно повысить удобство вашего интерфейса.
Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Views 119K
Comments 7

Разработка web API

Website development *API *
Translation

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Total votes 235: ↑224 and ↓11 +213
Views 271K
Comments 128

Как мы делали лазер из DVD-RW привода

Простая Наука corporate blog
image

Без особых прелюдий начну с того, какой привод лучше использовать.
  • Во-первых, это должен быть пишущий привод (RW);
  • Во-вторых, чем выше у него скорость записи, тем мощнее получится лазер;
  • Ну и, в-третьих, чем более ненужным он уже является, тем больше удовлетворения от этого можно получить. Я заметил прямую зависимость :)
Читать дальше →
Total votes 175: ↑150 and ↓25 +125
Views 424K
Comments 133

HoloEverywhere v1.5

Development for Android *

Вчера, немного поматерясь, мной таки был сделан релиз HoloEverywhere 1.5.

Для тех, кто не в курсе: HoloEverywhere — бекпорт Holo темы с Android 4.1 на 2.1 и выше. Да и не только темы.

Нововведенний достаточно много, краткий список под катом.
Читать дальше →
Total votes 45: ↑41 and ↓4 +37
Views 16K
Comments 17

Поиск часто встречающихся элементов в массиве

High performance *Data Mining *Algorithms *
Задача: в массиве длиной N найти элемент, который повторяется больше N/2 раз.

Казалось бы, чего тут думать? Возьмём Dictionary<значение элемента, число появлений>, за один проход по массиву сосчитаем появления каждого элемента, потом выберем из словаря искомый элемент. Решение за O(N), куда может быть ещё быстрее?

Есть один нюанс: для словаря нам потребуется O(N) дополнительной памяти — в несколько раз больше размера исходного массива, и это при реализации словаря хоть хэш-таблицей, хоть деревом. Что будем делать, если наша цель — обработка сигнала неким устройством с маленькой памятью? Массив — замеры уровня сигнала, из которых один — «настоящий» передаваемый уровень, а остальные — шум и помехи. Неужели придётся для определения «настоящего» уровня возиться с хэш-таблицами и деревьями?

К счастью, нет: достаточно O(1) дополнительной памяти, и по-прежнему одного прохода по массиву.
Читать дальше →
Total votes 105: ↑98 and ↓7 +91
Views 105K
Comments 38

Java собеседование. Коллекции

Java *Algorithms *
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11 +75
Views 800K
Comments 306

Отображение статусов ICQ, Jabber, Skype и MRA на сайте в произвольном виде

Instant Messaging *
Sandbox


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

Для начала определим наши задачи:
— по возможности использовать официальные сервисы определения статуса
— в случае их отсутствия можно прибегнуть к посторонним
— способ должен быть как можно проще, без излишков (всегда можно будет его потом расширить)
— чтобы прорисовка страницы не висла на время запроса, сделаем буфер

Рассмотрим 4 основных способа на примере ICQ, Jabber, Skype и MRA. Остальные можно сделать аналогично.
Читать дальше →
Total votes 49: ↑47 and ↓2 +45
Views 24K
Comments 34

Несколько интересных приемов и особенностей работы с MySQL

MySQL *
Sandbox
Я думаю, что в процессе изучения той или иной СУБД каждый из вас не раз изобретал велосипеды для решения своих задач, не зная о существовании той или иной функции или приема, которые бы могли в разы ускорить выполнение запросов и уменьшить объем кода. В данной статье я хочу поделиться с вами своим опытом работы с очень «добрым» и «отзывчивым» MySQL, часто позволяющему программисту делать вещи, которые другие СУБД переварить бы не смогли. Материал будет полезен скорее тем, кто только решил углубиться в чудесный мир запросов, но возможно и опытные программисты найдут тут что-то интересное.
Читать дальше →
Total votes 132: ↑116 and ↓16 +100
Views 86K
Comments 83

JSZip спустя полгода: распаковка архивов, работа на Node.js

JavaScript *Node.JS *
22 ноября 2011 года JiLiZART всем нам сообщил, что есть на свете полезная библиотека JSZip с открытым исходным кодом, написанная на джаваскрипте и умеющая создавать zip-архивы (и даже, если это необходимо — с подкаталогами) из скормленных ей текстовых и двоичных данных.

Первым же комментарием к его сообщению стали мои слова:

 — Прекрасно.

 — Теперь ему бы ещё распаковывать уметь.

Прошло полгода с тех пор, и можно видеть, что это естественное пожелание сбылось: очевидно, оно пришло на ум не одному мне, так что программисты принялись за дело — и в открытый на Гитхабе исходный код JSZip добавили методы, способные служить ещё и распаковке zip-архивов, а не только составлению их. (Подробности употребления новинок API смотрите в документации.)

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

Поклонникам же джаваскриптового движка Node.js будет наверняка не менее приятно узнать о появлении модуля node-zip, содержащего весь код JSZip, оформленный в качестве модуля Node. Стало быть, теперь JSZip можно запускать не только во браузере, но и на сервере, а равно и у себя на компьютере.

Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 4.9K
Comments 5

Интеграция JIRA 4.1 с Active Directory

System administration *
Встала задача интеграции JIRA 4.1 с Active Directory со следующими условиями:
  1. Синхронизация пользователей и групп (версия 4.1 не поддерживает синхронизацию)
  2. Прозрачная аутентификация (в качестве логинов в JIRA используются почтовые адреса)
  3. Заполнение свойства пользователей (номер телефона)
  4. Пользователи, которых нет в AD, должны быть помечены

И вот как я её решил:
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 17K
Comments 2

jQuery File Upload

Website development *jQuery *
Ура! Еще один, свеженький… чем он лучше других?



а) Новенький! Всегда, кто берется что-то делать, то обычно смотрит: есть ли в этом смысл, и если есть — делает это.
б) Красивенький! Можно не точить, а ставить из коробки. Основан на Bootstrap'е и иконках Glyphicons
в) Само собой мультиселект файлов, Drag&drop, прогрессбар и превьюшки фотографий.
г) Поддержка кросдоменного соединения, докачка и ресайз фоток на стороне клиента.
д) Готов для любой платформы сервера (PHP, Python, Ruby on Rails, Java, Node.js, и тому подобное.)

blueimp.github.com/jQuery-File-Upload

Поддержка браузеров:

github.com/blueimp/jQuery-File-Upload/wiki/Browser-support

Читать дальше →
Total votes 215: ↑206 and ↓9 +197
Views 179K
Comments 118

Кроссбраузерный <progress>-бар

Self Promo
image

Доброе время суток, Хабро-сообщество!

Совсем недавно по работе мне попалась интересная задачка, которую я всё же реализовал. Нужно было соорудить прогресс-бар, который был бы полностью универсальный, поддающийся любой стилизации и плюс ко всему кроссбраузерный (начиная c IE7+)!

Здесь привожу конечный результат. Полный вариант статьи можно найти здесь

Читать дальше →
Total votes 37: ↑21 and ↓16 +5
Views 999
Comments 35
1

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity