Read only что это такое
Перейти к содержимому

Read only что это такое

  • автор:

Read-only vs View only

Tech/UX writer

The other day, I was asked to provide the copy for a status that has a locked section on a screen.

The original text the designer added was “Read only”

And we got chatting…

My initial thought was to use the same with a hyphen, “read-only”. After a lot of deliberation, we went ahead with “View only” with an icon next to the word.

readonly¶

Система типов TypeScript позволяет помечать отдельные элементы интерфейса доступными только для чтения . Это позволяет вам работать в функциональном стиле (в котором неожиданные мутации это плохо):

Вы также можете использовать readonly в определениях interface и type , например:

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

Тип Readonly¶

Существует тип Readonly , который принимает тип T и помечает все его элементы как readonly . Вот демонстрация использования этого на практике:

Различные варианты использования¶

ReactJS¶

ReactJS — это библиотека, которая любит иммутабельность, вы можете пометить ваши Props и State как неизменяемые, например:

Однако вам не нужно это делать, поскольку определения типов для React уже помечают их как readonly (внутренняя оболочка универсального типа соответствует типу Readonly , упомянутому выше). Поэтому, достаточно:

Обратно-совместимая иммутабельность¶

Вы даже можете пометить сигнатуры индекса только для чтения:

Это замечательно, если вы хотите использовать нативные массивы JavaScript в иммутабельном виде. На самом деле TypeScript поставляется с интерфейсом ReadonlyArray<T> , позволяющим вам сделать именно это:

Автоматический логический вывод¶

В некоторых случаях компилятор может автоматически делать предположение, что определенный элемент доступен только для чтения, например, внутри класса, если у вас есть свойство, у которого есть только геттер, но нет сеттера, оно предполагается только для чтения, например:

Что такое файлы «только для чтения» и для чего они используются?

Ответ: Файлы «только для чтения» («read-only») могут быть открыты, но не могут быть отредактированы. Они обычно используются в качестве шаблонов для создания новых файлов. Так как файлы «только для чтения» не могут быть изменены, они часто выступают в качестве модели или основы для создания нескольких похожих файлов. И Windows и Mac OS X поддерживают файлы «только для чтения».

ОС Windows

Чтобы сделать файл «только для чтения» («read-only») в Windows, сперва нужно щелкнуть правой кнопкой мыши по файлу, а затем выбрать пункт «Свойства» («Properties»). Затем в нижней части окна Свойства в разделе «Атрибуты» («Attributes») следует просто установить флажок «Только для чтения» (как показано ниже) и нажать кнопку Применить («Apply»).

файлы с read only

Как только свойство файла установлено как «только для чтения», его нельзя перезаписать. Хотя, открыв файл, можно сохранить его с другим именем файла. Открытие файла только для чтения похоже на использование функции «Открыть как копию» («Open as a copy»), которую предлагают некоторые программы. Однако, в отличие от открытия файла с признаком «только для чтения», функция «Открыть как копию» создает копию файла при его открытии, а не при его сохранении.

Примечание: Если попытаться отредактировать и сохранить файл с атрибутом «только для чтения», то появится ошибка при сохранении «Не удается создать файл (путь к файлу). Проверьте правильность пути и имени файла.»

Mac OS X

Пользователи ОС Mac также могут создавать документы «только для чтения». Чтобы сделать файл «только для чтения» в Mac OS X, нужно щелкнуть правой кнопкой мыши (или Control-клик) по файлу и затем выбрать пункт меню «Получение информации» («Get Info»). В верхней части Информационного окна имеется флажок «Блокнот» («Stationery Pad») (см. ниже). Установка этого флажка, преобразует файл в шаблон «только для чтения». Всякий раз, когда открывается файл с установленным флажком «Блокнот», создается копия файла.

Опции «Блокнот» в Mac OS X служат полезным средством создания нескольких похожих документов на основе одного стандартного документа. Тем не менее, «блокноты» могут быть перезаписаны, если файл с таким же именем сохраняется на документ-«блокнот». Таким образом, рекомендуется для хранения документов-«блокнотов» использовать отдельный каталог, в котором не хранить редактируемые документы.

В Mac OS X для предотвращения от случайного удаления важных документы или заменены их новыми документами, пользователи могут выбрать флажок «Заблокированные» («Locked») в Информационном окно файла (см. выше).

Режим «Только чтение» в Web-приложениях

Объект, открытый в режиме Только чтение ( Read-only ) не может быть изменен пользователем, данные, хранящиеся в объекте, будут доступны только для чтения.

Режим ReadOnly может понадобиться в разных ситуациях, к примеру:

  • Один пользователь открыл объект на редактирование, в это время другой пользователь пытается также открыть этот же объект на редактирование.
  • У пользователя нет прав изменять какое-либо поле объекта, или сам объект, но есть право просматривать данные.

Составляющие режима ReadOnly

Режим можно условно поделить на 3 составляющие:

  1. Блокировка интерфейса пользователя
  2. Блокировка объекта данных в памяти приложения
  3. Блокировка объекта данных в базе данных

Блокировка интерфейса пользователя

Если пользователь не может вносить изменения в объект, он должен это осознавать в момент открытия формы редактирования. Если объект в данный момент недоступен из-за блокировки другим пользователем, рекомендуется вывести предупреждение типа Объект заблокирован другим пользователем. Вы желаете открыть объект только на чтение? Да\Нет .
Если пользователь все же желает открыть объект в режиме ReadOnly , необходимо заблокировать контролы для редактирования полей объекта. Также необходимо скрыть кнопки Сохранить и Сохранить и закрыть (только для случая полной блокировки, а не блокировки отдельных полей объекта).

Для блокировки интерфейса пользователя в Web-приложениях используется класс WebBinder.

WebBinder позволяет либо заблокировать объект полностью, либо заблокировать только некоторые его поля.

Важно: Стоит отметить, что WebBinder блокирует только те поля объекта, которые зарегистрированы в WebBinder’e и содержатся в передаваемом представлении, а также только серверные контролы, которые имеют свойства ReadOnly или Enabled .

  • Полная блокировка объекта через WebBinder осуществляется вызовом метода

где wb это экземпляр WebBinder’a на конкретной странице.

  • Еще один вариант полной блокировки: установка свойства ReadOnly у конкретной формы
  • Частичная блокировка объекта (блокировка отдельных полей) осуществляется вызовом метода

где ФИО это наименование свойства, которое нужно заблокировать для редактирования.

  • Еще один вариант частичной блокировки — блокировка конкретного контрола путем вызова метода

где ctrlФИО — контрол, который необходимо заблокировать для редактирования.

Блокировка объекта данных при открытии страницы редактирования

Чтобы заблокировать объект при открытии страницы достаточно послать в GET-запросе параметр &mode=readonly .

Блокировка объекта данных в памяти приложения

Блокировка объекта в памяти осуществляется вызовом метода объекта DataObject.LockObject(Key) , где Key — некий ключ блокировки типа Guid . Разблокировать объект можно только этим ключом при помощи метода DataObject.UnLockObject(Key) .

При вызове метода LockObject блокировка в базу не отправляется.

Блокировка объекта данных в базе данных

Для блокировки используется поддерживаемый технологией Сервис блокировок.

Блокировка объекта в базе данных железно защищает объект от изменений объекта другими пользователями. Создается запись в таблице STORMNETLOCKDATA и, пока она там существует, изменить объект может только пользователь, заблокировавший объект.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *