Pull to refresh

Вебинар по Android-разработке: Model View-паттерны презентационного слоя

Reading time 1 min
Views 261
KTS corporate blog Development of mobile applications *Development for Android *Kotlin *

Привет!

Всем интересующимся, изучающим и практикующим Android-разработку:
приглашаем в следующий вторник, 21 февраля, на бесплатный вебинар, посвящённый паттернам MV*

Готовые унифицированные решения, такие как паттерны, облегчают коммуникацию между разработчиками, позволяют ссылаться на известные конструкции, снижают количество ошибок. 

Паттерн презентационного слоя используется в каждом Android-приложении. Если эта тема пока кажется вам сложной — не беда, приходите на наш вебинар 21 февраля, где мы всё объясним и научим пользоваться этими страшными приёмами.

Посмотреть подробнее
Total votes 10: ↑9 and ↓1 +8
Comments 0

Вебинар по Android-разработке: Model View-паттерны презентационного слоя

Reading time 1 min
Views 173
KTS corporate blog Development of mobile applications *Development for Android *Kotlin *

Привет!

Сегодня в 18:00 мы приглашаем всех интересующихся, изучающих и практикующих Android-разработку, на бесплатный вебинар, посвящённый паттернам MV*

Паттерн презентационного слоя используется в каждом Android-приложении. Если эта тема пока кажется вам сложной — не беда, приходите на наш вебинар, где мы всё объясним и научим пользоваться этими страшными приёмами. Ведущий — Максим Мялкин, руководитель мобильной разработки KTS.

Читать далее
Total votes 12: ↑10 and ↓2 +8
Comments 3

Пробуем Qt 4.6: Qt Animations и State Machine

Reading time 8 min
Views 14K
Qt *
image
На днях вышло так называемое «технологическое превью» (technological preview) Qt 4.6, которое позволяет уже сейчас попробовать новые фичи, которые войдут в релиз 4.6 этого замечательного фреймворка. Перечислять новшества я не буду — они были достаточно хорошо освещены в этом топике, а подробнее остановлюсь на двух из них: State Machine и Qt Animation Framevork.

Итак, что же они из себя представляют?
Я хочу прочитать длинный пост и посмотреть 4 коротеньких видео
Total votes 54: ↑52 and ↓2 +50
Comments 56

Qt + Kinetic = Eye-candy за полчаса

Reading time 5 min
Views 3K
Qt *
В процессе разработки новой версии QutIMа возникла потребность переписать систему уведомлений, так как старая имела множество недостатков.

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

Небольшое видео с демонстрацией возможностей:



неплохо, правда?
Total votes 36: ↑33 and ↓3 +30
Comments 41

Quantum Leaps QP и UML statecharts

Reading time 6 min
Views 7.1K
Website development *UML Design *
Sandbox

Предисловие


Данная статья, как мне кажется, будет интересна тем, кто знаком с UML диаграммами состояний и последовательности (statecharts diagram и sequence diagram), а также с событийно-ориентированным программированием (event-driven programming).

Вступление


Кроссплатформенный фреймворк QP (Quantum Platform) от компании Quantum Leaps представлен его создателями как средство разработки RTOS на C/C++. Он позволят существенно увеличить скорость разработки и надежность приложений, а также имеет мощный инструментарий по отладке и логированию. Ко всему этому добавляется еще и то, что QP является очень гибким и легким: разделен на множество модулей, почти каждый из которых можно реализовать самому при сборке фреймворка или воспользоваться предложенным решением; множество настроек выполняется во время прекомпиляции.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 8

Реализация графического интерфейса как Конечного Автомата

Reading time 11 min
Views 9.8K
Java *
Придя в большой проект, использующий в качествe графического интерфейса Swing, я понял, что разобраться в логике и связах между компонентами JDialog или JFrame довольно таки не просто. И всё то время, что я разбирался с этим кодом я пытался найти какое-то универсальное решение, которое бы позволило избежать сложности связей между элементами интерфейса.

