Pull to refresh
139
0

Тролль — эрудит

Send message

Несколько примеров практического использования RxJava

Reading time11 min
Views32K
RxJava — это реализация ReactiveX для Java — библиотеки для асинхронной обработки потоков данных. Паттерн observable на стероидах, как они сами пишут. В интернете, в том числе на Хабре, есть много «введений в RxJava». Я хочу привести несколько примеров реальных задач. Они не очень сложные, но возможно кто-то увидит какие-то сходства со своими и задумается.

Собственно, задачи:

1. Простое клиентское TCP-соединение. Есть протокол поверх TCP/IP, нужно сформировать сообщение, подключиться к удаленному узлу, если еще не подключился, передать сообщение и прочитать ответ. Плюс обработка ошибок, проверка таймаутов, повтор отправки в случае неудачи. Жестких требований к производительности нет, трафик не большой.

2. Есть двигатель и некоторый датчик. Нужно произвести сканирование — пройтись двигателем по заданной траектории: послать двигатель к точке, дождаться, когда он к ней приедет, снять показания датчика, отобразить точку на графике (в GUI потоке), поехать к следующей точке…

3. Полученные после сканирования данные нужно обработать (условно длительный вычислительный процесс) и засунуть в pdf-отчет (условно длительный процесс ввода-вывода) вместе с изображением графика и данными введенными пользователем (GUI поток).
Решения с комментариями
Total votes 28: ↑26 and ↓2+24
Comments3

Двигатель EmDrive проверят в космосе

Reading time4 min
Views44K

Спутник компании Cannae из шести юнитов CubeSat. Рендер: Cannae Inc.

Эксперты и энтузиасты с 2003 года спорят о возможности существования гипотетического «волшебного» электромагнитного двигателя EmDrive. Принцип его работы очень простой: магнетрон генерирует микроволны, энергия их колебаний накапливается в резонаторе высокой добротности, а факт наличия стоячей волны электромагнитных колебаний в замкнутом резонаторе специальной формы является источником тяги. Так создаётся тяга в замкнутом контуре, то есть в системе, полностью изолированной от внешней среды, без выхлопа.

С одной стороны, этот двигатель вроде бы нарушает закон сохранения импульса, на что указывают многие физики. С другой стороны, британский изобретатель Роджер Шойер (Roger Shawyer) свято верит в работоспособность своего EmDrive — и у него много сторонников (см. несколько сотен страниц обсуждений на форуме NASASpaceFlight). Проведённые испытания на Земле (результаты 22 испытаний) как будто подтверждают работоспособность EmDrive.

Пришло время положить конец спорам.
Читать дальше →
Total votes 46: ↑39 and ↓7+32
Comments277

Тернистый путь к продажам на Themeforest.net — Часть 2

Reading time5 min
Views14K

В сентябре прошлого года на маркетплейсе Themeforest.net появился раздел Sketch Templates. Изначально эта категория экспериментальная и закрыта для большинства авторов, поскольку сами Envato не были уверены в потребности скетч темплейтов. Они разослали достойным по их мнению авторам письма с предложением разработать шаблоны для данной категории. Таким образом наполнили каталог продуктами высокого качества. Хоть сам графический редактор Sketch.app относительно молодой, однако постоянно растущая многомиллионная армия пользователей, основная масса которых UI/UX дизайнеры, сформировала спрос на данный вид товара.



Нет причин не быть в числе первых


На момент появления категории Sketch Templates на нашем темфорестовском аккаунте не было заэпрувленных шаблонов, мы активно работали над первым HTML шаблоном. Я решил, что создание Sketch шаблона – это неплохая возможность наконец-то “засветить” аккаунт, поскольку конкуренция небольшая, а потребность в шаблонах есть. Я даже писал письмо в поддержку с просьбой залить шаблон в данную категорию. Однако ответ был однозначен: к сожалению, категория Sketch Templates находится в стадии бета-тестирования, а это значит, что добавлять шаблоны в категорию можно исключительно по приглашению.


Читать дальше
Total votes 13: ↑13 and ↓0+13
Comments11

Рефакторинг банковской ИТ-инфраструктуры и как мы дружили ИТ-команду с ИБ-командой

Reading time6 min
Views19K


