Search
Write a publication
Pull to refresh
1
Alexander Stellove @AlLSTLread⁠-⁠only

Software Engineer

Send message

Межпроцессная репликация объектов с помощью QtRemoteObjects

Reading time7 min
Views12K
7 октября 2014 года в публичном доступе появились исходники Qt-модуля QtRemoteObjects. Модуль создан в недрах Ford Motor Company (автор Brett Stottlemyer). Вещь, на мой взгляд, очень перспективная. Модуль позволяет, например, передавать сигналы между объектами по сети. Но этим возможности модуля не ограничиваются. Более точно суть модуля описывает его предыдущее наименование — Replica, так как объекты «реплицируются» между процессами.



Ключевой идеей QtRemoteObjects, которая качественно отличает его от других способов межпроцессного взаимодействия/удаленного вызова процедур, является идея полностью продублировать Qt-объект в другие процессы. Это значит, что все изменения свойств (properties) в объекте — источнике отражаются (с уведомлением посредством сигналов) в объекте-реплике. Любые сигналы, которые эмитируются объектом-источником будут также эмитированы в каждом объекте-реплике. Также можно устанавливать свойства, вызывать слоты и в объекте-реплике, при этом запросы отправляются объекту-источнику, который их обрабатывает и затем изменения отражаются в других объектах-репликах посредством сигналов или с помощью изменения свойств. В результате все объекты (включая объект-источник) синхронизируются. При этом вся сложность межпроцессного взаимодействия скрыта внутри QtRemoteObjects.
Читать дальше →

Дональд Кнут: про жену, поцелуи, «Конкретную математику» и взгляд на преподавание в университете

Reading time9 min
Views22K
«У нас вышла калифорнийская книга о математике. Книга, которая показывала неформальный стиль классов в Стэнфорде наравне с тем, что я считаю личным манифестом пути занятия математикой.»
— Дональд Кнут



«В то время была большая суматоха. Некоторые люди жаловались на то, что математика становится слишком абстрактной, что она слишком оторвана от реальности, так что я мог бы немного пошутить, назвав курс „конкретная математика“. Хотя я сказал, что слово „конкретный“ не является на самом деле антонимом абстрактного, это сочетание слова непрерывный и дискретный (CONtinuous and disCRETE).»
— Дональд Кнут

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

Создание системы расширения на библиотеке Qt

Reading time12 min
Views19K

Плагины(Расширения)


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

Расширения делятся на два типа:

  • Для Qt
  • Для собственных приложений

Разберём как создать свою систему расширений и сами расширения для него.

Связь с расширением осуществляется с помощью интерфейса (сигналы, слоты и методы класса). Расширение загружается приложением при помощи класса QPluginLoader. Для загрузки расширения используется метод instance(), который создаёт объект расширения и возвращает указатель на него. Для выгрузки расширения используется метод unload().

Часть 1


В первом примере создадим расширение которое будет использовать функцию(алгоритм, формулу) из расширения.

Визуальная схема проекта будет выглядеть следующим образом.


Читать дальше →

Три последние книги с конспектами идей

Reading time10 min
Views19K
Предлагаем вашему вниманию несколько хороших книг, вышедших в разных издательствах в 2011 году. Мы купили эти книги, прочитали их и предлагаем вам конспект-выжимку идей из каждой.

Читать дальше →

Уголок пользователя ЭВМ: мелатонин и экраны

Reading time4 min
Views17K
Вычислительные устройства всех размеров — от настольного компьютера до умных часов — за последнее десятилетие проникли в жизни большинства людей. Многие начинают новый день с чтения новостных лент и общения в социальных сетях и так же его заканчивают. И если в утренние часы и дневные часы такое поведение безвредно для тела, то в часы перед сном оно не только ухудшают его, но, в долгосрочной перспективе, и здоровье.

image
Читать дальше →

Оптимальный путь новичка в мире C++/Qt

