Search
Write a publication
Pull to refresh
0
0
Send message

Первые шаги в Java: как начать разрабатывать ничего не устанавливая

Reading time5 min
Views81K
По прошествию многих лет я подумал, а как бы я разрабатывал свою первую программу на Java, если бы я начал сегодня?


Знакомство с Java было в университете и при воспоминаниях об этом бросает в холодный пот. Кроме нового незнакомого языка, приходилось устанавливать какой-то JDK, потом IDE, потом создавать первый проект и вручную добавлять в него библиотеки. Делать по аналогии с готовыми программами и ловить неизведанные java.lang.ClassNotFoundException и java.lang.NoSuchMethodException и тому подобный ужас. Когда знал как работать только в операционной системе Windows и доступ в интернет был по модему через телефонную линию.

Надеюсь интересно будет как тем, кто делает первые шаги в java и тем, кто помнит jdk 1.4. Попробуем online IDE Eclipse Che.
Узнаем новое или попробуем повторить первые шаги в java сейчас...

Используем RxJava и Retrofit на Android, учитывая поворот экрана

Reading time11 min
Views55K

Решил я однажды таки попробовать дико популярный нынче Rx. А заодно и Retrofit. И посмотреть, как с их помощью реализовать стандартную задачу: получить с сервера набор данных, отобразить их и при этом ничего не терять при поворотах экрана и не делать лишних запросов. Первый вариант у меня получился сразу почти — просто взял и вызвал cache() на Observable, получаемый из синглтона, но он меня не устраивал — для принудительного обновления приходилось, по какой-то причине, пересоздавать экземпляры классов Retrofit и его же реализации моего интерфейса для API. Пересоздание же самого Observable эффекта не давало — всегда возвращались старые данные вместо запуска нового сетевого запроса и получения новых данных.


После долгих мучений с новой для себя технологией выяснил, что во всём был виновен cache() (точнее, наверное, моё неправильное оного понимание). В итоге сделал так: фрагмент запускает метод, подписывающий Subscriber синглтона на Observable retrofit-a, коий запускает onNext и onError BehaviorSubject-a, на который подписывается уже Subscriber фрагмента. Код на GitHub тут, подробности — под катом.

Читать без регистрации и СМС

Shake Detector для Android на RxJava

Reading time9 min
Views17K


Вступление


Началось все с того, что была поставлена задача отменять последнее действие в приложении при встряхивании устройства. Но как понять, что случилось это самое встряхивание? Через пару минут изучения вопроса стало ясно, что надо подписываться на события от акселерометра и дальше пытаться как-то определить, что устройство встряхнули.
Обнаружились и готовые решения. Все они были довольно похожи, но в чистом виде они меня не устраивали, и я написал собственный «велосипед». Это был класс, который подписывался на события от сенсора и менял свое состояние по мере их поступления. Потом пару раз я и мои коллеги подкручивали шестеренки этого велосипеда, и в результате он стал напоминать нечто из «Безумного Макса». Я пообещал, что, как выдастся свободное время, приведу это безобразие в порядок.

И вот, читая недавно статьи по RxJava, я вспомнил про эту задачу. «Хм, — подумал я, — RxJava выглядит очень подходящим инструментом для такого рода проблем». Не откладывая в долгий ящик, взял и написал решение на RxJava. Результат меня поразил: вся логика заняла 8 (восемь!) строк! Я решил поделиться своим опытом с другим разработчикам. Так появилась на свет эта статья.

Надеюсь, этот простой пример поможет принять решение тем, кто размышляет о применении RxJava в своих проектах.

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

Приступим!
Читать дальше →

Защита от протечек с блекджеком и счетчиками

