Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
17 сентября 2018 г. 9:37

Шаблоны проектирования

шаблоны проектирования, abstract, cpp

Цели

  • Определяем интерфейс для создания объекта, но пусть подклассы решают, какой класс следует создавать. Фабричный метод позволяет создать экземпляр класса для подклассов.
  • Определение «виртуального» конструктора.
  • Оператор new является вредным.

Проблематика

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

16 сентября 2018 г. 18:25

EVILEG

EVILEG, Развитие

Выходные не прошли даром. За пару дней удалось написать достаточно функциональную поддержку загрузки фотографий через WYSIWYG редактор сайта. О чём хотелось бы подробнее сообщить пользователям сайта в виде статьи.

Цели

Написанием собственного WYSIWYG редактора преследую на данный момент несколько целей.

  1. Возможность отказаться от сторонних редакторов на сайте. До данного момента использовался CKEditor.
  2. Также проблемой CKEditor (кроме необходимости стилизации, которую я не хотел делать) являлось то, что средствами JavaScript его нельзя было перемещать по странице. Вернее можно было, но он просто переставал работать. В самописном WYSIWYG этой проблемы у меня нет.
  3. Для учёта информации о загружаемом контенте необходимо было также организовать контроль над загружаемыми изображениями, чтобы получить полноценную возможность первоначального формирования альбомов пользователей с дальнейшей возможностью переиспользования изображений в других постах, статьях и т.д. на основе сформированных альбомов.
  4. Добавление возможности вставки изображений в сообщения на форуме, комментарии, личные сообщения и т.д.

14 сентября 2018 г. 7:35

Шаблоны проектирования

Builder, шаблоны проектирования, Строитель

Причины

  • Отделение построения сложного объекта от его представления, чтобы тот же процесс построения мог создавать разные представления.
  • Разборка сложного представления, создание одной цели из нескольких вариаций.
13 сентября 2018 г. 12:03

Python 3

abstract, factory, abc, python

Пример абстрактной фабрики на языке программирования Python

13 сентября 2018 г. 10:12

C++

cpp, шаблоны проектирования, abstract, new

Обсуждение. «Подумайте о создании объектов как о фабрике, которая порождает эти самые объекты».

Здесь мы назначаем обязанности создания объектов фабричному объекту, а затем используем функции наследования и виртуальные члены для предоставления возможности «виртуального конструктора». Таким образом, существуют два аспекта. Клиент использует фабричный объект вместо оператора «new» для запроса создания экземпляров; и клиент имеет «жесткую привязку» к семейству или классу этой фабрики, и на протяжении всей работы приложения полагается на абстрактный базовый класс.

13 сентября 2018 г. 10:01

Шаблоны проектирования

шаблоны проектирования, абстрактная, abstract, new, фабрика

Причины

  • Предоставление интерфейса для создания семейств связанных или зависимых объектов без указания их конкретных классов.
  • Иерархия, которая инкапсулирует: множество возможных «платформ» и построение набора «продуктов».
  • Оператор new считается вредным.
9 августа 2018 г. 8:29

Linux

Bash, rsync, Linux

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

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

7 августа 2018 г. 7:10

Linux

Git, Fun, Linux

Just for fun.

Чем могут меряться программисты? Конечно, своими коммитами, хотя бы их количеством в Git репозитории.

Для этого можно использовать команду git shortlog, которая суммирует вывод git log, предоставляя более краткий вывод.

Опции

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

-n
--numbered

Сортировка вывода в соответствии с количеством коммитов на автора

-s
--summary

Подавить описание коммита и предоставить только сводный счетчик.

6 августа 2018 г. 6:52

C++

template, lambda, C++11

Мир программирования на C++ в новых стандартах позволяет нам вытворять самые разные вещи, благодаря которым можно спокойно отказываться от некоторых старых утверждений или принципов, либо просто гибко подходить к этим принципам.

Хотелось бы изложить свой взгляд на работу идиомы RAII и стандарта C++11 относительно одно устоявшийся принцип авторство которого приписывается Эдсгеру Дейкстре :

«модуль (в данном случае функция) должен иметь только одну точку входа и только одну точку выхода»

Для данного принципа множественные return в функции/методе противоречат принципам структурного программирования по следующим причинам:

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

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

3 августа 2018 г. 8:05

Qt

Profiling, Qt, Профилирование

Анализатор производительности

Вы могли слышать об Анализаторе Производительности (названным “CPU Usage Analyzer” (Анализатор использования центрального процессора (ЦП)) в Qt Creator 4.6 и ранее). Речь идет о профилировании приложений с использованием превосходного инструмента «perf» в Linux. Вы можете использовать его локально в Linux – базовой настольной системе или на разных встраиваемых устройствах. «perf» может записывать различные события, которые возникают в вашем приложении. К ним относятся ошибки (потери) в кеше, загрузки памяти, переключатели контекста или одно из самых распространенных, циклы CPU, которые периодически записывают образец стека после прохождения ряда циклов CPU. Полученный профиль показывает, какие функции в вашем приложении занимают большинство циклов процессора (CPU). Это самый видный пример использования Анализатора Производительности, во всяком случае, до сих пор.

НБ
15 февраля 2019 г. 13:09
Николай Булахтин

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
НБ
15 февраля 2019 г. 13:03
Николай Булахтин

C++ - Тест 002. Константы

  • Результат:25баллов,
  • Очки рейтинга-10
НБ
15 февраля 2019 г. 13:01
Николай Булахтин

C++ - Тест 001. Первая программа и типы данных

  • Результат:73баллов,
  • Очки рейтинга1
Последние комментарии
V
14 февраля 2019 г. 18:41
Vlad15007

Спасибо огромное! Заработало!
А
12 февраля 2019 г. 9:26
Александр90

Сам разборался, спасибо.
А
12 февраля 2019 г. 8:19
Александр90

День добрый! Можешь выложить форму mainwindow.ui от урока? Заранее спасибо
11 февраля 2019 г. 10:51
Евгений Легоцкой

Нет, у меня проблема с жёстким диском случилась, занимался восстановлением ПК, ещё пару вечеров придётся этим заниматься, увы.
Сейчас обсуждают на форуме
15 февраля 2019 г. 21:22
IscanderChe

Доброй ночи.Скромно напоминаю о своём вопросе...
15 февраля 2019 г. 15:36
Евгений Легоцкой

Ну я тут нашёл одно решение, но сам его не проверял. Вам нужно помещать фамилии скорее всего в ячейки заголовка, и потом просто перерисовывать их QHeaderView * header = m_ui->tableWidget...
15 февраля 2019 г. 7:53
Евгений Легоцкой

Добрый день! Не работал с remoteobjects, поэтому глянул документацию, чтобы рассмотреть, что это за зверь. После просмотра документации сложилось стойкой впечатление, что это вполне возм...
m
14 февраля 2019 г. 18:28
mr_roman

Нашел решение на Java. Удалось интегрировать в проект сервиса на Qt, теперь из Qt запускаю Java-код акселерометра.
14 февраля 2019 г. 11:00
Евгений Легоцкой

ok. I see. You changed related name Try this {% if goal.joined.all|user_in:request.user %}
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы