2017-11-04

JSON-поля MySQL в Битриксе

Начиная с версии 5.7 в MySQL появились JSON-поля. Их можно использовать для хранения данных произвольной структуры, ведь не всегда удобно создавать дополнительные таблицы и поля. Немного NoSQL в MySQL никому не навредит, а наоборот упростит разработку.
Рассмотрим возможность использования JSON-полей в Битриксе.

2016-09-18

Мониторинг микроклимата помещения

Интернет вещей

Интернетом вещей балуюсь уже давно, еще со времен появления первых версий Raspberry Pi.
В блог об интернете вещей еще не приходилось писать, но, думаю, пора это исправить.
Так что же это такое? В Википедии как-то непонятно описано. Интернетом вещей я называю различные устройства (вроде Raspberry Pi, Arduino, ESP и подобных), а так же их взаимодействие с датчиками, сенсорами, исполнительными устройствами и между собой посредством беспроводных технологий или интернета. Все же, в основе, именно взаимодействие через интернет или с помощью беспроводных технологий, а в качестве контроллера может выступать даже компьютер.

Мониторинг климата

2016-09-17

PostCSS и все все все (оптимизация процесса верстки)

В начале 2016 года Microsoft официально объявила о прекращении поддержки своих старых IE. Текущими актуальными версиями браузеров компания начала считать IE11 и последнюю версию Edge.
Edge, судя по собственному опыту использования и сайтам наподобие html5test.com и caniuse.com, довольно таки неплох в плане поддержки современных стандартов. С IE11 частенько приходится еще "пободаться".
Для упрощения верстки уже давно используются различные фреймворки и сборщики CSS (LESS, SCSS и т.п.).
На одном из проектов решил познакомиться с PostCSS, а до этого склонялся к использованию bootstrap+scss.


2015-06-12

Основы AngularJS

На недавнем проекте передо мной стояла задача разработать калькулятор для расчета оконных изделий. В качестве исходных данных была предоставлена таблица в формате Excel с кучей больших схем расчета. Взглянув на огромное количество непонятных формул и зависимостей, было принято решение в серверной части использовать исходную таблицу, а на клиентской стороне - AngularJS.

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

2015-04-14

Виртуализация

Предыстория

История про то, как мы решали проблему тормозов сервера с сайтами и про то, что же такое виртуализация, обзор средств и какие задачи она решает.
Однажды, из-за трудноуловимых тормозов на сервере с кучей сайтов, было принято решение изолировать проекты друг от дружки, а именно - разнести их по виртуальным машинам. На тот момент я себе еще слабо представлял, что же такое гипервизоры, виртуальные машины и контейнеры. Просто что-то где-то слышал и пробовал использовать VMWare и VirtualBox. Но надо было использовать серверное консольное решение и начались поиски информации в интернете.


2014-08-13

Кеширование в Битриксе своих ключей в result_modifier.php и доступ к ним из component_epilog.php

Часто на проектах встречаю выключенный кеш в Битриксе. В основном, отключение производится программистом из-за непонимания правил работы кеша и нежелания разобраться.
Рассмотрим возможность добавления своих ключей в кеш стандартного компонента (в "result_modifier.php") и получение доступа к этим данным из "component_epilog.php".

2014-08-07

Разные кеши на одной странице в Битриксе

Бывают случаи, когда необходимо выводить разные данные в кешируемом компоненте на одной странице для разных пользователей. На самом деле, имею ввиду не пользователей разных групп, а просто тех, что совершили разные действия на сайте.
Отключение кеша Битрикса - в крайнем случае, надо учиться с ним правильно работать.
Также замечу, что решение подходит для тех случаев, когда функционала component_epilog.php недостаточно и добавлять параметры к адресу страницы тоже не вариант. Еще в решении этой задачи может помочь использование разных компонентов, которые выводить по условию на странице.
Рассмотрим еще одно интересное решение этой задачи. Выбор того или иного подхода нужно делать по ситуации, выбирая наиболее оптимальный в каждом конкретном случае.

2014-06-03

Распознавание и синтез речи в браузере

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

2014-05-15

Оптимизация чтения ресурсов MODX Revolution

Однажды передо мной встала задача по аудиту и оптимизации сайта с большим количеством страниц на MODX Revolution. Сайт периодически "падал" и анализ запросов с помощью тайминга MODX показал очень плохие результаты - в момент генерации кеша сайт выполнял порядка 900-1000 запросов к базе данных. При этом, при созданном кеше, на каждой странице продолжало выполняться порядка 100 запросов из-за использования в некоторых местах некешируемых вызовов сниппетов и чанков.

2014-02-06

Программирование в бизнес-процессах в DocsVision