Читать дальше →
Total votes 26: ↑22 and ↓4 +18
Comments 11

Простые стейт-машины на службе у разработчика

Reading time 8 min
Views 171K
Programming *C# *
Представьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.

Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.

var opened = false;

Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:

var opened = false;
var animating = false;

function onClick(event) {
  if (animating) return;
  if (opened) close();
  else open();
}

Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:

if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }

Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.

Знакомьтесь, это Вася.


Читать дальше →
Total votes 114: ↑92 and ↓22 +70
Comments 96

Основы теории вычислительных систем: машина с конечным числом состояний

Reading time 8 min
Views 29K
Programming *
Translation
Теория вычислительных систем — это то, что позволяет нам программировать. Однако, можно писать программы и без представления о концепциях, скрывающихся за вычислительными процессами. Не то, чтобы это было плохо — когда мы программируем, то работаем на намного более высоком уровне абстракции. В конце концов, когда мы ведём машину, то концентрируемся только на двух или трёх педалях, переключателе передач и руле. Для повседневной неспешной езды этого более чем достаточно. Однако, если мы хотим управлять автомобилем на пределе его возможностей, то тут нужно знать гораздо больше, чем просто три педали, КПП и руль.

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

Цель этой статьи — представить некоторые фундаментальные основы вычислений. Если это окажется интересным, то в дальнейшем я могу написать более продвинутый топик на эту тему, но прямо сейчас я хочу просто рассмотреть логику простейшего абстрактного вычислительного устройства — машины с конечным числом состояний (finite state machine).
Читать дальше →
Total votes 24: ↑18 and ↓6 +12
Comments 11

Что такое switch и как с ним бороться?

Reading time 3 min
Views 8.7K
Programming *
Sandbox
Программа без ветвления — очень простая и странная программа. Программа должна думать, просчитывать варианты, по-разному реагировать на различные внешние воздействия и вообще не быть однообразной. А это все невозможно без ветвлений. Ветвления реализуются при помощи опреаторов if и switch. Так зачем е с ним бороься?
Читать дальше →
Total votes 25: ↑8 and ↓17 -9
Comments 18

Еще одна простая стейт машина для Unity

Reading time 6 min
Views 21K
Game development *C# *Unity3D *


Хочу поделиться еще одним вариантом реализации стейт машины (конечного автомата) для Unity. Статьи про конечные автоматы в привязке к Unity и/или C# на Хабре уже были, например, вот и вот, но я хочу продемонстрировать несколько иной подход, основанный на использовании компонентов Unity.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 7

Как изобрести велосипед и познакомиться с FRP

Reading time 10 min
Views 18K
Website development *JavaScript *Programming *
Недавно мне выпал шанс заняться веб-приложением для взаимодействия с интерактивной доской (!) для мобильных устройств (!!) на любом стеке технологий, как серверных, так и клиентских (!!!). На этапе прототипа задача представляла собой простейший графический редактор. Заказчик изъявил желание уметь рисовать ломаные каким-нибудь способом, круги, отрезки, произвольные кривые и добавлять текст. Все вроде бы просто, однако, наученный горьким опытом GoF, Фаулера и прочих апологетов всяческих паттернов, я сразу понял, что заказчик лукавит, и что уже через неделю-месяц после прототипа ему понадобится рисовать эллипсы, прямоугольники и кучи прочих ништяков. И все это точно надо будет делать разными способами. По крайней мере, для десктопа и мобил.

Собственно, можно все сделать в лоб (для прототипа-то), но выпали выходные, пауза в задачах текущего проекта, и я решил сделать все по-хорошему. И в первый же вечер — callback hell.

А потом…
Потому что на работе больше заниматься нечем

И вот так я изобрел велосипед...
Total votes 26: ↑20 and ↓6 +14
Comments 5

Workflow в Document Approval System

