В борьбе о&#

В борьбе о&#

В борьбе обретешь ты право свое


Теперь, после выхода новой версии, любой желающий может открыть справку по FileMaker 18, изучить перечень новых возможностей (features), благо они перечислены все в отдельной статье. К
В моем обзоре я не ставлю целью рассмотреть все изменения, но хотел бы отметить те, которые считаю наиболее значимыми. То есть я хочу написать не о том, что изменилось, а какие горизонты это нам открывает. В таком вот ракурсе.
Порядок произвольный
1. Вернули зуммирование с помощью колесика мыши, которое в 17 версии почему-то не работало (и я страдал). Мелочь, но чертовски приятно.
2. Разработчики платформы очень сильно вложились в
диалог, сопровождающий процедуру импорта. Импорт стал реально удобным. Помимо того, что в новой реализации эта процедура может производиться намного быстрее, появились возможности:
а)  внести изменения в структуру базы данных (добавить поля, изменить свойства полей в результирующей таблице), не прерывая импорта (настроеные поля остаются настроенными).
б) указать конкретно для каждого поля, следует ли его при импорте заполнить значениями по умолчанию или следует обойти Auto-Enter.
3. То, о чем уже давно сообщили в видеообзорах:
возможность применять цикл в вычислениях (выражениях, калькулируемых полях). Технически это реализовано как во всех языках программирования, культурно. Я очень ожидаю, что конкретными примерами практического применения функции
While коллеги поделятся на форуме.
4. Может пройти не замеченным (хотя в справке упомянуто):
В Web-Direct теперь можно прочитать содержимое Веб-вьюера. Раньше было такое ограничение, что в браузере функция GetLayoutObjectAttribute( object ; source ) не работала для веб-вьюера. Приходилось искать обходные пути для реализации некоторых вещей. Теперь станет проще.
Очевидно, мне в связи с изменениями придется выложить на форуме обновленную версию веб-лаунчера, удалив из нее все лишнее.
5. Возможность записи в текстовый файл с конвертацией в UTF-8 (в т.ч. на сервере). Имеются в виду те самые новые команды для работы с
Data Files из группы команд
Files. Да, это круто. Реальной пользы и вариантов применения мы пока не осознаем в полной мере. Вообще возможность создать текстовый файл и выгрузить его на жесткий диск командой
Export Field Contents была и раньше. Но такие файлы имели формат
UTF-16. Таким способом нельзя было получить валидный
xml, например: требовались дополнительные пляски с бубном. Сейчас можно обойтись без извращений.
Этим вот способом (командой
Export Field Contents) мы раньше делали выгрузку данных из файлмейкера в Эксель: подсовывая мелкософтному текстовые файлики в формате
csv. Для этих целей нам требовалось всегда иметь специальное глобальное текстовое поле. Как бы оно и не сложно, да вот приходилось следить за тем, чтобы макет с этим полем был в каждом файле базы данных, и чтобы это одинаково называлось всегда.
Еще одно применение - это логирование событий, происходящих во время исполнения отдельной процедуры или во время всего сеанса. В этом плане реализация очень удобная: файлмейкер позволяет открывать для записи одновременно несколько файлов и записывать в каждый что-то свое, обращаясь к каждому файлу по его идентификатору. Даже если приложение обрушится во время исполнения - лог будет заполнен. Для тестирования новых функций и отладки нестабильных процедур - очень полезно.
Не испытывал, но предвижу возможность использовать новшества для организации семафора на сервере. Реализация крайне простая. Пользователь запускает скрипт на сервере, который пытается открыть общий файл. Если возникает ошибка - значит, файл занят другим пользователем, следует дождаться завершения его сессии. Здесь нам не понадобится специальная таблица. Это пока в теории.
Считывание данных побайтно/посимвольно с заданной позиции в файле - это очень круто, но я пока не знаю примеров, для чего это может использоваться. Хотя нет, один пример знаю. Расскажу дальше.
6. Возможность экспортировать контейнеры и вставлять файлы в контейнере на сервере. Нет, команды
Export Field Contents,
Insert File и
Insert PDF не стали работать по-новому. Но все эти операции можно выполнять с помощью команд, рассмотренных выше - команд для работы с Data Files:
Write to Data File и
Read from Data File. Да, новые команды, обрабатывающие
Data Files, поддерживаются серверными процедурами, и да, они работают не только с текстовыми, но и бинарными данными. Поэтому теперь у разработчиков нет проблем.
7. Новая команда
Set Error Logging. Это реально крутая вещь, хотя поначалу у меня сложились двойственные впечатления. Первым делом я проверил, поддерживается ли эта команда сервером, потому как на сервере как раз с тестированием проблемы и возникают - там ведь невозможно запустить
Debugger и произвести трассировку. Оказалось - не поддерживается.
И все-таки это не причина для расстройства. Ведь на сервере уже и так работает логирование ошибок в Event.log. Причем работает ровно так же, как теперь реализовано в клиентском приложении: то есть сервер пишет дату и время, идентификатор сессии (имя пользователя + номер сессии), код ошибки, имя файла, имя скрипта, номер строки и название команды, которая генерит ошибку.
В клиентском приложении точно такой же лог, только к имени скрипта добавлен его идентификатор, а в самом конце добавляется еще информация, вычисленная контекстно в момент ошибки (если задана такая настройка).
Получается, серверный лог почти идентичен логу клиентского приложения и им можно пользоваться. А если требуется что-то большее, то это можно организовать средствами записи в Data Files.
После многократных испытаний команды, я пришел к выводу, что реализовано все более чем рационально. Смотрите. Флаг
Set Error Logging (ON) задается глобально. То есть логированию подлежат все скрипты, которые будут исполняться после запуска команды и до отмены логирования командой
Set Error Logging (ON) либо до завершения работы приложения. Проверяемые скрипты трогать не придется, а все действия, связанные с обработкой лога, можно вынести в отдельный скрипт. При запуске приложения флаг по умолчанию сброшен.
Дополнительная опция, которая предоставлена разработчику для логирования ошибок в клиентском приложении, действует тоже очень хитро. В качестве параметра можно указать, например, переменную
$log или калькулируемое поле или формулу. Тогда в лог попадет то, что вычисляется этой переменной или полем или формулой в момент ошибки. Идеально.
Теперь давайте ловить бонусы от наших нововведений. Мы знаем, в какой файл будет записываться лог ошибок: это всегда один и тот же  файл
ScriptErrors.log, который располагается в папке Documents. Перед тем как начать логирование ошибок, прочитаем и запомним размер лога.
Get File Size [ ScriptError.log ; Target: $$start log size ]
После завершения логирования скриптов вызовем сценарий со следующими командами.
Set Error Logging [ Off]
Set variable [ $length ; Value: $$end log size - $$start log size]

Related Keywords

Spain, Spanish, , Released New, After All, That Is To Say, For Example, ஸ்பெயின், ஸ்பானிஷ், வெளியிடப்பட்டது புதியது, க்கு உதாரணமாக,