• Приемы обобщенного программирования в Rust: как мы переводили Exonum с Iron на actix-web

      Экосистема Rust еще не до конца устоялась. В ней часто появляются новые библиотеки, которые заметно лучше предшественников, а ранее популярные фреймворки устаревают. Именно это произошло с веб-фреймворком Iron, который мы использовали при разработке Exonum.

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

      Читать дальше →
      • +38
      • 5.4k
      • 5
    • Rust: От &str к Cow

      • Translation

      Одной из первых вещей, которые я написал на Rust'е была структура с &str полем. Как вы понимаете, анализатор заимствований не позволял мне сделать множество вещей с ней и сильно ограничивал выразительность моих API. Эта статья нацелена на демонстрацию проблем, возникающих при хранении сырых &str ссылок в полях структур и путей их решения. В процессе я собираюсь показать некоторое промежуточное API, которое увеличивает удобство пользования такими структурами, но при этом снижает эффективность генерируемого кода. В конце я хочу предоставить реализацию, которая будет одновременно и выразительной и высокоэффективной.

      Читать дальше →
      • +34
      • 6.7k
      • 3
    • Сравниваем Swift и Rust


        Поводом для написания статьи стала публикация исходного кода языка Swift — мне стало интересно поближе познакомиться с ним. В глаза сразу же бросилась схожесть синтаксиса с другим молодым языком программирования под названием Rust, к тому же за схожими синтаксическими конструкциями просматривалась и схожая область применения этих языков. Оба языка имеют сильную статическую типизацию с локальным выводом типов, оба компилируются напрямую в машинный код. И тот и другой языки впитали в себя многие приемы из мира функционального программирования. И Swift и Rust имеют средства для запуска кода, написанного на C, что позволяет без труда писать обертки над огромным количеством библиотек. Оба языка рассматриваются как замена существующим системным языкам типа C, C++, ObjectiveC. Так что же в них общего, а что различается?
        Читать дальше →
      • Программируем микроконтроллеры stm32 при помощи QtCreator


          Как-то так незаметно получилось, что программист, который разрабатывал нам прошивку для микроконтроллера, стал банально не успевать и в некоторые моменты я начинал перехватывать инициативу и самостоятельно браться за исправление ошибок.
          Разработка велась в среде IAR, и многие согласятся со мной, что по сравнению с разработкой в QtCreator'е это боль и страдание.
          В какой-то момент мы решили, что быстрее нанять нового программиста и вместе с ним заново переписать прошивку контроллера stm32, так, как я к этому моменту уже немного сам смыслил в их программировании и к тому же обнаружил, что QtCreator умеет отладку на голом железе (плагин BareMetal), я решил принять в этом активное участие.
          Здесь я хочу поделиться шаблоном проекта для stm32f407 от Terra Electronica и рассказать об особенностях его настройки.
          Читать дальше →
        • Vreen — простая и удобная библиотека для работы с vk.api


            Представляю вам новую Qt библиотеку для работы с vk api, которая может пригодиться вам при создании любых настольных и мобильных приложений, взаимодействующих с vk. Проект родился из vkontakte плагина для qutIM'а и перерос в отдельную независимую библиотеку, которой теперь может пользоваться каждый.
            Читать дальше →
          • А давайте пощупаем Qt5

              Выход первой альфы Qt5 уже не за горами, но зачем нам ждать этого момента, если мы можем прямо сейчас окунуться в ближайшее будущее с его QtQuick2, V8 и qpa?
              Поехали
            • QtDockTile — кроссплатформенное использование доков!

                Рассматривая современные тенденции в развитии десктопов сложно не обратить внимание на то, что идея дока становится все более и более популярной. Существует как минимум три популярные реализации этого принципа: Маковский док, таскбар из windiws 7 и launcher'ы из unity. К этому списку в kde 4.8 добавится ещё и icon tasks.
                Одним словом, назревает необходимость в создании универсальной библиотеки для работы со всем этим многообразием.
                Встречаем qtdocktile
                Читать дальше →
              • Разработка приложений для Meego Harmattan

                  Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

                  image
                  В данной статье хотелось бы поделится с Хабрасообществом своим опытом по разработке софта с использованием QtComponents'ов на примере Meego Harmattan'а. Писать мы будем редактор заметок с синхронизацией средствами Ubuntu One.

                  Читать дальше →
                  • +40
                  • 4.8k
                  • 9
                • Cmake — собираем переносимые приложения для Mac Os X и Windows

                    image
                    Рано или поздно наступает тот момент, когда приложения из наших лабораторий, полных чудес, вкусных библиотек и красивых фреймворков начинают проситься в большой мир, на компьютеры простых людей, не искушённых в магии. На их компьютерах не то, что не стоят наши новомодные фреймворки и средства разработки, там даже простого компилятора днём с огнем не сыщешь. Не может наше приложение жить без библиотек, которые так редко встречаются в дикой природе, зачахнет оно без них, никогда не видать ему белого света…
                    Но не всё так печально.
                    За подробностями под хабракат
                  • Разработка плагинов к qutIM'у из под Windows — быстрый старт

                      Традиционным способом начала разработки было выкачивание всех исходников и их компиляция, и даже из беглого сравнения размера инструкции для Windows и Ubuntu видно, что эта задача очень даже непростая. К счастью, появился способ проще и быстрее.
                      Читать дальше →
                    • Рисуем виджеты в заголовке окна

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

                        Читать дальше →
                      • Вышел qutIM 0.3 beta

                          Здравствуйте, дорогие хабраюзеры! После длительного перерыва после Alpha мы рады вам представить бета-версию qutIM под кодовым именем SciFi. За год была проделана огромная работа и ниже будет рассказано, что же появилось нового.

                          Читать дальше →
                        • qutIM for Symbian — реквием по мечте…

                            Я планировал рассказать о процессе портирования qutIM'а на платформу S60 тогда, когда порт стал бы более стабильным и полноценным, но увы, последние события не оставляют мне выбора. У меня больше нет никакого интереса продолжать активную разработку Symbian версии — это больше похоже на выступление оркестра на тонущем Титанике.
                            Кому всё-таки интересно посмотреть, как мы занимались портированием qutIM'а и что из этого получилось, добро пожаловать под кат.
                            Читать дальше →
                          • Доступны ночные сборки qutIM 0.3 для Windows


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

                              Что же нового в этих билдах в сравнении с альфой (осторожно, много скриншотов)?
                              Читать дальше →
                            • Собираем Qt приложения для Symbian'а из-под linux'а

                                На этот раз собирать будем практически полностью нативными средствами, не используя Nokia remote compiler
                                Данный метод проверялся на Gentoo-amd64, в результате чего были получены вполне рабочие sis файлы. Огромным преимуществом при сборке из под Linux'а является то, что используется родной make, а не мутная утилита под названием abld. В результате мы получаем такие преимущества, как:
                                • Многопоточность
                                • Отсутствие лишних шагов в виде обсчета всех зависимостей
                                • Отсутствие зависимости от тормозного active perl'а

                                В итоге скорость сборки увеличивается в разы!
                                Читать дальше →
                                • +24
                                • 2.1k
                                • 6
                              • Nokia Remote Compiler

                                  Хотелось бы представить небольшой обзор новой экспериментальной возможности, доступной в недавно вышедшем Nokia Qt SDK. Эта новая возможность позволяет использовать build серверы Nokia для сборки софта.
                                  Эта возможность дает независимость от установленного в системе тулчейна, он вообще может быть не установлен. Соответственно таким образом можно легко собирать Symbian приложения в Линуксе или Макоси, а Maemo приложения в Виндовсе.
                                  Читать дальше →
                                • Небольшой demo клиент vkontakte на QML


                                    Недавно я уже рассказывал о новом языке разметки, теперь же мне хотелось бы показать небольшой пример того, что можно с помощью этих инструментов сделать. В качестве демонстрации я решил написать крошечный клиент для популярной в рунете сети vkontakte.
                                    Данный клиент взаимодействует с контактом через userapi, умеет отображать список пользователей, принимать и отправлять сообщения, отображать пользователей, от которых есть непрочитанные сообщения, а также искать нужных людей среди френдленты по имени и фамилии: в общем самый минимум, хотя делает он это весьма красиво.
                                    Примечателен клиент тем, что здесь нет ни единой строчки на C++, всё сделано средствами qml и javascript.
                                    Несколько скриншотов и ссылки для скачивания
                                  • Работаем с моделями в QML


                                      В продолжении предыдущего поста, хочется рассказать ещё немного о новой технологии от Qt Software и Nokia. Напомню, что QML — это новый язык описания пользовательского интерфейса, призванный упростить разработку современных приложений и наполнить их движением.
                                      В этой статье мне хотелось бы немного рассказать о том, как в QML работает парадигма MVC
                                      Читать дальше →
                                    • Первые шаги с QML

                                        QML — это новый язык разметки для создания пользовательских интерфейсов. Его основная задача — обеспечить возможность простого и быстрого создания приложений с красивым, анимированным интерфейсом.
                                        Не так давно вышла публичная версия. Это означает, что API в целом стабилизировался, и версию можно смело тестировать и использовать.
                                        Declarative UI планируется включить в релиз Qt 4.7, а пока можно найти все необходимые файлы и инструкции по установке на ftp троллей.
                                        В данной статье мне хотелось бы показать, как можно использовать С++ объекты (QObject) в qml.

                                        Начнем
                                      • QML — новый подход к построению GUI

                                          Традиционно все десктопные приложения пишутся на императивных языках программирования, этот подход прост и понятен, куда проще описать последовательность действий для решения той или иной задачи, нежели поставить задачу в понятной для машины форме, но когда речь заходит о проектировании внешнего вида и поведения, возникают сложности.
                                          Веб дизайнеры же привыкли описывать, как должно выглядеть веб приложение, то есть ставить задачу, а не по пунктам описывать её решение, такой подход называется декларативным, он удобен, но к сожалению в традиционных приложениях до сих пор господствует именно императивный подход. Есть конечно дизайнеры форм, но они лишь позволяют в общих чертах обрисовать внешний вид приложения, но совершенно не способны описать его поведение. Для решения это проблемы в Qt Software был предложен новый проект Declarative User Interface и в рамках него новый язык разметки:

                                          Встречаем QML


                                          Это новый язык разметки, позволяющий описывать не только внешний вид, но и поведение ваших приложений. Он очень прост и обладает json образным синтаксисом, немного сближающим его html5, что думаю очень придется по душе веб-дизайнерам, да и программистам тоже. А в перспективе это наконец позволит полностью разделить внутреннюю логику работы приложения и его внешнее поведение, в результате чего будет наконец решена извечная проблема, когда программист занимается ещё и внешним видом приложения, потому, как дизайнерам слишком сложно было вникнуть в программирование.
                                          Хотите прикоснуться?