Reading time 7 min
Views 7.9K
Website development *.NET *C# *
Sandbox
Когда .NET разработчик слышит слова «В проект нужно добавить workflow», то первым приходит в голову идея взять Windows Workflow Foundation.

В 2010 году мы выбрали WF в качестве движка документооборота.

Аргументы просты:
  • Бесплатно;
  • Встроено в Visual Studio;
  • В интернете много информации об использовании WF.

За полтора года (с августа 2010 по февраль 2012) использования WF мы столкнулись с массой разнообразных проблем при реализации требований клиента. В конечном итоге мы были вынуждены отказаться от Windows Workflow Foundation и сделать свою реализацию State Machine.

В этой статье я расскажу об основных проблемах, с которыми мы сталкивались, и как решали (или не решали).
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 20

Как делать парсинг текста голым хардвером, без процессора и без софтвера

Reading time 13 min
Views 38K
Abnormal programming *System Analysis and Design *Regular expressions *FPGA *Programming microcontrollers *
Кто-то парсирует текстовый файл программой на Питоне, другой пишет скрипт с регулярными выражениями на Перле, Си-программист стыдливо возится с буферами и указателями, иногда применяя Yacc и Lex.

А можно ли парсировать текст голым железом? Вообще без программы?

— А как это?, — спросил меня знакомый, — С помощью Ардуино?

— Внутри Ардуино стоит вполне фон-неймановский процессор и работает программа, — ответил я, — Нет, еще более голое железо.

— А-а-а-а, этот, микрокод?, — догадался мой товарищ и взглянул на меня победно.

— Нет, термин «микрокод» использовался для специфической организации процессоров в 1970-е годы, потом его использование сошло на нет, — ответил я и добавил, — Правда есть еще микрооперации в интеловских процессорах, в которые перекодируется x86, но это тоже другое. Нет, я имею в виду парсинг текста устройством, состоящим из логических элементов И-ИЛИ-НЕ и Д-триггерами, как на картинке ниже.

— Невозможно! — воскликнул мой приятель, — в таком устройстве где-то сбоку должен сидеть процессор и хитро подмигивать!

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

— Нуу, машина Тьюринга, — протянул приятель, — это абстракция, типа Демона Максвелла.

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

mfp_srec_parser_fragment
Читать дальше →
Total votes 87: ↑83 and ↓4 +79
Comments 33

Программирование состояний в UIControl

Reading time 4 min
Views 10K
Development for iOS *Objective C *Swift *
Sandbox
Основная проблема, с которой сталкивается программист при реализации какого-то управляющего элемента — выстраивание правильной логики работы этого элемента.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 0

Знакомьтесь, Apache BookKeeper — реплицируемый сервис журналов

Reading time 8 min
Views 4.5K
High performance *Open source *Java *Big Data *Distributed systems *


По роду своей деятельности мне достаточно часто приходится участвовать в проектах, в которых создаются высокодоступные, высокопроизводительные системы для различных рынков — реклама, финтех, сервисы классов SaaS, PaaS. В таких системах применяется вполне устоявшийся набор архитектур и компонентов, которые позволяют эффективно обеспечить соответствие продукта требованиям, например, lambda-архитектура для поточной обработки данных, масштабируемый микросервисный дизайн программного обеспечения, ориентированный на горизонтальное масштабирование, noSQL СУБД (Redis, Aerospike, Cassandra, MongoDB), брокеры сообщений (Kafka, RabbitMQ), распределенные серверы координации и обнаружения (Apache Zookeeper, Consul). Такие базовые инфраструктурные блоки чаще всего позволяют успешно решить большую часть задач и команда разработки не сталкивается с задачами разработки компонентов среднего уровня (middleware), которые, в свою очередь, будут использованы бизнес-ориентированной частью разрабатываемой системы.

Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Comments 1

Реализация стейтмашины на Zend Framework3+Doctine2