Один банк, российский филиал крупной европейской банковской группы, поставил перед нами задачу сегментировать сеть. Его серверы были расположены в наших дата-центрах. На момент начала работ у заказчика была отдельная инфраструктура для собственно финансовых операций и физически отделённая от неё большая одноранговая сеть пользователей на пару крупных узлов и множество филиалов. Первая работала как часы, а со второй были сложности. Кроме того, как раз начиналась внутренняя реорганизация под требования 152-ФЗ о персональных данных.

Чтобы понять, как лучше организовать новую сеть, мы запросили соответствие IP-адресов и сервисов на них. Точнее, в конечном итоге нам нужна была карта с тем, что и куда гоняет трафик, чтобы было понятно, что разрешать, а что запрещать.

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

Так мы начали разбирать весь трафик сети.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments18

Правила внедрения TDD в старом проекте

Reading time12 min
Views21K
Статья «Скользящая ответственность паттерна Репозиторий» подняла несколько вопросов, на которые очень сложно дать ответ. Нужен ли репозиторий, если абстрагироваться от технических деталей полностью невозможно? На сколько сложным репозиторий может быть, чтобы его написание оставалось целесообразным? Ответ на эти вопросы различается в зависимости от акцента, который делается при разработке систем. Наверно, самый сложный вопрос: нужен ли, вообще, репозиторий? Проблема «текучей абстракции» и рост сложности кодирования с увеличением уровня абстракции не позволяют найти решение, которое удовлетворяло бы оба лагеря. Например, в репортинге intention design приводит к созданию большого числа методов для каждого фильтра и сортировки, а generic решение создает большой оверхед по кодированию. Продолжать можно бесконечно…

Для более полного представления я взглянул на проблему абстракций со стороны применения их в уже готовом коде, в legacy code. Репозиторий, в таком случае, нас интересует только, как инструмент для достижения качественного и безбажного кода. Конечно, этот паттерн — не единственное, что необходимо для применения TDD практик. Наевшись «невкусной еды» в нескольких больших проектах и наблюдая за тем, что работает, а что нет, я вывел для себя несколько правил, которые мне помогают следовать TDD практикам. С удовольствием выслушаю конструтктивную критику и иные приёмы внедрения TDD.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments86

Почему у нас до сих пор нет аккумуляторов нового поколения?

Reading time3 min
Views60K


Буквально каждый месяц в течение многих лет мы слышим о том, что какая-то компания разработала аккумулятор нового типа. В новостях такого рода говорится обычно, что вскоре новый аккумулятор попадет на рынок, а электронные устройства с такими батареями смогут работать едва ли не годы. В начале этого года представители Министерства энергетики США даже заявили, что «найден святой Грааль индустрии аккумуляторов».

К сожалению, на самом деле ничего не меняется. Литий-ионные батареи остаются прежними, продолжительность работы умных часов, телефонов, планшетов и ноутбуков также почти не изменяется. А ведь создать аккумуляторы нового поколения пытаются многие стартапы. Часть добивается каких-то результатов, публикует очередную новость. Затем такой стартап обычно куда-то исчезает. Совпадение или заговор? Скорее первое, чем последнее.
Читать дальше →
Total votes 39: ↑31 and ↓8+23
Comments277

Эй, это я вон там?

Reading time8 min
Views49K


Disclaimer: данный пост является переводом заметки профессора Вилеейанура Рамачандрана, о феномене внетелесного опыта и различных аномалиях, связанных с восприятием «себя». Хотя оригинал и был опубликован в мае 2010г, статья содержит ряд занимательных примеров из клинической практики и в целом показалась довольно интересной, а посему захотелось ею поделиться.

Если и существует что-то, в чём вы можете быть уверены касательно самого себя, так это то, что ваше «я» привязано к вашему собственному телу и принадлежит только вам. Личность, которой вы себя ощущаете, находится здесь и сейчас, и нигде больше.

Но даже самые основы вашего существования могут быть поставлены под вопрос при определенных обстоятельствах. Ваше чувство пребывания в собственном теле, как оказалось, всего лишь тонкая внутренняя конструкция, как и любое другое переживание, и точно также подвержено иллюзиям и искажениям. Даже ваше чувство «обладания» собственной рукой фундаментально ничем не отличается, в терминах эволюции и неврологии, от чувства обладания вашей машиной (если вы калифорниец) или вашим ружьём (если вы республиканец).
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments130

