УСТАНОВКА JPEGOPTIM

sudo apt install jpegoptim

ГлавнаяМультимедиаОптимизация изображений Linux
ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЙ LINUXМультимедиа Август 24, 2015 7 admin
ubuntu
Если у вас есть очень много изображений на домашнем компьютере или сервере, и они занимают слишком много места, то их размер однозначно можно уменьшить даже без потери качества. Также это может быть очень полезным при загрузке изображений в облачное хранилище.

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

jpegoptim — утилита для оптимизации и сжатия изображений без потери качества в формате JPEG;
pptipng — это небольшая программа, которая позволяет уменьшить размер PNG изображений без потери качества.
JPEG и PNG — это наиболее распространенные форматы изображений в сети интернет, поэтому вы сможете оптимизировать почти все изображения.

Содержание статьи:

Оптимизация JPEG изображений
Установка Jpegoptim
Как использовать jpegoptim
Оптимизация изображений PNG в Linux
Установка optipng
Сжатие изображений с помощью optipng
Выводы
ОПТИМИЗАЦИЯ JPEG ИЗОБРАЖЕНИЙ
Утилита jpegoptim — это инструмент командной строки, который может использоваться для сжатия изображений в формате JPEG, JPG и JFIF без потери качества. Утилита оптимизирует изображения на основе таблиц Хаффмана. Как вы знаете, в алгоритме JPEG и так используется сжатие, но это сжатие достигается с помощью потери качества, а здесь мы можем оптимизировать размер не меняя картинку.

УСТАНОВКА JPEGOPTIM
Для установки утилиты в Ubuntu, Debian и основанных на нем дистрибутивах выполните:

sudo apt install jpegoptim

В Fedora, Red Hat, CentOS и других, основанных на них дистрибутивах дела обстоят немного сложнее, вам придется сначала добавить репозиторий epel-release. Вы можете сделать это с помощью такой команды:

sudo yum install epel-release

Или:

sudo dnf install epel-release

Затем вы можете установить jpegoptim из только что подключенного репозитория:

sudo yum install jpegoptim

Или:

sudo dnf install jpegoptim

КАК ИСПОЛЬЗОВАТЬ JPEGOPTIM
Давайте рассмотрим как пользоваться jpegoptim. Использовать утилиту для сжатия изображений linux очень просто. Для этого достаточно выполнить программу и передать ей имя файла. Вот такой синтаксис:

$ jpegoptim опции имя_файла.jpeg

Рассмотрим опции утилиты:

-d — указать папку, в которую нужно сохранять готовые изображения;
-f — принудительная оптимизация;
-m — показатель качества, отменяет сжатие без потерь и устанавливает уровень качества от 0 до 100, чем больше, тем лучше;
-n — не выполнять реальную оптимизацию, а только показать результат;
-S — задать размер готового изображения, можно указать в процентах или килобайтах;
-o — заменить исходный файл;
-p — сохранить временные метки;
-P — сохранить права файла.

https://losst.ru/szhatie-png-v-linux

Генерация БД для MySql при помощи утилиты mysql-db-generator

Для быстрой генерации БД MySql применяется утилита:

git clone git://git.appcode.pw/mysql-db-generator.git

После выполнения указанной выше команду, выполнить следующую

node index dbname=[dbname] username=[username]

, где

  • db:string — имя создаваемой БД
  • username:string — имя пользователя для безопасности

В результате выполнения будет сформирован файл query.sql

Структура приложения

  • templates — каталог для хранения шаблонов для создания запросов
    • functions — функции
    • tables — таблицы
    • views — представления
  • index — главный файл для формирования запроса

Правила переопределения шаблонов — утилита file-merge

git clone git://git.appcode.pw/file-merge.git

Специальные комментарии

  • //#UPDATE — помечается начало обновления
  • //#UPDATEEND — помечается завершение обновления
  • //#ADD — помечается начало добавления
  • //#ADDEND — помечается завершение добавления

Пример обновления данных

Оригинал:

Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    idProperty: 'id'
    ...

В оригинальном файле нам требуется убрать свойство idProperty. Наличие пустой строки обязательно, т. к. таким образом сообщается, сколько строк нужно обновить.

Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    //#UPDATE

    //#UPDATEEND
    ...

В оригинальном файле нам требуется обновить свойство idProperty

Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    //#UPDATE
    idProperty: 'LINK'
    //#UPDATEEND
    ...

Пример добавления данных

Оригинал:

Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    idProperty: 'id'
    ...

Требуется добавить еще одно свойство.

Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    idProperty: 'id'
    //#ADD
    displayProperty: 'table_name',
    //#ADDEND
    ...

Или добавить новую функцию

    validators: {
        user_id: 'presence',
        roles_id: 'presence',
        table_name: { type: 'length', max: 255 }
    }
    //#ADD
    , fio: function () { // '''тут запятая должна находиться именно здесь'''

    }
    //#ADDEND
});

Принудительная генерация и запрет

Для принудительной перегенерации файла требуется указать в начале файла

//#overwrite
Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    idProperty: 'id'
    ...

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

//#not overwrite
Ext.define('PN.model.accesses', {
    extend: 'Ext.data.Model',
    idProperty: 'id'
    ...

Visual Studio Code как среда разработки для ExtJS

С официального сайта скачиваем установщик

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

— генерация проекта
sencha -sdk «D:\Install_new\sencha\ext-6.0.0-gpl\ext-6.0.0\» generate app App1 «E:\serp\work\_sencha\App1»
— или
sencha -sdk «D:\Install_new\sencha\ext-6.0.0-gpl\ext-6.0.0\» generate app -modern App1 «E:\serp\work\_sencha\App1»

Открываем проект с помощью VS Code

В терминале запускаем проект.

— запускаем проект, теперь он доступен по адресу http://localhost:1841/
sencha app watch

— билдим
sencha app build modern production
sencha app build modern production «d:/temp»
sencha app build modern testing

Подробнее о сборке можно узнать здесь

Использование модуля для обработки ошибок

Приложение можно скачать здесь.

Для передачи данных об ошибке в клиентском приложение добавить следующий скрипт (лучше в теге head)

var __error = window.onerror;
var __es = [];
// дополнительные параметры
var __meta = {
    user: 'test',
    ver: '1.0.0' // указание версии обязательно
};
var __ts = null;
window.onerror = function (msg, url, num, p, err) {
    var str = '';
    if (err && (str = err.stack)) {
        __es.push(str.replace(new RegExp(location.href, 'gi'), ''));
        if (__ts == null) {
            __ts = setTimeout(function () {
                clearTimeout(__ts);
                __ts = null;
                __se();
            }, 500);
        }
    }

    if (__error)
        return __error(msg, url, num, p, err);

    return false;
}
/**
 * отправка сообщений об ошибке
 */
function __se() {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", 'http://localhost:3000/api/error?id=1', true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
        m: __meta,
        e: __es
    }));
}

Заменив в нем адрес отправки http://localhost:3000/api/error?id=1 не требуемый. При этом идентификатор приложения (id) можно указать любой.
Так же с клиента можно дополнительно передавать требуемые поля для анализа в объекте __meta.

Серверное приложение имеет три активные ссылки:

  • /api/error — принимает постовые запросы с ошибками
  • /list?id=1&ver=0.0.0 — выводит список ошибок по приложению (id) и версии (ver)
  •  /upload — позволяет загружать на сервер приложения для обработки

Для корректной работы требуется:

  • чтобы в папке public были созданы папки: apps, logs, temp
  • дать права этим папкам на запись