Termux для Android

Данное приложение предназначено для установки nodejs на устройство под управление ОС Android. В Google Play находим приложение Termux и устанавливаем на телефон (требуется минимальная версия android 5). Запускаем приложение и устанавливаем нужные пакеты, выполнив следующие команды:

apt update
apt upgrade
apt install coreutils
apt install nodejs
Читать далее «Termux для Android»

PersistentStorage в Chrome

Технология PersistentStorage позволяет в браузере Chrome сохранять файлы в файловой системе через JavaScript.

Но при первой попытке вызова функций может возникнуть ошибка:

The operation failed because it would cause the application to exceed its storage quota.

Чтобы исправить эту ошибку, возможно, поможет этот код. Он выводит запрос на разрешение использовать PersistentStorage

Читать далее «PersistentStorage в Chrome»

Вызов this.callParent(arguments) в асинхронных методах

Бывает ситуация когда нужно вызвать родительский метод в асинхронной функции и простой операция не работает:

// метод используется в прокси

/**
 * Переопределен. Вызывается при завершении синхронизации
 */
onBatchComplete: function (batch, operation) {
    var me = this;
    setTimeout(function () {
        me.callParent(arguments);
    }, 1000);
}
Читать далее «Вызов this.callParent(arguments) в асинхронных методах»

Бесплатный SSL на собственный сервер

Установка SSL сертификата от Let’s Encrypt на собственный сервер. Доменное имя у меня зарегистрировано на reg.ru. Мои шаги:

  • Переходим по ссылке и выбираем нужные конфигурации сервера. Я выбрал nginx и ubuntu 14
  • Выполняем команды
Читать далее «Бесплатный SSL на собственный сервер»

Применение событие с Ext.mixin.Observable

У нас стоит задача создать ExtJS объект без применения наследования от Ext.Base или Ext.Component и чтобы можно было использовать события.

Для реализации данной задачи нам поможет объект Ext.mixin.Observable
Пример инициализации класса: Читать далее «Применение событие с Ext.mixin.Observable»

Минификация JS файла при помощи Closure Compiler

Скачиваем файл compiler-latest

Распаковываем архив и выполняем команду

java -jar closure.jar --js src\logjs.js --js_output_file logjs.min.js

Оригинал статьи

Файловый менеджер на ExtJS

Для применения в проектах ExtJS «файлового менеджера» нужно подключить пакет filer_package. Инструкция тут

Данный пакет содержит набор компонентов для работы с файловой системой

  • IServ.Filer.Panel — панель для вывода информации из файловой системы
  • IServ.Filer.data.Filer — хранилище (Store) для работы с ФС
  • и т.д. Подробнее о компонентах тут

Читать далее «Файловый менеджер на ExtJS»

Компонент для выбора нескольких значений IServ.UX.Classic.StringTagField

Компонент IServ.UX.Classic.StringTagField предназначен для выбора нескольких значений и преобразовании результата в строку с разделителем в виде запятой.

Компонент является наследником Ext.form.field.Tag Читать далее «Компонент для выбора нескольких значений IServ.UX.Classic.StringTagField»

Автоинкрементов в PostgreSQL

Тем кто переходит на PostgreSQL с MySQL, наверное будет удивительно узнать что специального свойства у поля auto_increment в новой СУБД нету. Заменой автоинкрементов в PostgreSQL являются такие штуки как Sequences (счетчики).

Работают они так:

-- Создание счетчика
CREATE SEQUENCE auto_id_users;
-- Создание таблицы
CREATE TABLE users
(
  "id" integer NOT NULL DEFAULT nextval('auto_id_users'),
  "name" text
)

То есть счетчик взаимодействует с полем id  через свойство DEFAULT в которой прописывается nextval от счетчика.

У этого подхода есть ряд несомненных плюсов:

  • можно очень быстро узнать значение счетчика, без нагрузки к БД и обращению к таблицам. SELECT last_value from auto_id_users;
  • У счетчика функционал не ограничивается только увеличением на единицу, у него много возможностей.