Pull to refresh
31
-1
Send message

Выбираем Qt

Reading time5 min
Views12K

Наш ведущий разработчик — Евгений Самойлов, недавно сходил в гости к Android Broadcast, где рассказал, почему мы в 2ГИС используем Qt. Для тех, кому удобнее читать, публикую выжимку того разговора.

2ГИС — это сложный продукт с картой, поисковым движком, базой данных, транспортными сценариями и многое другое. У сложного продукта — большое UI-наследие. Чтобы 2ГИС выглядел и работал хорошо на всех Android-устройствах, мы используем фреймворк Qt.

Читать далее
Total votes 35: ↑31 and ↓4+27
Comments41

Qt QJSEngine Hello world

Reading time4 min
Views4.6K
Данный пример построен на примере из книги М.Шлее «Qt профессиональное программирование на Qt» «Черепашья графика». Для лучшего понимания работы советую почитать раздел «Язык сценариев Qt Scripts».

В примере будет реализован простой терминал, в который можно вводить команды. Результат выполнения команд будет отображаться в этом же терминале. Пользовательский интерфейс будет реализован на QML.

Создадим проект Qt Quick

image

Опишем форму. Файл main.qml:
Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments0

Самый худший UI управления громкостью звука

Reading time1 min
Views203K
Группа разработчиков и дизайнеров решила начать флешмоб на реддите, чтобы выяснить у кого получится сделать самый худший интерфейс управления звуком в мире.



Осторожно! Много картинок и трафика!


Читать дальше →
Total votes 322: ↑292 and ↓30+262
Comments177

Мой путь воина, или как я готовила приложение для жизни в Sailfish

Reading time6 min
Views8.5K
Искусство воина состоит в сохранении равновесия
между ужасом быть человеком и чудом быть человеком.
«Путешествие в Икстлан»


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

С недавних пор я тружусь на позиции разработчика в компании Digital Design, и иногда мне приходится разбираться с задачами, с которыми я ранее не встречалась. Это интересно и часто весело. Сейчас, например, я пишу корпоративное приложение под Sailfish OS и хочу поделиться с вами своим опытом – об этом и пойдет речь ниже. Следуйте за мной под кат, если вы начинающий разработчик или, так же, как и я, столкнулись с задачей адаптации корпоративного приложения под ОС Sailfish и не знаете, с чего начать, а также те, кто ещё не слышал о Qt и особенностях Sailfish.

Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments16

Работа с таймером в Sailfish OS на долгих интервалах времени

Reading time5 min
Views2.1K

Введение


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

Как было сказано в одной из предыдущих статей, для добавления таймера в приложение на Sailfish OS можно использовать стандартный элемент Timer или его C++ аналог — QTimer. Однако, по умолчанию, работа этих таймеров приостанавливается на долгих промежутках времени из-за того, что устройство может уйти в «сон». Как раз с этой проблемой и столкнулись разработчики двух приложений, упомянутых выше.

В данной статье представлен стандартный для системы, но к сожалению недокументированный способ обработки такого поведения Sailfish OS.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments2

Изучаем многопоточное программирование в Go по картинкам

Reading time8 min
Views69K

Скорее всего, вы уже слышали о языке программирования Go, популярность его постоянно растет, что вполне обоснованно. Этот язык простой, быстрый и опирается на прекрасное сообщество. Один из самых любопытных аспектов языка — это модель многопоточного программирования. Примитивы, положенные в ее основу, позволяют создавать многопоточные программы легко и просто. Эта статья предназначена для тех, кто хочет изучить эти примитивы: горутины и каналы. И, через иллюстрации, я покажу, как с ними работать. Надеюсь, это будет для вас хорошим подспорьем в дальнейшем изучении.
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments21

Об итогах конкурса MERC-2017: победители и комментарии

Reading time7 min
Views1.4K
Подошел к концу и объявляется закрытым первый конкурс по машинному обучению MERC-2017 от Neurodata Lab, проведенный на собственной площадке Datacombats (вскоре мы представим обновленную, полноценную версию платформы). Время подвести некоторые итоги и прокомментировать результаты. С визуализацией статистики вы можете ознакомиться в предыдущем посте нашего блога.
image
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments3

Как мы в Smart Engines учили Sailfish OS распознаванию

Reading time7 min
Views5.9K
Smart Engines и Sailfish OS

Всем привет! Как вы уже знаете по нашим статьям, мы в Smart Engines занимаемся распознаванием, причем распознавать мы стараемся на чем угодно и в любых условиях. Мы поддерживаем все популярные операционные системы: iOS, Android, Windows, Linux, MacOS, Solaris. Поддерживаем мы и отечественного производителя: Эльбрус и AstraLinux. Наши алгоритмы оптимизированы под ARMv7-v8, AArch64, x86, x86_64, SPARC, E2K, MIPS.