Reading time18 min
Views58K
Приветствую. Есть такая штука — гидролок\нептун\авквасторож — системы перекрытия подачи воды, если происходит не контролируемая утечка. Принцип простой — датчик воды + автоматика + пара кранов с электроприводами. Но дьявол как обычно в деталях: как устроены краны, как устроены датчики протечки и почему один стоит 50 рублей, а другой 500р. На все это дело навернут килограм макетингового булшита, упаковка вырви глаз и т.д.

В рассказе пройдусь по кирпичикам системы, чем руководствовался в выборе. Вся система строится на заводских датчиках и самодельном контроллере на базе Particle (ex.Spark) Photon (такая esp8266 у которой облачная IDE на wiring из коробки), база девайса stm контроллер + wifi модуль от броадкома. Все это завязано на openhab сервер на Orange Pi One.


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

Управление сценариями освещения с помощью Arduino

Reading time4 min
Views31K
Причины появления этого проекта по сути две. Одна — это систематически перегорающие лампы в прихожей. Вторая — это имеющийся опыт работы с системами автоматизации на базе промышленных программируемых контроллеров (проектирование систем АОВ, АХС, АСДУ и т. д.) и желание применить эти знания во благо своих домочадцев.

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

Беглый взгляд на Async-Await в Android

Reading time3 min
Views12K
От переводчика

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


Kotlin версии 1.1 принесет в язык coroutin'ы, которые позволяют приостанавливать вычисления в какой-то точке, а затем продолжить их позднее. Очевидный пример этой возможности — async-await, который был добавлен в C# несколько лет назад.


Каждый android разработчик знает, что когда мы имеем дело с сетевыми запросами или другими I/O задачами, то нам необходимо удостовериться, что не происходит блокировка основного потока, а так же, что мы не трогаем UI из фонового потока. На протяжении многих лет приходят и уходят десятки приемов. В этой статье перечислены наиболее популярные, и показаны примеры удобства, которое несет с собой async-await.

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

Дональд Кнут о первых шагах в программировании: Как я провел лето с компьютером, а не с девушками (19,20,21,22/97)

Reading time11 min
Views16K
«Суть в том, что это руководство по эксплуатации IBM Model 650 было довольно глупым. Оно и подтолкнуло меня к программированию.»

image


Как я заинтересовался компьютерами? У меня была стипендия на обучение в Кейсовском Технологическом институте, но она покрывала не полную стоимость обучения, а только лишь часть, и поэтому мне пришлось устроиться на работу на неполный рабочий день. У моих родителей не было денег, и я пошел работать в Департамент статистики. Одной из моих обязанностей было управление сортировальной машиной, механической машиной IBM для сортировки перфокарт, и это было довольно увлекательно. Нужно было взять перфокарты и поместить в машину, которая направляла их по разным карманам, затем достать перфокарты в определенном порядке и после проверить результаты и начертить графики. Так что, я чертил графики для Департамента статистики.

Практическое использование ROS на Raspberry Pi — часть 1

Reading time4 min
Views24K
Добрый день, уважаемые читатели Хабра!
Я начинаю цикл статей о практическом использовании ROS на Raspberry Pi для роботехнических проектов в связке с Arduino. Данный цикл имеет следующую структуру:
  1. Установка и настройка рабочего окружения
  2. Компьютерное зрение с RPi Camera Board
  3. Управление роботом с клавиатуры с помощью teleop
  4. Управление роботом с помощью игрового контроллера PS3 Dualshock

Кому интересно, прошу под кат.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1

Reading time14 min
Views128K

Введение


Не так давно мой отдел столкнулся с трудностями поиска новых инженеров программистов для разработки встроенного ПО. Опытным и умным не нравился уровень зарплаты, а молодых просто нет в нашем городе. Поэтому под патронажем нашей доблестной глобальной компании со штаб квартирой где-то в Сент Луисе, мы начали сначала набирать студентов в интернатуру, а потом, решили пойти другим путем и сделать целых два курса по разработке ПО, а уже там самим выбирать самых “толковых” если понадобятся вдруг новые сотрудники. Это намного дешевле и позволяет охватить максимальное количество претендентов.
Немного отступлю от темы, сам я программировал последний раз очень давно, и вообще больше на С#, а последний глобальный проект на микроконтроллере (PIC16 на зыке Си) был сделан в далеком 2007 году.
Поэтому мне предстояло разобраться с современными микроконроллерами, языком С++ и операционной системой реального времени.
Конечно все наши проекты уже сейчас используют ОСРВ и пишутся на С++, но как разработчик я в них не учувствую, а занимаюсь тунеядством управлением проектами разработки такого ПО.