Бизнес-процессы - последовательность действий направленных на достижение некоторой заданной цели. Внешне представляются в виде блок-схем.
Рассмотрим возможности программирования в бизнес-процессах в DocsVision.
Задача примерно следующая:
1) Мониторинг новых и измененных документов в состоянии "Опубликовано".
2) Выгрузка найденных документов в текстовые файлы на диск.
Суть, кратко: найти карточки по фильтру и затем что-то с ними сделать.

2014-02-05

Расширения DocsVision и объектная модель

В DocsVision есть возможность написаний расширений навигатора и серверных расширений.
Также можно написать свое независимое приложение, которое будет подключаться к базе DocsVision и работать с объектами.
Плюс мы еще можем создавать веб-скрипты ASPX (веб-версию). Они будут доступны по адресу http://DVSERVER/DocsVision/MyScript.aspx.
Аналогично пишутся скрипты в бизнес-процессах, если возможностей шлюзов (DVGate) недостаточно. Планирую рассказать поподробней про бизнес-процессы в одной из следующих статей.
Еще к возможностям расширениям я бы отнес поддержку собственных элементов управления для разметок. Эта возможность изучена мной поверхностно. Может, будет такая задача и тогда напишу в блог подробности.
Вкратце рассмотрим подробнее перечисленные выше возможности.

2014-02-04

Трансформации в DocsVision

В DocsVision документы можно отправлять на печать или экспортировать в HTML.
В конструкторе видов карточек для каждого вида документа можно создавать свои XSLT-трансформации и затем их использовать для печати, экспорта и в скриптах для любых других преобразований.

2014-02-03

Атрибутивный поиск в DocsVision

Для поиска карточек в DocsVision в основном используется атрибутивный поиск.
Поисковые запросы можно создавать в конструкторе и сохранять, чтобы потом привязывать к виртуальным папкам, либо использовать в скриптах для получения списка карточек.
Конструктор поисковых запросов присутствует в Navigator и DVExplorer.
Создание запроса в конструкторе хоть и долгое и нужно пройти кучу окон, но все же более наглядное, чем разработка в коде.

2014-02-02

Работа со справочниками в DocsVision

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

2014-02-01

Объектная модель и сервисы DocsVision

В данной статье вкратце расскажу о вспомогательных сервисах для работы с объектами системы и о способах манипуляции данными карточек.

2014-01-31

Работа с элементами управления в разметках карточек DocsVision

DocsVision

В последнее время много приходится работать с системой документооборота DocsVision. Она написана на C# и позволяет разрабатывать решения на C# и VB.NET.
В основном, решения задач приходится искать в документации, в декомпилированных кодах сборок и что-то есть на форумах. По ходу реализации проекта приходилось решать много разных задач. Решил выложить кое-какие наработки, с чем приходилось разбираться. Авось, потом еще опять сгодятся.
Работа велась с версиями DocsVision 5.0-5.2, весь код был испытан под них. Возможно, в дальнейшем обновимся еще и, надеюсь, совместимость не сломается и не придется переписывать какие-то коды.

2014-01-04

Организация медиа-архива (видео)

Задача-минимум следующая:
  1. Создать раскадровку для всех видео из указанной папки.
  2. В браузере вывести ссылки на видео и соответствующие раскадровки под ними.
Задача-максимум на будущее:
  1. Многофункциональная галерея для всех видов медиа (видео, аудио, изображения).
Начнем с простого.
Для работы с видео будем использовать мощную библиотеку libav.
Далее буду приводить выдержки из скриптов с описаниями.

2013-11-17

Привязка ресурсов к своему домену

Иногда какой-то сервис перестает удовлетворять растущим запросам и настает необходимость его сменить, на более подходящего конкурента.
Но как быть с адресом?
Например, в почте появилось слишком много рекламы. Но email-адрес поменять не так-то просто. Ведь он где только не используется и сменить его везде становится затратно по времени.
Похожая ситуация с блогом: визуальный редактор не такой удобный, как в другой блогосистеме и рад бы переехать, да блог проиндексирован, а на отдельные записи могут быть размещены ссылки в разных частях интернета.
Напоминает ситуацию с сотовыми - хочется уйти к другому оператору, да на номер много чего завязано и все контакты надо оповещать.
Но, имея свой домен, вижу следующее решение: перенести почту и блог на свой адрес. Не сам фунционал сменить, а просто привязать ресурс к персональному домену. Google, Yandex, MailRu позволяют использовать их функционал почты на своем персональном домене, также Blogger и LiveJournal имеют аналогичную возможность. Для этого нужно только прописать специальные записи для домена и указать его адрес в настройках сервиса.
В конце-концов, если замучает парнанойя (а-а-а, за нами следят!), то всегда можно развернуть почтовый сервер и любой понравившийся блогодвижок на своем сервере. Легко и просто, уже без изменения домена. Разве что, при смене блогосистемы может измениться внутренняя адресация, но при наличии поиска внутри блога, это не такая уж и большая проблема. Да и записи нужно либо через экспорт-импорт перенести, либо как-то еще автоматизировать с помощью парсинга.