Reading time10 min
Views118K
Часто задаваемый начинающими программистами вопрос – какие материалы читать для повышения своего профессионального уровня? В таком, наиболее общем виде, ответить на данный вопрос невозможно. Это зависит от текущих знаний и умений человека, от его специализации, от задач, которые возникнут перед ним в будущем. Однако я попытаюсь ответить на данный вопрос для того направления программистской деятельности, в котором лучше всего разбираюсь – в создании кроссплатформенных сложных desktop-приложений. Приложений уровня и класса PhotoShop, VisualStudio, MS Word. Таких приложений, в которых с точки зрения программиста возникает больше количество разноплановых задач:

  • Отрисовка классического «офисного» GUI типа кнопок, прогресс-баров, виджетов, анимации.
  • Отрисовка любой нестандартной графики типа непрерывно движущихся графиков из миллионов точек.
  • Работа с базами данных
  • Работа с сетью
  • Работа с реестром операционной системы
  • Работа с принтером
  • Быстрое (в том числе параллельное) выполнение сложных вычислительных задач.
  • И многое, многое другое.

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

Основа любого программирования на… пазлах

Reading time8 min
Views11K
Приветствую, Хабровчане!

В этой статье я хочу рассказать о своем опыте работы преподавателем программирования на C++ в колледже при техническом университете. Это был уникальный опыт в жизни, который многому меня научил. Когда речь заходит об интересных фактах из личного прошлого — этот отрывок из жизни приходит на ум одним из первых.
Поехали.
Читать дальше →

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Reading time20 min
Views60K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

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


Читать дальше →

Шпаргалка по аббревиатурам C++ и не только. Часть 2: «и не только»

Reading time17 min
Views13K
Это вторая и последняя часть моей шпаргалки по аббревиатурам, которые стоит знать C++ разработчику. С++ здесь упомянут только потому, что шпаргалку я составил в первую очередь для себя, а я как раз-таки C++ разработчик.

На самом деле в этой части собраны понятия, область применения которых не ограничена C++. Так что подборка может быть интересна более широкой аудитории.


Читать дальше →

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

Reading time7 min
Views158K


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

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

Теория категорий для программистов: предисловие

Reading time5 min
Views110K
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

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

Toolbox для исследователей — выпуск первый: самоорганизация и визуализация данных

Reading time4 min
Views6.2K
Сегодня мы открываем новую рубрику, в которой будем рассказывать о наиболее популярных и доступных сервисах, библиотеках и утилитах для студентов, ученых и специалистов.

В первом выпуске поговорим о базовых подходах, которые помогут работать эффективнее, и соответствующих SaaS-сервисах. Еще — поделимся инструментами для визуализации данных.

Читать дальше →

Как «научиться учиться» — улучшаем внимательность

Reading time5 min
Views66K
Ранее мы рассказали, какие исследования стоят за популярными советами о том, как «научиться учиться». Затем обсудили метакогнитивные процессы и полезность «каракулей на полях».

В третьей части — рассказали, как тренировать память «по науке». Кстати, про память — говорили отдельно тут и тут, еще — разбирались с тем, как «учиться по карточкам».

Сегодня — обсудим концентрацию, «многозадачность» и прокачку внимания.

Читать дальше →

Реализация системы GTD на основе новых возможностей Google Keep и Calendar

Reading time19 min
Views37K
This article in English: GTD Implementation via New Google Keep and Calendar Features

За последние годы Google Keep и Calendar значительно расширили свою функциональность, что дает возможность построить более удобную реализацию методологии GTD (Getting Things Done) на их основе. Ранее я уже публиковал материал с реализацией GTD на основе Google Calendar. Представленный теперь материал можно рассматривать как обновленную реализацию GTD на тех же принципах, но с использованием более современных средств.

В моем материале 2015 года в качестве базового элемента для всех пяти фаз управления рабочим процессом (Control) в системе GTD был выбран один и тот же сервис — Google Calendar. Теперь на различных фазах в качестве базовых элементов будут использоваться два разных сервиса — Calendar и Keep — в соответствии с приспособленностью их функционала для отдельных фаз.

  • Calendar теперь будет использоваться в качестве базы для фазы обзора (Review-Reflect), а также для фазы выполнения (Do-Engage).
  • Keep будет использоваться в качестве базы для фазы сбора (Collect-Capture), фазы обработки (Process-Clarify) и фазы организации (Organize).

Реализация GTD в Google Calendar (развернут список ближайших действий на неделю):


Pеализация GTD в Google Keep (категория ближайших действий):
Читать дальше →

Zero Inbox. Гайд по наведению порядка в почте

Reading time9 min
Views8.6K

Моему почтовому ящику на gmail много лет. Более десяти лет самостоятельного существования, а также в нем лежат архивы из других почтовых систем. Все эти годы я использовал его так как и нужно использовать умные продукты:


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