О чём молчит Google и почему вам стоит использовать Apache HttpComponents в Android

Reading time7 min
Views24K
Эту статью нужно было публиковать гораздо раньше (почти на шесть лет), сэкономив тем самым Android разработчикам огромное количество месяцев бессмысленной разработки — но увы, не всегда есть на это время.

Введение


Если вы разрабатываете под Android, то наверняка сталкивались с тем, что открываете вы своё приложение, которое отлично работало несколько лет, и тут внезапно оказывается, что Apache httpComponents стали deprecated, и их не рекомендуется использовать. Сначала давайте разберём, что же произошло, а потом сделаем выводы, что делать.
Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments40

Срочно требуется VPS с SLA: анализ услуг 32 российских ЦОД

Reading time4 min
Views8.1K
image

Для решения задач мониторинга качества сайтов клиентов сервиса SLAMON у меня возникла необходимость в выборе ЦОД в разных регионах России. Для этого воспользовался каталогом российских ЦОД и на основании данных с сайтов поставщиков составил сравнительную таблицу предлагаемых услуг (таблица 1).

Что меня интересовало в первую очередь?
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments26

CEPH-кластер: хронология работ по апгрейду нашего файлового хранилища на новую архитектуру (56Gb/s IB)

Reading time10 min
Views22K


Запустив наше облако, мы стали предоставлять сервис хранения, аналогичный S3 Амазона (с совместимым API, чтобы российские заказчики могли использовать стандартные клиенты для работы с S3, изменив только endpoint для подключения). Основная задача сервиса — хранение снапшотов виртуальных машин и различных файлов клиентов. Амазон был взят за образец, куда надо развиваться, и в начале 2014 года стало понятно, что имеющееся файловое хранилище устарело, заказчики требовали современных фичей, недоступных у нас и так нравящихся им у AWS. Но доработка существующего решения светила огромными трудозатратами, поэтому было принято решение построить новое S3-совместимое хранилище с нуля.

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

Это было чертовски долго, но всё прошло спокойно.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments44

Переход от монолита к микросервисам

Reading time5 min
Views36K

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


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

Читать дальше →
Total votes 36: ↑30 and ↓6+24
Comments30

Цены на популярную электронику прошлого в сегодняшних деньгах: 1970-е годы

Reading time7 min
Views34K
Зимой 2014 года в России цены на электронику увеличились вдвое. Несмотря на это компьютеры, телевизоры и другие гаджеты стоят сейчас гораздо дешевле, чем их аналоги в 1970-е годы. Именно тогда стали появляться первые потребительские персональные компьютеры по цене автомобилей и часы по цене компьютера, первые игровые приставки и инженерные калькуляторы.

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


Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments78

Клоны овечки Долли помогают доказывать безопасность SCNT-клонирования

Reading time3 min
Views17K

Животные чувствуют себя ничуть не хуже обычных овец, и живут не меньше




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

Доказательства того, что это не так, были опубликованы биологом Кэвином Синклером и его коллегами в журнале Nature Communications. Они обнаружили, что взрослые овцы Дебби, Дениз, Диана и Дейзи, все они — клоны Долли, вполне здоровые животные. Никаких признаков преждевременного старения у овечек нет.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments180

Космические жилища: как мы будем жить в космосе

Reading time9 min
Views34K
Крупнейшие державы реализовали уже несколько программ, предполагающих долговременное пребывание человека на борту космических аппаратов. Пятнадцать лет вокруг Земли вращается Международная космическая станция. Но можно ли такие проекты назвать полноценным поселением? Люди способны прожить в условиях микрогравитации и тяжёлых психических нагрузок год, но станции не приспособлены для постоянной жизни с точки зрения здоровья экипажа, а о рождении детей и речи пока не идёт. Станции не полностью автономны, им необходим постоянный приток грузов с Земли.

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

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


Кадр из фильма «Интерстеллар»
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments98

Почему новые антибиотики не выходят на рынок

Reading time7 min
Views27K