Поэтому, когда мы увидели нарастающую популярность российской операционной системы Sailfish Mobile OS RUS, мы не смогли обойти ее стороной. Sailfish Mobile OS RUS — это POSIX-совместимая операционная система для мобильных устройств, развиваемая отечественной компанией «Открытая Мобильная Платформа» для решения задач корпоративных пользователей и государственных учреждений. По состоянию на февраль 2018 года является единственной мобильной операционной системой, включенной в реестр Отечественного ПО и прошедшей сертификацию ФСБ по классу АК1/КС1.


В этой статье мы расскажем о своем опыте портирования нашей библиотеки распознавания Smart IDReader (технология Hieroglyph) на Sailfish OS. В ней будет код, ссылки и видео. Мы хотим, чтобы эта статья была технически информативной и полезной в качестве общей инструкции для тех, кто портирует С++ приложения на Sailfish OS.


Total votes 6: ↑6 and ↓0+6
Comments1

Evil by Design: интерфейсы от Мефистофеля (часть первая)

Reading time12 min
Views9.7K
Крис Ноддер, автор книги «Evil by Design», сразу вызывает доверие. Не столько своим послужным списком достижений в психологии UX дизайне и консалтинге, сколько явным умением цеплять и продавать. По сути, под стильной обложкой с демоненком — собрание техник манипулирования потребителем, многие из которых известны уже давно. Но, согласитесь, «руководство для дизайнера, который служит Злу, пробуждая в людях темные инстинкты» звучит гораздо увлекательнее. Давайте толкать потребителя на смертные грехи!



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

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

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

Evil by Design: интерфейсы от Мефистофеля (часть вторая)

Reading time18 min
Views5.6K
На прошлой неделе я начал разговор о книге Криса Ноддера «Evil by Design», где рассказывается, как доводить пользователей до греха, получая от этого выгоду, и вкратце изложил методики из первых глав. Сегодня рассказываю об оставшихся грехах — гневе, зависти, вожделении и жадности: что кроется за типами поведения, которые мы описываем этими понятиями, и как маркетинговые тактики используют соответствующие слабости человеческой натуры в собственных целях.


Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments1

Дизайн-система. Определение понятия

Reading time8 min
Views32K


В российском дизайн-сообществе сформировалось и все чаще встречается мнение о том, что возникший в последние годы хайп вокруг дизайн-систем — не более, чем пузырь, раздутый вокруг давно существующей темы, а вовлеченные в это дело авторы спекулируют на старых понятиях.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments5

Компания LG объявила о выпуске открытой платформы WebOS Open Source Edition

Reading time3 min
Views16K

LG Electronics сообщила о доступности webOS Open Source Edition, рассчитанной главным образом на разработчиков, разрешив другим компаниям использовать ее в своих устройствах. Это дает возможность другим компаниям задействовать webOS Open Source Edition в своих продуктах: телевизоры, IoT устройства, планшеты, или смартфоны.


palm


Версия 1.0 новоиспеченной webOS OSE оптимизирована для Raspberry Pi 3, однако поддержка новых платформ не за горами. Страница настройки содержит инструкции по сборке прошивки для загрузки с microSD карты. Для сборки необходима Ubuntu 14.04 LTS 64-bit, 4-х ядерный процессор Intel Core i5, 8 GiB ОЗУ и 100 GiB дискового пространства.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments32

Ловкость рук и никакого мошенничества: практические советы по ускоренному обучению дизайну для разработчиков

Reading time6 min
Views52K
Улучшаем дизайн проекта с помощью тактически грамотных действий, а не таланта.

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

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

Легко опустить руки и сказать: «Я никогда не смогу сделать это должным образом, я не художник!», Но, оказывается, есть уйма ловких приёмов, которые вы сможете использовать, чтобы поднять свою работу на другой уровень, не имея опыта в графическом дизайне.

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

1. Для создания иерархии используем цвет и вес вместо размера



Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments28

Qt: Пишем обобщенную модель для QML ListView

Reading time9 min
Views23K

Кому-то материал этой статьи покажется слишком простым, кому-то бесполезным, но я уверен, что новичкам в Qt и QML, которые впервые сталкиваются с необходимостью создания моделей для ListView, это будет полезно как минимум как альтернативное*, быстрое и довольно эффективное решение с точки зрения "цена/качество".


