© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
17 сентября 2017 г. 8:10

DjangoDjango - Урок 026. Настройка минификации CSS и JavaScript кода в PyCharm

Minification, CSS, JavaScript

При разработке сайта часто обращают внимание на то, что сайт должен иметь малое время отклика на действия пользователя, поэтому применяют различные методы для улучшения производительности сайта, такие как кеширование данных на стороне пользователя, использование Cookie файлов, а также минификацию CSS и JavaScript файлов. Минификация кода этих файлов позволяет удалить ненужные пробелы, символы и комментарии, которые не нужны на рабочем сервере, а требуются лишь для разработки проекта.

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

  • style.css -> style.min.css
  • scripts.js -> scripts.miin.js

Предлагаю настроить среду разработки PyCharm для автоматической минификации всех этих файлов в вашем Django проекте.

Минификация кода css и jsavascript поддерживается только в PyCharm Professional Edition.

Важный момент, настройка будет производится под Ubuntu-based операционную систему KDE Neon 5.8 . Установку необходимых пакетов под Windows я не рассматриваю, поскольку считаю, что разработка Django проекта под этой ОС - это моветон.

14 сентября 2017 г. 19:05

C++C++ - Урок 009. Модульность

C++, Modularity

Ключевым моментом в управлении взаимодействием различных частей в C++ программе является разграничение интерфейса компопонентов программы с их реализацией. На уровне языка, C++ представляет интерфейс в виде объявлений. Обяъвление указывает все необходимые части интерфейса, которые необходимы например для функции: возвращаемое значение, аргументы, имя функции. Например:

double sqrt(double); // функция квадратного корня, которая принимает аргументы типа double и возвращает переменную типа double

// Объявление класса со всеми необходимыми методами и участниками класса
class Vector 
{
public:
    Vector(int s);
    double& operator[](int i);
    int size();
private:
    double∗ elem; 
    int sz;
};
13 сентября 2017 г. 20:05

QMLQML - Урок 031. Отключаем системное обрамление окна в QML и пишем код для обработки перемещения и ресайза окна

QML, Qt, Frameless Window, Custom Style

