DIGITAL.ERA

DIGITAL.ERA

Размышления, истории и идеи.

GSAP ES6
gsap

GSAP ES6

По умолчанию в версии 2.0 по-умолчанию используюся ES модули. Теперь можно импортировать индивидуальные пакеты import TweenMax from 'gsap/TweenMax' import Draggable from 'gsap/Draggable' TweenMax включает (и экспортирует) множество общеиспользуемых классов и мы можем импортировать их: import { TweenMax, TimelineLite, Power2, Elastic, CSSplugin } from 'gsap/TweenMax' // TweenMax includes TweenLite, TimelineLite,
2 min read
Подготовка к публикации в Play Store Flutter приложения
flutter

Подготовка к публикации в Play Store Flutter приложения

В привычном цикле разработки Flutter приложения мы запускаем flutter run или используем опции Run или Debug в IDE. По умолчанию Flutter создает  версию приложения для отладки. И вот версия для публикации готова к размещению, например в Google Play Store.  Перед тем как публиковать приложение необходимо несколько завершающих штрихов: * Добавить иконку
4 min read
Удалить старые файлы ядра в Ubuntu/Debian
ubuntu

Удалить старые файлы ядра в Ubuntu/Debian

После установки/обновления нового ядра Linux, старые файлы не удаляются автоматически. Если раздел загрузки выделен на диске и имеет недостаточно места это может стать проблемой. Конечно можно не удалять эти файлы, если проблем с местом на диске нет. Причинами для удаления могут быть: очистка места на диске; очистка меню загрузки.
1 min read
Процесс разработки, сроки, бюджеты
документация

Процесс разработки, сроки, бюджеты

Одно из основных направлений в работе DIGITAL.ERA - это веб-разработка. Мы разрабатываем сайты на основе 1С-Битрикс, интернет магазины в экосистеме InSales, веб-приложения в экосистеме "Ruby on Rails". Мы сможем  помочь в разработке корпоративного сайта, интернет магазина или веб-сервиса, интегрированного в ваши бизнес процессы. Наша специализация - это проекты с
2 min read
Поддержка сайта
документация

Поддержка сайта

Техническая и не только поддержка проекта от минимального уровня потребностей до комплекса услуг сопровождения.  Каждый проект обладает индивидуальными параметрами и  требует индивидуальных расчетов. Есть общие для всех проектов потребности - это обеспечение бесперебойной  работы серверов (хостинга), своевременная оплата и  мониторинг арендованных ресурсов проекта, оформление необходимых документов, привлечение и работа с
3 min read
iOS prevent scrolling on body
ios

iOS prevent scrolling on body

Обычно чтобы убрать прокрутку с body достаточно добавить правило body { overflow: hidden; } Это позволит например не прокручивать контент, находящийся под оверлеем. НО это не работает в iOS. Одно из быстрых решений добавить правило { postion: fixed; } body.lock-position { height: 100%; overflow: hidden; width: 100%; position: fixed; }
Docker registry
docker

Docker registry

Локальный реестр. Используем команду docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ registry:2 После запуска команды локальный docker реестр готов к использованию. Но это годится только для примера. Для производственной среды нужно защитить реестр с помощью TLS/SSL и конечно использовать механизм контроля доступа. Копирование образа в
2 min read
RXJS retryWhen with Promise
rxjs

RXJS retryWhen with Promise

retryWhen( receives: (errors: Observable) => Observable, the: scheduler ): Observable Задача: Повторить запрос к серверу, если запрос завершился с ошибкой. При повторении ошибки - пауза между запросами увеличивается, при достижении лимита повторов - запросы прекращаются.   retryWhen - повторить наблюдаемую последовательность при возникновении ошибки, используя настраиваемый критерий. import {timer, interval} from 'rxjs' import
1 min read
Цикличность и пафос
философия

Цикличность и пафос

Вечные ценности, на то они и вечные, чтобы быть актуальными всегда. А как же в разработке? В разработке всё зациклилось. Зациклилось в позитивном смысле. Теперь всё обновляется и изменятся постоянно. Это же прекрасно, становиться лучше и лучше. Это можно сравнить с эволюцией. Но оборотная сторона — слишком быстро устаревает то, что
1 min read
Персонализация в интернет
философия

Персонализация в интернет

Персонализация, однозначно, особенно в конкурентных областях, там, где интернет сегменты насыщенны информацией, ограничивает выбор по региону. И чем выше конкуренция, тем уже область разнообразия. Исторически так сложилось, что поисковая система пытается решать за нас, что нам нужно, определять, где лежит область наших интересов. В итоге, например Яндекс по некоторым поисковым
2 min read
Реактивное программирование - Потоки - BLoC
flutter

Реактивное программирование - Потоки - BLoC

Что такое потоки? Давайте представим трубу, обычную трубу с двумя концами, но только один из них позволяет что-то вставить в него. Когда мы вставляем что-то в этот конец, поток внутри трубы направляется наружу через другой конец. Во Flutter * трубы (pipe) называются Потоки (streams) * для управления потоками обычно используются StreamController * Для
3 min read
Rails, Webpacker: pug and sass loaders
rails

Rails, Webpacker: pug and sass loaders

