Реальное мобильное приложение в Delphi для систем наблюдения

Мы не рекламируем и не продвигаем ни компанию Digifort, ни её продукты. Компания указана, чтобы показать — это не «фейк», не «фотошоп», люди/продукты реальные. В данном техническом интервью будет рассмотрена проблема мобильной разработки глазами «классического destkop-программиста» с большой степенью объективности и непредвзятости. Нельзя, к примеру, говорить о проектировании мостов без анализа ключевых проектов, таких как Golden Gates Bridge. Для пользователей Delphi такой проект, несомненно, пионерский, есть смысл ознакомится с обзором.

Данное интервью — переводное. Эрик, будучи техническим специалистом, тем не менее, отвечал в классическом «западном деловом» стиле и формате, когда публично не принято ругать и резко критиковать. Он старался похвалить Embarcadero и всячески выражал благодарность, поэтому нам пришлось добавить «sugar-free» секцию, чтобы сохранить объективность изложения.


Сегодня мы поговорим с представителем компании Digifort, которого зовут Эрик Флеминг Бонила (Eric Fleming Bonilha). Он – разработчик, а его компания недавно выпустила мульти-платформенную мобильную версию системы, о чем писалось здесь. Мы попросили Эрика поподробнее рассказать о том, как, что, зачем он делал (при соблюдении know-how), а также почему именно Delphi for Android/iOS.

Здравствуйте, Эрик! Чтобы мы могли понять техническую составляющую Вашего проекта, расскажите о системе в целом. Каково её назначение? Это – реальный проект?

Здравствуйте. Я представляю «софтверную» компанию. Наш основной продукт решает задачи в области IP-TV-наблюдения на основе TCP/IP передачи закодированных изображений с аналоговых или IP-камер. Предусмотрена запись для последующего анализа. Технологии Digifort могут быть использованы в качестве основы для реализации анализа видео на предмет соответствия заданным шаблонам для идентификации проблемных ситуаций. Например, можно записывать изображения номеров машин, помещать их в базу данных, распознавать случаи угона. Естественно, можно представить себе и ряд других сценариев использования нашей системы. У нас есть масса продуктов, которые могут быть агрегированы в единое решение для создания замкнутых решений проблем безопасности вплоть до корпоративных потребностей.



Когда и почему Вы начали использовать Delphi в качестве (первичного) инструмента разработки программного обеспечения (ПО)?

Мы начали использовать Delphi в качестве основного инструмента в 2002 году. Тогда мы посчитали Delphi правильным выбором для разработки именно такого ПО. C++ был сложен, компиляция требовала значительного времени, разработка интерфейсов сопровождалась трудоёмкими процедурами, производительность разработчиков была бы недостаточно высокой по сравнению, к примеру, с Visual Bascic, но мы уже тогда любили Pascal.

Изначально вы разрабатывали «настольные» решения?

Да, все наши продукты создавались как «настольные» решения. Основной продукт представляет собой «настольное» приложение, но он включает серверный модуль, который отвечает за управление всей сисемой. Также есть два клиентских модуля: один для администрирования (рабочее место «администратора») и для наблюдения (рабочее место «оператора»), каждый из которых «заточен» под конкретную пользовательскую роль.

image

В чем была необходимость начать мобильную разработку?

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

Насколько мобильные приложения обогатили систему в целом?

Мобильная реализация нашего ПО теперь является фундаментальной частью системы, без чего мы бы потерять много пользователей. Теперь у нас есть целых два мобильных продукта:
  • «Мобильный клиент» Digifort (Digifort Mobile Client);
  • «Мобильная камера» Digifort (Digifort Mobile Camera).

«Мобильный клиент» Digifort позволяет вести удаленное наблюдение и управление камерами в автоматизированном режиме с мобильного телефона. Это – очень важное расширение нашей системы, что позволяет нашим пользователям продолжать получать информация с камер, где бы они ни были. Я даже могу предположить, что есть риск формирования некой зависимости! Я сам грешу тем, что время от времени смотрю, что происходит в офисе, даже когда я дома или нахожусь в командировке (при использовании сети 3g). Этот продукт будет доступен БЕСПЛАТНО для скачивания и будет частью нашего пакетного решения.

«Мобильная камера» Digifort – это новый модуль, который находится в процессе завершения, и он будет «превращать» любое iOS/Android устройство в мобильную камеру! Изображение с мобильного телефона будет «вживую» передаваться на нашу систему наблюдения. Впечатляет, не правда ли? Мы анонсировали этот продукт еще два месяца назад и с тех пор получили ТОННУ запросов. Люди просто жаждут получить этот продукт именно благодаря его функциональности. Наш главный заказчик, который представляет правительственные структуры (органы правопорядка и муниципальные органы), уже оценил большой потенциал таких приложений.