В тёмных глубинах озера Мичиган, на глубине 5 метров, Брайан Мёрфи [Brian Murphy] изучает заросли водорослей и ярко раскрашенных губок, держащихся за борта старого деревянного грузового судна.

Экипированного в снаряжение для ныряльщиков, с кислородным баллоном на спине, Мёрфи можно спутать с бесстрашным археологом. Но вместо изучения артефактов, спрятанных среди почти 1500 затонувших кораблей, Мёрфи ищет новые антибиотики. Эта охота за сокровищами заставляет его погружаться на глубины до 40 метров в самых экстремальных местах планеты.

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

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

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

Но даже если эти губки принесут нам антибиотики будущего, существует очень много препятствий, которые помешают нам использовать их для лечения болезней.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments34

Переверните Армстронга или история трансляции первой лунной прогулки

Reading time5 min
Views33K

Когда 530 миллионов человек прильнули к экранам своих телевизоров, чтобы увидеть первую высадку человека на Луну, кроме героев дня Армстронга и Олдрина были еще десятки и сотни незаметных атлантов, которые держали прямую ТВ-трансляцию на своих плечах. И если одни проявили высочайший профессионализм, то другие допускали глупые и сейчас выглядящие забавными ошибки. Из-за одной такой ошибки, например, первые тридцать секунд изображение было вверх ногами. Даже небольшое погружение в историю первой прямой трансляции с поверхности Луны дарит нам коллекцию удивительных историй.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments54

Наши грабли тренингов в виртуальной реальности (и проблемы инженеров с руками с мою голову)

Reading time5 min
Views13K


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

Мы решили сделать возможный максимум по отработке чрезвычайных ситуаций в нашем Tier III-дата-центре и поймали такое дикое количество грабель за пару лет, что просто не можем не поделиться.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments26

Эффект кобры. Кейлоггер на eBay и запрет на копипаст пароля

Reading time4 min
Views23K


Во времена Британской империи у англичан возникла маленькая проблема на Индийском субконтиненте — кобры. Оказалось, что повсюду чертовски много этих рептилий. А ещё выяснилось, что они ядовиты. Это не нравилось колонистам, некоторые из них умирали. Поэтому британские власти придумали отличный выход. За каждую убитую кобру туземцам стали выплачивать небольшое вознаграждение. Казалось бы, проблема решена.

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

Оттуда пошло выражение эффект кобры. Ситуация, когда принятое для исправления проблемы решение не исправляет эту проблему, а ведёт к прямо противоположному результату.
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments84

Федеральный суд США не считает приватной информацию на персональном компьютере

Reading time5 min
Views25K


История злосчастного сайта Playpen уже не раз упоминалась на Geektimes [1], [2], однако с каждым месяцем судебный процесс над посетителями сайта становится, скажем так, всё более инновационным.

Так, сенсационное решение было принято на днях, 23 июня, федеральным судьёй Восточного округа штата Вирджиния. Окружной судья Генри Кок Морган-младший постановил, что ФБР имеет право снимать любую информацию с персональных компьютеров, находящихся дома у подозреваемого и защищённых паролем, без ордера. Подобные действия ФБР не могут трактоваться как нарушение Четвёртой поправки к Конституции США, а полученные таким способом доказательства должны быть приняты судом во внимание.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments97

Бактериофаг способен поражать иммунную систему бактерий, используя «украденные» CRISPR-цепочки

Reading time5 min
Views12K
Иммунная система человека невероятно сложна и поразительно эффективна. В режиме реального времени она отражает массу внешних угроз, знакомых и новых, учась при этом оперативно распознавать незнакомые доселе опасности. Каскад сложных биохимических реакций позволяет нам все время совершенствовать приобретенный иммунитет, вырабатывая специализированные антитела, моментально реагирующие на уже знакомую опасность прежде чем инфекция распространится на весь организм. Но, как показали исследования, проведенных за последние несколько лет профессором Эндрю Камилли, а совсем недавно, известным вирусологом Кертисом Саттлом, вирусы научились бороться с нами нашим же оружием. О том, какие механизмы они используют для этой цели мы расскажем в сегодняшней публикации.

image
Подробнее
Total votes 27: ↑21 and ↓6+15
Comments12

Information

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