Если по какой-то причине, вы решили отказаться от стандартного системного обрамления окна и реализовать все Title Bar`ы окна самостоятельно в QML, то вы вполне можете реализовать это средствами QML, что будет даже проще чем в C++, на мой взгляд. Для ознакомления можете посмотреть статью по кастомизации окна приложения в стиле AIMP . Там имеется значительная доля кода по реализации механики перемещания окна, а также его ресайза. Преимущество QML в данном случае состоит в том, что QML сразу обеспечивает верстку приложения, а значит можно с помощью MouseArea и якорей сразу определить нужную обработку при клике и перемещении мыши без каких-либо специальных расчётов положения курсора в области окна.

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

2 сентября 2017 г. 11:25

C++C++ - Урок 008. Перечисления

c++, enum, enumerations

В дополнение к классам C++ поддерживает перечисления. В современном стандарте C++ поддерживаются как перечисления без области видимости, которые были введены в ранних версиях C++, а также C.

enum ColorTypes {
    Green,
    Yellow,
    Red
};

Так и перечисления с областью видимости

enum class ColorTypes {
    Green,
    Yellow,
    Red
};
29 августа 2017 г. 19:26

QtОткрываем fb2-файлы средствами Qt

fb2, html, xml, QXmlStreamReader

В настоящее время fb2 является популярным форматом для хранения книг. Файл fb2 – частный случай xml. Основным элементом его структуры, как и для html, является тэг (управляющие слова). В этой статье я расскажу, как создать простейший просмотрщик fb2-файлов. Проект с исходным текстом можно скачать по ссылке .

Общие сведения

Теги делятся блочные и строчные. Блочные теги группируются в пары из открывающего тега, закрывающего тега между которыми располагается содержимое. Например, абзац текста записывается как

<p>Абзац текст</p>

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

<image l:href = “#_0.jpg”/>

содержит информацию: 1) о том, что в данную точку документа нужно вставить рисунок, 2) ссылку на этот рисунок. Ниже разобран алгоритм вставки рисунка в текст. Различить 3 типа тэгов просто с помощью слеша. У строчного тэга слеш перед закрывающейся скобкой, у закрывающего блочного после открывающейся, у открывающего блочного он отсутствует.

Если хотите полностью разобраться, изучайте html. Между html и fb2 есть некоторая разница, хотя во многом они идентичны. На такие элементы я буду указывать по ходу повествования. Также отмечу, что xml в отличии от html не использует язык CSS, в нашем случае это значит то, что в fb2 файле нет указаний на то, как отформатирован текст (размер и цвет шрифта, расположение абзацев и т.п.). Всё это мы должны (при желании) реализовать самостоятельно.

11 августа 2017 г. 18:58

QtИспользование возможностей winExtras при работе с QML

winextras, qt, qml, TaskbarButton, ThumbnailToolBar, JumpList

Некоторое время назад я написал несколько статей об использовании библиотеки QtWinExtras, которая открывает доступ к специальным возможностям, доступным только для ОС Windows. Теперь хочется сказать пару слов о том, как повторить тоже c использованием QML.  Для этого нам понадобится создать проект Qt Quick, подключить в проекте модуль winextras

import QtWinExtras 1.0

и использовать 3 объекта: TaskbarButton для создания строкой прогресса и управления ей, ThumbnailToolBar для работы кнопками на всплывающем окне панели задач и JumpList (для работы с jumpList). Также добавим FileDialog для полноценной работы jumpList.

6 августа 2017 г. 18:56

QtИспользование JumpList для хранения файлов, открытых в приложении, при использовании Qt

winExtras, jumpList

JumpList, одна из возможностей, которые присутствуют только в ОС Windows (версии 7 и выше). В этом листе, в частности, можно хранить ссылки на последние открытые в приложении файлы.

Для использования этой функции необходимо

5 августа 2017 г. 9:54

QtQt/C++ - Урок 071. Динамическое создание графиков с QtCharts.

Qt5, QtCharts

Разберём вариант создания графиков, когда необходимо добавлять большое количество графиков, которые создаются динамически. Подобный урок уже был в статье по динамическому созданию виджетов, только там добавлялись кнопки QPushButton . Здесь применяется тот же самый вариант работы. Выделяется память в куче, производится настройка виджета с графиком, и виджет добавляет в QScrollArea или QLayout, чтобы отобразить сам график в окне приложения.

Приложение будет выглядеть следующим образом:

В данном примере будет добавляться 5 графиков в горизонтальный Layout ( QHBoxLayout ). Также в примере будет добавлена всплывающая подсказка, которая содержит некоторую информацию. Например, номер графика и количество отсчётов.

5 августа 2017 г. 5:13

QtИспользование кнопок WinThumbnailToolButton при работе с Qt на Windows

Qt, winextras, ThumbnailToolButton, WinThumbnailToolButton, QWinThumbnailToolButton

Кнопки класса QWinThumbnailToolButton – одна из возможностей, доступных только для ОС Windows (7 и старше). Такие кнопки вы могли видеть у программы Windows Media Player

Для использования таких кнопок необходимо

30 июля 2017 г. 18:20

QtСтрока прогресса на иконке панели задач приложения Windows с помощью Qt

Qt, winextras, QWinTaskbarProgress, полоса прогресса

Библиотека Qt предоставляет ряд платформозвисимых возможностей. Одна из таких возможностей для Windows – использование строки прогресса на иконке панели задач. Возможность эта доступна для ОС начиная с версии 7.

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

QT += winextras

подключить библиотеку

#include <QtWinExtras>

и добавить макросы

QT_FORWARD_DECLARE_CLASS(QWinTaskbarButton)
QT_FORWARD_DECLARE_CLASS(QWinTaskbarProgress)
21 мая 2018 г. 8:30
Nasty

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

  • Результат 10 баллов
  • Очки рейтинга -10
20 мая 2018 г. 12:26
Venic

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

  • Результат 58 баллов
  • Очки рейтинга -2
20 мая 2018 г. 12:16
Venic

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

  • Результат 90 баллов
  • Очки рейтинга 8
Последние комментарии
19 мая 2018 г. 12:44
EVILEG

Django - Snippet 001. get_object_or_none

А вы гарантируете, что метод first вернёт нужный объект, если в таблице две похожих записи? Этого никто не гарантирует. Может возникнуть неопределённое поведение приложения, если запись не так...
19 мая 2018 г. 12:34
Pavel

Django - Snippet 001. get_object_or_none

Согласен с тем что ваше решение более очевидно при чтении кода. first() же здесь применяется не совсем по назначению. А с последствиями "моего" решения не согласен. Метод вернёт только один об...
19 мая 2018 г. 12:27
EVILEG

Как я использовал FilterView заместо ListView для упрощения фильтрации

Может быть, а может и нет, все имеют различную речь.. не могу отвечать за всех пользователей ресурса.. поскольку каждый пользователь может дополнить материал ресурса статьями.
19 мая 2018 г. 12:25
EVILEG

Django - Snippet 001. get_object_or_none

В вашем случае происходит подмена сущностей. Вместо того, чтобы взять один конкретный объект, вы забираете queryset а потом берёте из него первый объект. Нехорошо будет, если queryset в каком-...
19 мая 2018 г. 11:11
Pavel

Django - Snippet 001. get_object_or_none

Тоже искал подобную функцию, чтобы не обрабатывать каждый раз исключения. И нашёл на so совет использовать вместо неё метод менеджера first(), который возвращает None при пустом queryset. Т.е ...
Сейчас обсуждают на форуме
21 мая 2018 г. 16:18
otvertka

Выводит мусор

Да, мыши. Т.е. мне надо создать класс-потомок от QPushButton, и там переопределить метод mousePressEvent? И как тогда у  Buttons поменять класс на созданный?
20 мая 2018 г. 2:05
vitaliy_antipov

Удаление серии из графика

Ой, извините, совсем запарился. Туплю: void MainWindow::onDelSeries(int i){ chartview->chart()->findChild<QLineSeries *>("obj" + QString::number(i))->deleteLater();...
18 мая 2018 г. 8:55
mak_trefa

Сборщик мусора и Connections в qml

можешь попробовать в деструкторе модели вызвать throw; и в дебагере посмотреть stacktrace
17 мая 2018 г. 20:30
EVILEG

Нарисовать дугу в QGraphicsItem

Добрый день! Оу, я смотрю по гитхабу, что вы уже разобрались с проблемой. Извиняюсь, заработался и забыл про ваш вопрос.
17 мая 2018 г. 15:34
Евгений_Канусовский@1981

Проблема с combobox

Спасибо за очередную помощь!

Рекомендуемые страницы