Сколько потребовала от Вас реализация функционального прототипа мобильного приложения? Вам помог опыт работы в «классических» версиях Delphi?

На разработку «Мобильной камеры» Digifort ушло около 2-х недель (не только прототип, но и полнофункциональная версия), включая мобильное приложение и серверный «бэкенд» (backend server), а также систему конфигурирования экранов.

«Мобильный клиент» Digifort потребовал 3 недели, но мы пока его еще не выпустили, т.к. это произойдет в рамках нового общего пакетного решения.

Мы используем Delphi более 13 лет, и это, конечно, сильно нам помогло. Сначала мы несколько растерялись, когда начали использовать «Платформу FM» (FireMonkey), т.к. она была для нас новой. Но через несколько дней мы к ней привыкли и даже полюбили. Нам понравилось, как легко можно достигать потрясающих эффектов в плане создания интерфейсов (по сравнению с VCL).

Как разделяется функционал системы между мобильными и настольными клиентами?

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

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

У вас есть код, который совместно используется и в настольных, и в мобильных проектах?

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

Почему так важно иметь мобильную версию системы?

Я бы не сказал, что это важно. Это просто НЕОБХОДИМО. Пользователи вас не поймут, если вы не будете предоставлять им мобильное приложение. В этом случае компания обречена на вымирание.

Вы использовали какие-нибудь сторонние компоненты (если это не большой секрет)? Или обошлись стандартными? Возможно, что-то сами сделали?

Для мобильных приложений – нет. Мы использовали только компоненты, входящие в базовую поставку (Indy для связи по TCP/IP и стандартные компоненты «Плафтормы FM» для всего остального).

У разработчиков вашей компании был опыт мобильной разработки?

Да, несколько лет назад мы создали клиент на основе Java для смартфонов с Windows 6. Тогда у нас не было опыта работы с Java, и мы потратили 4 месяца и привлекли специально обученного разработчика к этой задаче (чтобы во всём разобраться и, наконец, сделать). Много времени ушло на освоение Java 2ME и, конечно, мы сильно выдохлись, изучая новый язык/фреймворк. Хотелось бы тогда иметь Delphi с тем же функционалом для мобильной разработки!

С тем приложением были большие проблемы, мы не могли его сопровождать, т.к. постоянно требовался Java-программист, а тот специалист, который учил нас, уже покинул компанию. Т.к. Windows 6 не оказалась особо популярной в те годы, мы просто «заморозили» проект, хотя это приложение до сих пор работает. Мы умудрились перенести его на Android, но оно далеко от идеала…

Где-то 2 года назад один из наших разработчиков создал «нативное» приложения для iPhone с использованием Objective-C (называется iDigifort). История была примерно такой-же. Много времени потратили на изучение нового языка/фреймворка. Опять, это заняло 4 месяца, чтобы подучиться и разобраться… а потом опять получить кучу проблем. Главная из них: у нас не было поддержки Android, который за последние 2 года стал мега-популярным…

Какие преимущества вы получили, выбрав Delphi для мобильной разработки?

Сказать по-честному, я давно мечтал о такой версии Delphi, чтобы с ней я смог легко разрабатывать мобильные приложения. Мои мечты сбылись с XE5.

После покупки XE5 мы решили попробовать использовать данную версию в качестве основной. Отбросив скептицизм, мы окунулись в новый мир «Платформы FM» (FireMonkey). Мы поняли, насколько просто делать красивые интерфейсы пользователя. Все эти «бантики и рюшечки», о которых мечтают современные «мобильные пользователи». Нам эти возможности показалось очень мощными (если сравнивать с тем, как сложно было сделать красивый и яркий инструмент в прошлом с VCL).

Таким образом, мы посовещались и решили оставить разработку удаленного клиента на Objective-C для iPhone и попытаться сделать всё на основе единого кода, компилируя приложения для Android и iOS. Это позволило нам одной командой разрабатывать продукты и для «настольного», и «мобильного» применения, и нам не пришлось разделять проекты между отдельными командами.

Это сработало… Все наши пользователи, которые уже начали тестировать новые версии «Мобильного клиента» Digifort, сделанного в XE5, прислали нам очень позитивные отзывы. Помимо нового функционала они особо отметили красивый внешний вид и удобный интерфейс. На нас это сработало поистине прекрасно.