Выбор


Времени у меня на все про все было дано 1 месяц. С начала июня 2015 до начала июля 2015, потому что потом я собирался в отпуск, а после отпуска обычно полно работы. Надо было делать все быстро и четко.
Немного проконсультировавшись с коллегами, выяснил, что модное направление ARM Cortex различные ядра и из доступных отладочных плат можно заказать Olimex STM32P152 которые стоили 25 долларов. Они пришли очень быстро — 6 плат по цене примерно 2000 рублей. Стоит заметить, что эти платы были закуплены нами для университета, где собственно и будет проходить этот курс.
image
Читать дальше →

STM32F1хх — продолжаем лечение от ардуинозависимости при помощи LCD

Reading time14 min
Views127K
Добрый день, уважаемые хабровчане. В своей прошлой статье я рассмотрел применение замечательных микроконтроллеров STM32F1xx на примере управления сервоприводами. В этой статье мы обратимся к более интересному вопросу – управлению цветным графическим LCD-дисплеем. Помимо стандартной работы с дисплеем я постараюсь осветить вопросы использования особенностей микроконтроллеров STM32F для эффективного решения данного вопроса. Итак, начнем.
Читать дальше →

STM32F1xx — лечимся от ардуинозависимости вместе

Reading time14 min
Views269K
Добрый день, уважаемые хабровчане!
После длительного перерыва, связанного с защитой дипломного проекта в Бауманке, я снова вернулся к написанию статей. Так как с недавнего времени я занялся 32-битными микроконтроллерами серии STM32F на ядре ARM Cortex-M3, об этом и пойдет мой рассказ. Мне статья поможет систематизировать знания об этих замечательных микроконтроллерах, а вам, я надеюсь, послужит одной из ступеней на пути к их использованию и развеет страхи и сомнения, которые всегда возникают после уютных 8-битных AVRок при упоминании страшных 32-битных монстров.
Итак, почему Cortex, чем же плохи АVR?
Читать дальше →

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

Reading time10 min
Views151K
Добрый день, уважаемые хабровчане. В своих прошлых статьях (STM32F1xx — лечимся от ардуинозависимости вместе, STM32F1хх — продолжаем лечение от ардуинозависимости при помощи LCD) я постарался осветить вопросы перехода с 8-битных микроконтроллеров на новые 32-битные STM32F1xx.
В процессе работы с ними, я, разумеется выбирал инструменты себе «по руке» — то есть, старался найти наиболее удобные для меня отладочные платы, программаторы, IDE. В этой статье я хочу поделиться с вами несколькими соображениями на этот счет, а также описать процесс сборки в выбранной IDE операционной системы реального времени FreeRTOS.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)

Reading time20 min
Views28K

Введение


В двух предыдущих частях STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1 и STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2 мною уже были реализованы требования SR0, SR7, SR4 и SR6. Опять нужно вспомнить, какие вообще требования есть.
SR0: Устройство должно измерять три параметра (иметь три переменных): Температуру микропроцессора, Напряжение VDDA, Напряжение с переменного резистора
SR1: Устройство должно выводить значение этих переменных на индикатор.
SR2: Единицы измерения для Температуры микропроцессора — градусы Цельсия, для остальных параметров — вольты.
SR3: При нажатии на кнопку 1, на индикаторе должен показываться экран со следующей измеряемой переменной,
SR4: При нажатии на кнопку 1 Светодиод 1 должен изменять свое состояние
SR5: При нажатии на кнопку 2, на индикаторе должен поменяться режим отображения переменных с постоянного показывания переменной на последовательное (менять экраны раз в 1.5 секунды) при следующем нажатии с последовательного на постоянное,
SR6: При нажатии на кнопку 2 светодиод 2 должен менять свое состояние.
SR7: Светодиод 3 должен моргать раз в 1 секунду.