Кто работает c  Pug, Slim, Sass никогда больше не возвратятся к "чистому" HTML,CSS коду по крайней мере по своей воле. Скорость кодирования высока, ошибок меньше. Rails 6.0.x, Webpacker 5.x (5.2) (2020-10) Не получается запустить "из коробки" связку Sass, Vue, Pug. Прошло уже много времени, но
3 min read
Rails 6.0 - webpacker hmr in docker
rails

Rails 6.0 - webpacker hmr in docker

Главное * для webpacker создаем отдельный docker сервис, но используем один образ * host - имя контейнера где работает webpacker, Rails будет работать (компилировать) с этим адресом * публичный хост - localhost, при HMR будет опрашивать localhost:3035 * разрешить политику подключения  policy.connect_src для HMR * указываем в настройках hmr: true и hot:
1 min read
Swap size Ubuntu 18.04
ubuntu

Swap size Ubuntu 18.04

Swap это пространство, используемое операционной системой для расширения оперативной памяти, при её нехватке. Если памяти не хватает, используется swap, если swap будет заполнен, то работа компьютера станет нестабильной или вообще невозможна. Вот пример изменения размера Swap сначала выключим все swap процессы sudo swapoff -a создадим файл размеров в 8Gb sudo
1 min read
Rails Redis Cache Store
rails

Rails Redis Cache Store

Начиная с Rails 5.2 можно использовать в качестве кеша Redis. Несколько разных типов кеша доступны в Rails:  MemCacheStore, FileStore и MemoryStore. Теперь начиная с версии 5.2 мы имеем встроенную поддержку Redis в качестве хранилища кеша. Как работает кеш в Rails можно почитать здесь. По умолчанию Rails использует кеширование
1 min read
Rails фоновые задачи с Sidekiq
rails

Rails фоновые задачи с Sidekiq

Допусти нам нужно по требованию выполнить импорт данных из CSV и отобразить результаты. При стандартном подходе в контроллере создадим метод  и выполним обработку файла. class HomeController < ApplicationController require 'csv' def upload csv_path = File.join Rails.root, 'db', 'data.csv' CSV.foreach(csv_pathm headers: true) do |item| Element.create(
1 min read
9  ChatBots platform (2018)
bot

9 ChatBots platform (2018)

Зачем нужны чат-боты бизнесу? ChatBot может помочь в развитии отношений с клиентами выполняя некоторые однообразные, можно сказать рутинные операции. Что именно? Чат-бот может легко и без ошибок отвечать на однообразные вопросы, собирать необходимую информацию, создать лиды и контакты в CRM. В чём плюсы * Доступность 24/7. Никогда не устает, всегда
1 min read
Rails TimeZone
rails

Rails TimeZone

Ruby предлагает два класса для управления временем: Time и DateTime. TZInfo является отдельной библиотекой часовых поясов, которая обеспечивает преобразования с учетом перехода на летнее время и включает в себя данные о 582 различных часовых поясах. Часовой пояс в Rails В Rails ActiveSupport::TimeZone является оберткой для TZInfo, предоставляющая набор из
2 min read
rails

OmniAuth Rails

OmniAuth - библиотека стандартизирующая аутентификацию через различных провайдеров  в веб-приложении. Библиотека создавалась чтобы быть мощной, гибкой и в тоже время "маленькой" насколько это возможно. Любой разработчик может создать стратегию для OmniAuth которая сможет аутентифицировать пользователей из разных несовместимых между собой систем (приложений). OmniAuth стратегии создаются для любых случаев от Facebook
2 min read
rails

Rails Request, Subdomain, Host

В Rails доступен request (ActionDispatch::Request) со всей необходимой информацией о запросе.  Основной базовый класс Rack::Request. Чтобы получить данные о различных параметрах  запроса используем встроенные методы и хелперы. Во первых мы можем получить полный базовый url - request.base_url. Получить имя хоста через request.host и имя поддомена,
rails

Rails Slim Markdown Tables

По умолчанию парсер таблиц отключен. И вместо таблиц будет обычная строка. Включить обработку разметки таблиц в связке Rails+Slim+Redcarpet можно через опции подключаемых движков. В данном случае Redcarpet для Markdown. Gemfile gem 'slim-rails' gem 'redcarpet' По умолчанию парсер таблиц отключен. config/initializers/slim.rb # Standard Slim options # Slim::Template.
Некоторые типы данных Rails
rails

Некоторые типы данных Rails

Широко распространенные типы данных в Rails. Гео-координаты и деньги. Гео-данные - координаты точки на карте. Деньги - стоимость товаров и услуг, прайс-лист, финансовые данные. Пример для PostgreSQL. Правильный тип данных имеет важное значение для работы и поддержки приложения.   Гео-данные rails g Location 'lng:decimal{10,6}' 'lat:decimal{10,
1 min read
Rails 5.2.2, Neo4J, Docker
rails

Rails 5.2.2, Neo4J, Docker

Пример настройки Rails 5.2.2 и Neo4J в экосистеме Docker/Docker Compose. Указаны файлы необходимы для начала работы в существующем Ruby on Rails проекте. Можно воспринимать как контрольный лист интеграции Rails с Neo4J. Gemfile gem 'neo4j', '~> 9.4.0' config/application.rb (or config/environments/{development|test|production}
1 min read