Reading time 5 min
Views 1.8K
Zend Framework *Doctrine ORM *
Sandbox

Введение: зачем нужна стейтмашина


В приложениях часто необходимо ограничивать доступ к тем или иным действиям над объектом. Для этого используют RBAC-модули, которые решают задачу ограничения доступа в зависимости от прав пользователя. Остается нерешенной задача управления действиями в зависимости от состояния объекта. Эта задача хорошо решается с помощью конечного автомата или state machine. Удобная стейтмашина позволяет не только собрать в одном месте все правила переходов между состояниями объекта, но и наводит некоторый порядок в коде отделяя правила переходов, проверки условия и обрабочкики и подчиняя их общим правилам.


Хочу поделиться реализацией стейтмашины под Zend Framework 3 с использованием Doctrine 2
для работы с базой данных. Сам проект можно найти по ссылке.


А здесь я хочу поделиться основными заложенными принципами.

Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Comments 14

Стейт-машины на службе у MVP. Лекция Яндекса

Reading time 12 min
Views 16K
Яндекс corporate blog Development of mobile applications *Development for Android *Mobile applications testing *
Модель конечного автомата (finite-state machine, FSM) находит применение в написании кода для самых разных платформ, включая Android. Она позволяет сделать код менее громоздким, неплохо укладывается в парадигму Model-View-Presenter (MVP) и поддаётся несложному тестированию. Разработчик Владислав Кузнецов рассказал на Droid Party, как эта модель помогает в развитии приложения Яндекс.Диск.


— Вначале поговорим по теорию. Думаю, каждый из вас слышал и про MVP, и про стейт-машину, но повторим.
Total votes 24: ↑23 and ↓1 +22
Comments 3

Cохранение состояний в android приложениях

Reading time 5 min
Views 12K
Development of mobile applications *Development for Android *
Sandbox
Сегодня я хотел поделиться с вами еще одним подходом сохранения состояния при разработке android приложений. Не для кого не секрет, что наше приложение в фоне может быть убито в любой момент и эта проблема становится все актуальнее с вводом агрессивного энергосбережения – привет Oreo. Также никто не отменял смену конфигурации на телефоне: ориентация, смена языка и т.д. И чтобы открыть приложение из бэкграунда и отобразить интерфейс в последнем состоянии нам нужно позаботиться о его сохранении. Ох уж этот onSaveInstanceState.

onSaveInstanceState

Сколько боли он нам принес.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 12

Как не выстрелить себе в ногу из конечного автомата

Reading time 15 min
Views 26K
Конференции Олега Бунина (Онтико) corporate blog Development for iOS *Development of mobile applications *
Конечный автомат редко применяется мобильными разработчиками. Хотя большинство знает принципы работы и легко реализует его самостоятельно. В статье разберемся, какие задачи решаются конечным автоматом на примере iOS-приложений. Рассказ носит прикладной характер и посвящен практическим аспектам работы.

Под катом вы найдете дополненную расшифровку выступления Александра Сычева (Brain89) на AppsConf, в котором он поделился вариантами применения конечного автомата при разработке неигровых приложений.


О спикере: Александр Сычев занимается iOS-разработкой восемь лет, за это время участвовал в создании как простых приложений, так и сложных клиентов для социальных сетей и финансового сектора. В данный момент является техлидом в компании Сбербанк.
Total votes 28: ↑28 and ↓0 +28
Comments 5

Использование Spring state machine на практическом примере

Reading time 4 min
Views 7.1K
Java *
Tutorial

Использование Spring state machine на примере протокола РОСЭУ


В статье описано использование Spring state machine на примере установки соединения согласно технологии РОСЭУ. Соединение устанавливается между двумя операторами ЭДО в режиме точка-точка или через роуминговый центр. Описано как управлять состояниями, переключать состояния по событию и выполнять заданные действия при смене состояния. Если заинтересовало, то прошу под кат.

image
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 2
1