Что касается лично меня, то для меня главное – возможность быстро создавать мобильные приложения в Delphi XE5 и компилировать их под основные платформы (наши пользователи пока не спрашивают про Windows Phone, то же самое можно сказать про Blackberry). Пока мы обходимся единой командой, но покрываем различные платформы. Когда мы добавляем новую возможность, она появляется для всех поддерживаемых платформ. МЫ реально экономим деньги и выпускаем продукт быстрее!!!

image

“Sugar-free” Q&A session


Как Вам удалось сделать такой красивый «список» в Вашем интерфейсе?

Да, список у нас явно удался… Сначала мы хотели использовать TListView или TListBox, но у меня весьма притязательное отношение к интерфейсам, которые я делаю. Я создал свой собственный! Я использовал TVertScrollBox для размещения объектов, а каждый элемент представляет собой объект класса, который я унаследовал от TObject. Далее я «вручную» задаю позицию каждого элемента в списке. Элементы отрисовываю я, переопределив процедуру Paint, где я рисую объект Icon по типу «Camera», «Alarm» или «Server») и «звёздочку Favorite». Для текста и изначально использовал процедуру выведения текста на «канву», но она работала медленно (это ощущалось при «скроллинге»), поэтому заменил её на TLabel, так что у меня 2 компонента TLabel на элементе.

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

image

Какие были основные трудности в использовании «Платформы FM» (бывшая FireMonkey)?

Сначала всё показалось совсем новым, но мы достаточно быстро привыкли к новым свойствам и том, как платформа работает. Конечно, я откопал и запостил несколько ошибок. Также некоторые эффекты, такие как «тень», почему-то не заработали на Samsung S4 (тоже запостил), но просто отключил эффекты типа «тень» и заменил их на уже которые PNG-картинки с тенями, что также сделало мое приложение более производительным.

Основной сложностью стал для меня механизм ARC. Вроде как он должен упростить жизнь разработчикам, но временами он мою жизнь как раз усложнял… Всё-таки я привык сам управлять временем жизни своих объектов…

Какая часть Delphi XE5 требует усиленного внимания со стороны Embarcadero?

Я бы не отказался увидеть дальнейшие улучшения в «Платформе FM». Мы очень успешно реализовали наши мобильные приложения, но кое-где нам пришлось решать проблемы «заплатками». Также хочу, чтобы «мобильный» компилятор работал также быстро, что и «классический» под Win32.

Как вы решаете проблему размера приложения?

Да я как-то не особо озадачен размером приложения… Для Android размер где-то 7 MB. Для iOS – 20 MB… Не думаю, что это – как-то конфликтует с понятием «полномсаштабное готовое приложение». Замечено, что размер файла сильно не увеличивается при добавлении новых возможностей… Я так полагаю, это из-за того, что «Платформа FM» и RTL вкомпилируются в приложения? Так?

Мы используем много картинок. Конечно, нужно стараться делать их размер небольшим.

image

Есть ли проблемы с производительностью по сравнению с приложениями, созданными в специализированных одно-платоформенных средах (Xcode, Java)?

Скажу честно, на современных и быстрых телефонах, таких как iPhone 4S, iPhone 5, Samsung S2, S3, S4… всё «летает». Для топовых моделей и последнего поколения устройств все отлично. Но для более «древних» я менее оптимистичен.

Конечно, работают приложения медленнее по сравнению со специализированными одно-платформенными средствами (Xcoide для iOS и Java для Android), но мы сумели обеспечить такую производительность, что пользователь не может отличить, в какой среде сделано приложение. По крайней мере, что касается «Мобильного клиента» и «Мобильной камеры» — пользователи никогда не жаловались на производительность. Но если ещё немного подработать «Платформу FM», то она уже гарантировано будет неотличима от специальных одноплатформенных средств.

Что Вы могли бы посоветовать в плане улучшения Delphi/C++Builder?

Мне нравится, куда развивается Delphi… Разработка под iOS и Android на основе единого кода – это было моей мечтой долгие годы. Теперь у меня есть такие возможности, и я очень рад, что выбрал именно Delphi много лет назад.

Теперь мне бы хотелось видеть постоянные улучшения «Платформы FM» именно как платформы в виде регулярных обновлений. И, как я уже сказал, хочется иметь более быстрый мобильный компилятор.

Покажите, пожалуйста, что-нибудь ещё. Желатльно скрин-шотами. Лучше один раз увидеть.

Вообще без проблем.

Вот это – так называемая «виртуальная матрица» как функция. Пользователь делает «long press», и на экране появляется список мониторов (да-да, эти самые черные прямоугольники) в анимированном режиме (конечно, это «шоу» нужно видеть в динамике, особенно в момент прокрутки). А потом можно буквальном пальцем «распасовать» изображение на конкретный выбранный монитор!

image

Если подключена PTZ-камера, то можно ей управлять из мобильного приложения.

image

Можно использовать элемент управления «типа джойстик».

image

Так выглядит экран при демонстрации изображений с трёх камер одновременно.

image

Как всегда, в завершении — экран настроек.

image

Спасибо, Эрик! Ты очень нас всех порадовал своими демо и скрин-шотами, равно самим фактом того, что вы сделали такие красивые и функциональные приложения. Думаю, Ваш пример вдохновит всех Delphi-разработчиков хотя бы попробовать мобильную разработку. Но в любому случает, теперь нам есть, на кого ориентироваться. Удачи!

image
Embarcadero (Borland)
49.00
Company
Share post

Comments 14

    –3
    Это всё замечательно, но RAD-studio даже не планируется для Mac OS
      0
      правильно. потому что разработчиков, которые хотят именно сидеть в среде на Mac OS, гораздо меньше даже тех, кто готов сидеть на Windows, и просто компилировать для Mac OS, не говоря о тех, которых Mac OS не интересует.
      Здесь ничего против MacOS нет, просто здоровая финансовая объективность. Переписать Delphi с Windows на MacOS — даже не могу представить себе трудозатраты в «человеко-годах».
        +2
        Абсолютно правильно.
        Вопрос о портации Delphi IDE на Mac OS поднимался со времён Delphi XE2. Действительно, не надо путать «пользователей Mac OS» с разработчиками, которые создают приложения под Mac OS.

        «Классический Дельфист», конечно, представляет собой разработчика приложений для Windows. Но сейчас появляется класс людей, которые изначально «яблочники», которые Windows «в глаза не видели». Они-то как раз и «просят» Delphi IDE for Mac. Почему просят? Им нужна разработка для Android. Не просто Android, но на едином коде с их привычной iOS/Xcode/Objective-C разработкой.

        Нам было совсем неудивительно, что на семинары Embarcadero приходят «C#-овыцы». Но видеть «чистых» Mac OS/iOS-овцев по-началу было непривычно.

        Стратегически вопрос создания версии Delphi для Mac OS рассматривается и на корпоративном уровне. Но нужна ли «такой» Delphi возможность создавать Windows-приложения? Или это будет «Delphi for Mac only»? Будет ли такой «моноплатформенный» во всех смыслах продукт востребованным среди Windows- разработчиков? А если мы декларируем мульти-платформенность «настольных»-проектов, то это подразумевает наличие Windows-машины. Тогда зачем именно Mac-версия?

        Вопрос поднят правильно, анализ и мониторинг потребностей постоянно ведётся. Но решение зависит от различных факторов, в частности, динамики рынка. Следим за этим!
          0
          у меня больше скепсиса по этому поводу :-)

          Например, если верить данным
          wp7forum.ru/dolya-windows-8-oboshla-vse-versii-mac-os-x-vmeste-vzyatye/
          то доля MacOS — всего 7%. Это куда меньше, чем разработчиков, которые готовы из Win компилировать в MacOS.
          И эти 7% меньше, чем Windows Phone на рынке :-)

          Конечно, смотреть в эту сторону и оценивать затраты и перспективы надо, но в ближайшие года полтора я бы не надеялся.
            0
            Я не знаю, как у вас, у нас в офисе 90% компьютеров работают под Mac. Может 7% кажется маленькой цифрой, однако из всей статистики нужно убрать всех домохозяек и офис-менеджеров, и тогда можно будет более-менее адекватно оценивать ситуацию.
            Я выразил своё скептическое отношение, потому что я хотел бы получить хороший инструмент разработки кроссплатформенных, компилируемых в нативный код, приложений. То, что сейчас представлено на рынке, меня не устраивает.
            При этом я уже полтора года пользователь MacOS, и возвращаться обратно на форточки не собираюсь.
    • UFO just landed and posted this here
        0
        Да, картинки красивые получились.

        Что касается некоторого функционала:
        «Мобильная камера» Digifort – это новый модуль, который находится в процессе завершения, и он будет «превращать» любое iOS/Android устройство в мобильную камеру! Изображение с мобильного телефона будет «вживую» передаваться на нашу систему наблюдения. Впечатляет, не правда ли?


        Я в Москве одну нашу немосковскую компанию, которая системы видеонаблюдения делает, в 2005 году приводил с подобным функционалом в Samsung и LG. Хотели им продать разработанную в РФ технологию.
        Там функционал был такой:
        — Камера телефона -> на другой телефон и даже на группу телефонов. Причем, можно было в обе стороны одновременно.
        — Камера телефона -> на сервер видеонаблюдения, вместе с другими, обычными камерами в окне показывалась.
        — Камера видеонаблюдения — на телефон(ну, это, как у всех производителей).

        Изначально для ЧОПов делалось — охранник приехал по тревоге на объект, показал руководителю на сотовый и/или оператору на компьютер, что творится на объекте.

        При этом GSM канал оставался работающим и можно было использовать эту разработку, как видеотелефонию(для режима телефон-телефон). И еще для молодежи позиционировали – пришел на вечеринку, в клуб, позвонил друзьям – показал, как тут здорово.

        К сожалению, попали как раз в blackout в Москве и не смогли показать нормальной скорости, сотовая связь в этот день вообще почти не работала.

        Что касается платформы iOS, то она не очень удобная по функционалу оказалась. Та же компания сейчас имеет клиента на Android и отправляет видеоролики видеоаналитики на телефон/планшет в фоне, не мешая работать человеку. На iOS программа должна быть активна, иначе она не получает сообщения, что несколько неудобно.
          +1
          А мне вот всегда было интересно, почему именно Delphi-приложения под Windows так любят рисовать кастомные формы и не соответствовать вообще никаким интерфейс-гайдлайнам?
          Да, у меня тоже первым языком был паскаль и первое рабочее место было именно позицией Delphi-программиста, но я всегда предпочитал соответствовать виду остальных приложений хоть как-то.
          Сейчас я уже привык, что кривые формы клепают только всякие китайцы (лучи ненависти в сторону ASUS с их устрашающим конфигуратором материнской платы). Но в статье вот снова «настольное решение» с собственноручно нарисованными кнопками, нестандартными цветами и непонятно как управляемыми элементами, вместо стандартных. Каждый раз, когда вижу такое приложение, хочется взять и наорать на разрабочика в духе «Для вас, Козлов, COMCTL придумали!»
          Может мне кто-то ответить, зачем они это делают?

          извините, накипело
            0
            Ответ достоин отдельной статьи. Напишем!
              –1
              Хм, Вы имеете ввиду любые приложения должны иметь интерфейс, как у Windows? Quake, Need for speed, WoW?
              1. Это система видеонаблюдения, а не работа текстом и числами. Там большинство вещей не имеет никакого прототипа в Windows. Зачем из-за пары кнопок весь интерфейс приводить к стилю Windows?

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

              Сколько раз убеждался в изречении: «Бытие определяет сознание». Общение только с людьми своего круга, работа, связанная только с узкой специализацией.

              Не всегда стандартный интерфейс полезен, для систем видеонаблюдения он может играть неположительную маркетинговую роль. Т.е. при одинаковой функциональности купят более красивую.
                +1
                Quake и Need for Speed не могут иметь Windows-интерфейс потому что были выпущены раньше, собственно, Windows :)
                Впрочем, всё это игры, они не имеют никакого отношения к рабочему процессу и приобретаются в том числе для того, чтобы освоить что-то новое, включая интерфейс, на мой взгляд. С ними никто не обязывает иметь дело.

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

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

                Так что, подождём обещаной статьи с описанием, думаю, что не всё там так просто :)
                  –1
                  Quake вышел после DOOM и был одной из первой игр, которая работала под Windows 95, Я играл еще в DOOM под DOS на 386DX с 4 Мб памяти, при этом пользуясь Windows 3.11. Windows95(Чикаго) тогда еще разрабатывался, насколько я помню.

                  Интерфейс системы видеонаблюдения должен быть близок к своим предшественникам — видеомагнитофонам для видеонаблюдения, матричным коммутаторам и мультиплексорам, к аппаратным регистраторам видеонаблюдения, а не к Windows.
                  Windows — всего лишь загрузчик, даже права доступа у CCTV по своему раздаются. И делать программу видеонаблюдения в гайдлайне загручика, а не в стандартах, используемых черт знает сколько лет в видеонаблюдении, несколько странное желание.
                –1
                Прочитал ваш комментарий приблизительно так: «Почему у лопаты, топора, молотка и стамески такие разные „кастомные“ ручки вместо стандартных? Для вас, Козлов, ручки от напильника придумали!»
                0
                удалил, так как не там ответил

                Only users with full accounts can post comments. Log in, please.