И это было чудесное время, пока мне не захотелось навести в нем порядок.


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


gmail inbox
^^ Это не настоящий скрин моей почты. Просто картинка для превью.

9 полезных браузерных расширений для разработчиков (cписок на 2020 год)

Reading time4 min
Views19K
Как упростить себе жизнь при помощи браузерных плагинов.

Хитрые веб-разработчики умеют пользоваться браузером на уровне «god-mode». Расширения(плагины, add-on) чрезвычайно полезны, когда речь идет об улучшении рабочей среды и повышении производительности написания кода.

Не за горами 2020 год. Появилось много новых расширений. Я собрал наиболее полезные расширения для веб-разработчиков и поместил их в один список.

Refined GitHub


Refined Github упрощает интерфейс GitHub и добавляет полезные улучшения.

image

Refined Github

«Надеемся, что GitHub заметит как необходимы эти улучшения и добавит некоторые из них. Поэтому, если вам нравится какое-либо из этих улучшений напишите, пожалуйста, в службу поддержки GitHub об этом».
— создатели Refined Github.
Читать дальше →

Как я пишу конспекты по математике на LaTeX в Vim

Reading time9 min
Views132K
Некоторое время назад на Quora я отвечал на вопрос: как успевать записывать за лектором конспект по математике на LaTeX. Там я объяснил свой рабочий процесс по конспектированию в LaTeX с помощью Vim и Inkscape (для рисунков). Но с тех пор многое изменилось, так что я хочу опубликовать несколько постов в блоге с описанием нового процесса. Это первая из статей.

Я начал использовать LaTeX для конспектирования во втором семестре курса математики, и с тех пор написал более 1700 страниц. Вот несколько примеров, как выглядит конспект:


Читать дальше →

Это нужно знать каждому программисту (или ядреный кликбейт про кодерский сленг)

Reading time5 min
Views22K


YAGNI, KISS, DRY, WET, SLAP, ASAP, YOLO — что все это вообще значит?

Аве, Кодер! Если ты когда-нибудь читал англоязычную литературу по программированию, проходил курсы на английском языке, работал с англоязычными коллегами-кодерами или просто даже переписывался с ними, ты наверняка встречал эти аббревиатуры и, когда один бородатый кодер говорил другому KISS — гарантирую, что твоя бровь хотя бы немного приподнималась.

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

Визуалам сюда: youtu.be/ub0YtnSwqRA
Читать дальше →

Механизмы и принципы работы памяти головного мозга человека

Reading time6 min
Views123K
image

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

В подготовленном материале постараюсь объяснить механизмы, особенности, функциональность, структурные взаимодействия и особенности в работе памяти. Так же, почему нельзя проводить аналогии с компьютерами в работе мозга и вести исчисления в единицах измерения машинного языка. В статье используются материалы взятые из трудов людей, посвятившим жизнь не легкому труду в изучении цитоархитектоники и морфогенетике, подтвержденный на практике и имеющие результаты в доказательной медицине. В частности используются данные Савельева С.В. учёного, эволюциониста, палеоневролога, доктора биологических наук, профессора, заведующего лабораторией развития нервной системы Института морфологии человека РАН.
Читать дальше →

Использование таймеров systemd вместо заданий cron

Reading time20 min
Views92K
Сейчас я занимаюсь заменой моих cron-заданий на таймеры systemd. Я пользовался таймерами несколько лет, но обычно в тонкости их применения особо не углублялся, разбираясь лишь с тем, что нужно было для выполнения интересующей меня задачи. Недавно я работал над серией материалов про systemd и узнал о том, что systemd-таймеры обладают некоторыми очень интересными возможностями.



Эти таймеры, как и задания cron, могут, в заданное время, вызывать выполнение различных действий в системе. Например — запуск скриптов командной оболочки или программ. Таймеры могут срабатывать, например, раз в день, причём — только по понедельникам. Ещё один пример — срабатывание таймера каждые 15 минут в рабочее время (с 8 утра до 6 вечера). Но таймеры systemd могут кое-что такое, что недоступно заданиям cron. Например, таймер может вызвать скрипт или программу через заданное время после некоего события. Таким событием может быть загрузка системы или запуск systemd, завершение предыдущей задачи или даже завершение работы сервиса, вызванного ранее по таймеру.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity