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

Django

BeaftifulSoup4, Django, Python, HTML, Python 3

При развитии веб-сайта, на котором добавлена возможность писать комментарии или публиковать статьи, в которых разрешена html-вёрстка , важен механизм для очистки нежелательных html-тегов, в частности тегов script и style , поскольку вредоносные скрипты на качественном ресурсе точно не должны присутствовать. А также хорошо будет иметь возможность очистки стиля текста, особенно, если ресурс подразумевает единообразный стиль. Разнобой кричащих шрифтов никому не нужен, да и проблем с вёрсткой добавляет.

Для реализации подобного механизма я использую Python пакет Beautiful Soup 4 и наконец-то написал один класс, который по сути делает всё необходимое мне. Удаляет ненужные теги, добавляет необходимые классы к тегам, сохраняет классы в тегах, если при зачистке их нужно оставить, это важно для классов, которые добавляются ещё на этапе написания комментария, например, при вставке YouTube видео или добавлении программного кода, когда пользователь выбирает, какой именно язык программирования должен быть представлен в блоке программного кода.

23 октября 2018 г. 10:11

C++

cpp, C++17, fallthrough

Перешли на работе на использование компилятора, который поддерживает стандарт C++17.

Автивно начинаем пользоваться различными плюшками из данного стандарта.

Порадовал атрибут [[fallthrough]] для switch case конструкций.

11 октября 2018 г. 18:04

Qt

Qt, QScriptEngine, QScriptValue, JavaScript, QScriptContext

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

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

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

Надеюсь, что я понятно объяснил, почему нам нужно запускать выполнение JavaScript кода в C++ приложении.

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

Также добавим поле ввода TextEdit для написания JavaScript кода, который мы будем выполнять в нашем приложении.

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

Также добавим QPushButton, который будет запускать выполнение JavaScript кода.

Приложение будет выглядеть так, как на рисунке ниже.

10 октября 2018 г. 13:32

C++

C++, once, pragma

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

Всегда было интересно, действительно ли ускоряется сборка при использовании директивы #pragma once , вместо классического #ifndef #define #endif.

Проверить это ускорение на маленьком проекте довольно проблематично, ведь если проект собирается в среднем за 20 секунд, то и ощутимого ускорения мы скорее всего не увидим, поскольку длительность сборки всегда будет плавать от 17 до 23 секунд.

Но у меня выдалось свободное время и удалось проверить эту теорию на крупном проекте.

9 октября 2018 г. 19:16

Qt

Qt, DLL, dll, Windows, dynamic

На форуме возник вопрос, как создать динамическую библиотеку и правильно её подключить в сторонний проект. Периодически такие вопросы возникают, поэтому рассмотрим один вариант создание динамической библиотеки dll для Windows с использованием визардов стандартных в Qt Creator.

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

Создадим два проекта:

  1. QuiLib - это будет внешняя динамическая библиотека, которая будет содержать одно диалоговое окно. Данное диалоговое окно будет открываться в основном проекте.
  2. WithDynamicLibrary - проект, который будет использоваться как раз для подключения данной динамической библиотеки.

1 октября 2018 г. 8:34

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

шаблоны проектирования, приспособленец, flyweight

Цели


  • Использование общего доступа для эффективного использования большого количества объектов.
  • Стратегия GUI Motif по замене тяжеловесных виджетов легкими виджетами.

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

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

27 сентября 2018 г. 9:11

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

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

Цели

  • Предоставить унифицированный интерфейс для набора интерфейсов в подсистеме. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
  • Обернуть сложную подсистему более простым интерфейсом.

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

Для сегмента клиентского доступа требуется упрощенный интерфейс для доступа к общей функциональности сложной подсистемы.

26 сентября 2018 г. 11:55

Python 3

python, pool, пул, шаблоны проектирования

Пример шаблона проектирования Объектный пул на языке программирования Python.

26 сентября 2018 г. 11:53

Java

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

Пример шаблона проектирования Объектный пул на языке программирования Java.

26 сентября 2018 г. 10:55

C++

шаблоны проектирования, пул, C++

Пример шаблона проектирования Объектный пул на языке программирования C++.

IO
20 января 2019 г. 18:39
Ivan Otreshko

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

  • Результат:0баллов,
  • Очки рейтинга-10
IO
20 января 2019 г. 15:27
Ivan Otreshko

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

  • Результат:0баллов,
  • Очки рейтинга-10
v
17 января 2019 г. 11:51
vitalir12

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
I
16 января 2019 г. 8:06
IscanderChe

Заработало. Забыл model->select(); вписать.
I
16 января 2019 г. 8:02
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
16 января 2019 г. 7:51
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
16 января 2019 г. 7:43
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Сейчас обсуждают на форуме
21 января 2019 г. 16:28
Михаиллл

Добрый день.Почему работая на С++, нельзя полноценно использовать dll , написанных на C#, java?И почему используя другие языки, можно использовать dll , написанных на C++?
21 января 2019 г. 16:24
Михаиллл

Нашел ссылку на древние типы данных , а тут нынешние их аналоги.Но все равно каое что непоня:что такое : LPCTSTR, CALLBACK (наверно QDialig),IDOK, EDITSTREAM, TCHARКод...
21 января 2019 г. 14:30
Евгений Легоцкой

Порядок создания тем - пункт 4
ПБ
21 января 2019 г. 9:23
Павел Богдевич

Ребята, привет. Это 2 версии одного приложения. Отличаются только способом инициализации таблицы. В одной версии работает сортировка таблицы, когда кликаешь по хедеру колонки, в другой - нет. ...
21 января 2019 г. 7:36
Евгений Легоцкой

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

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