Значит остались самые «вкусные» требования связанные c отображением всей измеренной информации на индикаторе: SR1, SR2, SR3, SR5. Ну что же начнем.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2

Reading time10 min
Views29K

Введение


В прошлой публикации STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1 я остановился на том, как уехал на озеро как были релизованы требования SR7, SR4 и SR6. Напомню, какие требования вообще есть для проекта:
SR0: Устройство должно измерять три параметра (иметь три переменных): Температуру микропроцессора, Напряжение VDDA, Напряжение с переменного резистора
SR1: Устройство должно выводить значение этих переменных на индикатор.
SR2: Единицы измерения для Температуры микропроцессора — градусы Цельсия, для остальных параметров — вольты.
SR3: При нажатии на кнопку 1, на индикаторе должен показываться экран со следующей измеряемой переменной,
SR4: При нажатии на кнопку 1 Светодиод 1 должен изменять свое состояние
SR5: При нажатии на кнопку 2, на индикаторе должен поменяться режим отображения переменных с постоянного показывания переменной на последовательное (менять экраны раз в 1.5 секунды) при следующем нажатии с последовательного на постоянное,
SR6: При нажатии на кнопку 2 светодиод 2 должен менять свое состояние.
SR7: Светодиод 3 должен моргать раз в 1 секунду.
Читать дальше →

Подключение oled дисплея с контроллером SSD1306 к STM32 по I2C

Reading time3 min
Views141K
Многие, наверное, знают о таких маленьких дешёвых (меньше $3) OLED дисплеях, которые можно найти в огромном ассортименте на ebay или aliexpress. В интернете существует множество различных статей о том, как подключать эти дисплеи к Arduino и другим МК, но для STM32f10x затруднительно найти даже библиотеку. Поэтому я решил написать эту статью.

Данный дисплей имеет разрешение 128х64 пиксела и контроллер SSD1306 и подклчается к микроконтроллеру по интерфейсу I2C.

«Заводим» радиоуправляемые розетки без пульта

Reading time5 min
Views80K


Совершенно случайно наткнулся в каталоге Ч-и-Д на аттракцион невиданной щедрости. Сейчас дополнительные беспроводные розетки для комплекта Velleman 7500-3B стоят всего 100 рублей за штуку. Но это за розетку без пульта, то есть с несколько неясными перспективами ее использования, поскольку до вскрытия не очень понятно, что там внутри, а образца управляющих кодов нет. Если же закладываться на пульт, то предложение сразу перестает быть таким интересным.

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

Перед посещением магазина я теоретически подковался. То есть — поискал, что есть в этом нашем интернете на тему указанных розеток. И практически успокоился, когда выяснил, что они совместимы (Velleman WRS3B) с библиотекой RC-Switch, которую уже давно использую в домашнем контроллере для управления розетками, выполнения команд по сигналам радиопультов и обмена данными с периферией.

Это вселяло надежду.

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

Зубочистка-детектив раскрывает секрет радиопротокола

Reading time17 min
Views54K
Это небольшая зарисовка к сюжету об "Удобном доме". Просто иллюстрация того, что даже с не слишком большими знаниями и опытом можно кое-чего добиться. Иными словами, достаточно настойчивый дятел задолбит любое дерево.

Началось все с простого желания управлять светом в доме с помощью Arduino. В том числе — выключателями Livolo, купленными еще до этой безумной затеи с домашней автоматикой. Но, в отличие от радиорозеток, «щелкать» ими с помощью моей любимой библиотеки RC-Switch не получилось, а поиск других готовых решений показал их полное отсутствие.

Да и китайцы производители-продавцы на вопрос о протоколе отвечали, что эта штука работает на частоте 433 МГц. Не слишком полезная информация. Впрочем, не буду изображать святую невинность. Я ведь вместе с Arduino купил и пару блоков по четыре реле, чтобы, если что, банально замыкать избранные кнопки пультов. И это, кстати, довольно популярное решение, потому что быстро, относительно дешево и очень сердито.

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

Мой удобный дом

Reading time14 min
Views309K
Относительно недавно здесь был текст про домашнюю автоматику, а в комментариях один товарищ высказал идею, о которой я тоже думаю очень-очень давно. Суть в том, что автоматика должна работать так, чтобы этого, по возможности, вообще не было заметно.

То есть, умный дом — это дом, который может все. А удобный дом — это дом, который все, что может, делает сам.

Давайте сначала я просто похвастаюсь тем, что умеет мой дом сейчас, а вы решите, имеет ли смысл читать про мой местами горький (а местами очень даже ничего) опыт дальше, ок?
Читать дальше →

Отладочная плата Orange Pi PC Allwinner H3 всего за $15

Reading time2 min
Views71K
Orange Pi PC Allwinner H3 Top

Ранее компания Shenzhen Xunlong Software CO. использовала процессоры Allwinner A20 и Allwinner A31s в отладочный платах Orange Pi. Но недавно компания представила модель Orange Pi PC на базе процессора Allwinner H3, которая стоит существенно дешевле предыдущих, и составляет $15. Низкая стоимость платы была достигнута, благодаря низкой цены самого процессора Allwinner H3, и составляет $6.
Читать дальше →

Orange Pi PC — полноценный мини-пк за 15 долларов на Linux

Reading time11 min
Views267K
image

Уже не раз замечал интерес к новой плате-клону всем известной Raspberry Pi от китайских энтузиастов из компании Xunlong под звучным названием Orange Pi PC. Прославилась она, в основном, своим неплохим «железом» (4-ядерный процессор Allwinner H3, 1Gb RAM и GPU Mali-400MP2 600MHz), наличием неплохого функционала (HDMI, AV, Ethernet, 3 USB, microUSB-OTG, инфракрасный порт для управления с пульта и GPIO-гребенка, по словам разработчиков, якобы «100% совместимая с Raspberry Pi), а главное — ЦЕНА. Создатели оценили свой девайс всего лишь в $15, ПЯТНАДЦАТЬ долларов, Карл! (скоро мы увидим, что это на самом деле весьма лукавое заявление, и конечный девайс стоит дороже).

Итак, давайте рассмотрим данную плату повнимательнее.

В рунете уже есть на нее обзоры, но все они представляли из себя нечто вида „установил андроид и подключил к телеку на кухне“. Я предлагаю взглянуть на плату с другой стороны, а именно — установить туда линукс, поюзать её как настоящий ПК, и даже немного поиграть.

Для тех, кому лень читать полностью, прорезюмирую:

Интересная штука, на данный момент вполне юзабельная, но имеется огромное количество огрехов и косяков, требующих допиливания напильником. Покупать только на свой страх и риск! Простому пользователю, рассчитывающему иметь готовое решение „из коробки“, я бы посоветовал обратить внимание на ТВ-боксы на базе Android или Windows. Продвинутому пользователю, знакомому с Linux, который не боится неизведанных челенджей в сыром продукте, и которому хотелось бы иметь неттоп для интернет-серфинга, работы с документами, программирования и скромных игр — must have! Особенно с учетом цены.
Читать дальше →

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Backend Developer, Application Developer
Senior
Git
SQL
OOP
Java
Docker
Spring Boot
Java EE
Intellij IDEA
Hibernate
Java Spring Framework