*Как минимум, в свое время ничего подобного мне нагуглить не получилось. Если знаете и можете дополнить — welcome.


О чем шум?


С приходом в Qt языка QML создавать пользовательские интерфейсы стало проще и быстрее… пока не требуется тесное взаимодействие с C++ кодом. Создание экспортируемых C++ классов достаточно хорошо описано в документации и до тех пор пока вы работаете с простыми структурами все действительно достаточно тривиально (ну почти). Основная неприятность появляется, когда нужно "показать" в QML элементы какого-то контейнера, а по-простому — коллекции, и в особенности, когда эти элементы имеют сложную структуру вложенных объектов, а то и другие коллекции.


Интересно?

Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments6

JavaScript и ужасы мутаций

Reading time9 min
Views37K
Мутация — это изменение. Изменение формы или изменение сути. То, что подвержено мутациям, может меняться. Для того чтобы лучше осознать природу мутации — подумайте о героях фильма «Люди Икс». Они могли внезапно получать потрясающие возможности. Однако проблема заключается в том, что неизвестно, когда именно эти возможности проявятся. Представьте себе, что ваш товарищ ни с того ни с сего посинел и оброс шерстью. Страшновато, правда? В JavaScript существуют те же проблемы. Если ваш код подвержен мутациям, это значит, что вы можете, совершенно неожиданно, что-то изменить и поломать.


Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments54

Разработка сканера Wi-Fi сетей для Sailfish OS

Reading time14 min
Views5K

Введение


Порой, при решении рабочих задач, возникает необходимость в информации об окружающих сетях Wi-Fi: канал, мощность, тип шифрования и др. И если для популярных мобильных ОС Android и iOS утилит много, то для Sailfish OS — только одна. Сегодня, на примере данной утилиты, будет разобрано получение информации об окружающих сетях Wi-Fi и её отображение двумя способами: списком и графически.

До изучения материала желательно иметь базовое представление о разработке под Sailfish OS и об утилите wpa_cli.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments4

Закруглённые изображения на Qt Quick Scene Graph

Reading time7 min
Views12K

Я использую Qt в разработке уже более 6 лет, из них последние 3 года для создания приложений под Android и iOS на Qt Quick. Моя приверженность этому framework'у обусловлена двумя причинами:


  • Qt предоставляется большой пакет компонентов, функций, классов и т.п., которых хватает для разработки большинства приложений;
  • Если нужно создать недостающий компонент, Qt предоставляет несколько уровней абстракции для этого — от простой для кодирования, до наиболее производительной и функциональной.

К примеру, в Qt Quick есть компонент Image, который размещает изображение в интерфейсе. Компонент имеет множество параметров: расположение, способ масштабирования, сглаживание и др, но нет параметра radius для скругления изображения по углам. В то же время круглые изображения сейчас можно встретить, практически, в любом современном интерфейсе и из-за этого возникла потребность написать свой Image. С поддержкой всех параметров Image и радиусом. В этой статье я опишу несколько способов сделать закруглённые изображения.


Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments7

Разработка для Sailfish OS: работа с LocalStorage

Reading time5 min
Views5.6K
Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке для мобильной платформы Sailfish OS. В этот раз мы решили рассказать о приложении для контроля финансов, позволяющее пользователю вести журнал доходов и расходов, а также откладывать средства для осуществления целей. Стоит упомянуть, что данное приложение является одним из победителей хакатона по Sailfish OS в Ярославле, организованного компанией «Открытая Мобильная Платформа» и ассоциацией FRUCT.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments6

Разработка для Sailfish OS: таймеры и реализация экспорта в файл на примере примере приложения для ведения списка дел

Reading time4 min
Views3.2K
Мы уже писали про опыт разработки нашего первого приложения для мобильной платформы Sailfish OS. Но на этом решили не останавливаться и сразу взялись за второе. Целью было создать приложение, с помощью которого пользователь мог бы вести учёт своего рабочего времени, планировать задачи и предоставлять информацию о проделанной работе, иными словами – разработать персональный мобильный тайм-трекер.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments0

Qt / QML REST Client

Reading time29 min
Views15K
Увидел сегодня в ленте статью и вспомнил, что хотел ведь про свой проект пару строк на Хабр написать.

В общем, некоторое время я работал техлидом с программистами iOS/Android, которые много использовали в своем коде API на Django/Yii2/проприетарщине. И посмотрев со стороны на инструменты, имеющиеся у них для работы с REST API, я решил нечто подобное добавить и в Qt, т.к. нормальных средств по работе с REST с использованием Qt моделей не существовало.

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

image
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments19
1

Information

Rating
Does not participate
Works in
Registered
Activity