Объекты не подлежащие обязательному декларированию безопасности: Разработка декларации промышленной безопасности — Протос Групп

Содержание

Разработка декларации промышленной безопасности — Протос Групп

Декларация промышленной безопасности опасного производственного объекта – это документ, содержащий результаты всесторонней оценки риска аварии, анализа достаточности принятых мер по предупреждению аварий и по обеспечению готовности организации к эксплуатации ОПО, а также к локализации и ликвидации последствий аварии на ОПО.

Обязательному декларированию подлежат опасные производственные объекты I и II классов опасности, на которых получаются, используются, перерабатываются, образуются, хранятся, транспортируются, уничтожаются опасные вещества в количествах, установленных в приложении 2 к Федеральному закону «О промышленной безопасности опасных производственных объектов».

Документы, регламентирующие разработку декларации промышленной безопасности ОПО:

  • Порядок оформления декларации промышленной безопасности опасных производственных объектов и перечень включаемых в нее сведений (РД 03-14-2005).
  • Федеральный закон от 21.07.1997 N 116-ФЗ «О промышленной безопасности опасных производственных объектов«.
  • «Правила представления декларации промышленной безопасности опасных производственных объектов»  Постановление Правительства РФ от 11.05.99 N 526.   
  • Методические рекомендации по составлению декларации промышленной безопасности опасного производственного объекта (РД 03-357-00).

Декларация промышленной безопасности ОПО разрабатывается в составе проектной документации на строительство, расширение, реконструкцию, техническое перевооружение, консервацию и ликвидацию ОПО.

Основаниями для повторной разработки декларации промышленной безопасности эксплуатируемого опасного производственного объекта служат:

  • истечение 10 лет после внесения последних сведений в реестр деклараций промышленной безопасности;
  • изменение технологических процессов на ОПО;
  • увеличение более чем на 20%  количества опасных веществ, находящихся на ОПО;
  • изменение требований промышленной безопасности;
  • предписание Ростехнадзора при обнаружении несоответствия сведений, содержащихся в декларации промышленной безопасности, сведениям, полученным в ходе проведения федерального государственного надзора.

Декларация промышленной безопасности опасного производственного объекта должна содержать:

  • Титульный лист.
  • Данные об организации — разработчике декларации.
  • Оглавление.
  • Раздел 1 «Общие сведения» – содержит реквизиты эксплуатирующей ОПО организации; обоснование декларирования; информация о месторасположении объекта; данные о работниках; страховые сведения.  
  • Раздел 2 «Результаты анализа безопасности» – включает сведения об опасных веществах; о технологических процессах; результаты анализа риска аварий.  
  • Раздел 3 «Обеспечение требований промышленной безопасности» — содержит сведения об обеспечении требований промышленной безопасности к эксплуатации декларируемого объекта, а также готовности к действиям по локализации и ликвидации последствий аварии.
  • Раздел 4 «Выводы» – содержит список наиболее опасных составляющих и производственных участков декларируемого объекта с указанием показателей риска аварий; меры по уменьшению риска аварий; оценку достаточности мер по предупреждению аварий.  
  • Раздел 5 «Ситуационные планы» – включает графическое отображение зон воздействия поражающих факторов для наиболее опасных составляющих и производственных участков объекта.
  • Обязательные приложения к декларации.
  • Приложение № 1 «Расчетно-пояснительная записка».
  • Приложение № 2 «Информационный лист».

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

Декларация промышленной безопасности  в составе документации на техническое перевооружение, консервацию и ликвидацию опасного производственного объекта, и декларация промышленной безопасности, разрабатываемая вновь, в обязательном порядке должны пройти экспертизу промышленной безопасности.

Декларация промышленной безопасности, представленная в Ростехнадзор или его территориальный орган, вносится в реестр деклараций промышленной безопасности в течение 5 рабочих дней после поступления (см. постановление Правительства РФ от 11.05.99 N 526).

Специалисты компании «Протос Экспертиза» качественно разработают декларацию промышленной безопасности ОПО, что позволит сократить ваши финансовые и временные затраты.

Обязательное страхование гражданской ответственности владельца опасного объекта

Работа с опасными объектами на производстве неизбежно влечет за собой повышенный риск причинения вреда людям и повреждения имущества. Крупные аварии могут повлечь причинение вреда работникам предприятия,
а также огромному количеству других людей. При масштабных катастрофах техногенного характера количество пострадавших человек может достигать нескольких тысяч. Глобальные аварии, которые невозможно было предвидеть, доказали, насколько важно иметь надежного партнера для эффективного устранения их последствий.

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

Обязательное страхование гражданской ответственности владельцев опасных объектов регулируется Федеральным законом № 225-ФЗ от 27.07.2010 «Об обязательном страховании гражданской ответственности владельца опасного объекта
за причинение вреда в результате аварии на опасном объекте» (далее — Закон).

К опасным объектам, которые подлежат обязательному страхованию, относятся расположенные в пределах границ Российской Федерации
и на иных территориях, над которыми Российская Федерация осуществляет юрисдикцию в соответствии с законодательством Российской Федерации
и нормами международного права:

  • опасные производственные объекты (ОПО), которые подлежат регистрации в государственном реестре согласно законодательству Российской Федерации о промышленной безопасности опасных производственных объектов;
  • автозаправочные станции (АЗС) жидкого моторного топлива;
  • гидротехнические сооружения (ГТС), которые подлежат внесению
    в Российский регистр гидротехнических сооружений согласно законодательству Российской Федерации о безопасности гидротехнических сооружений;
  • лифты, подъемные платформы для инвалидов и эскалаторы (исключением являются эскалаторы в метрополитенах).

Объектом обязательного страхования являются имущественные интересы владельца опасного объекта, связанные с его обязательствами по возмещению вреда, причиненного потерпевшим вследствие аварии.

Мы окажем вам помощь и компенсируем расходы пострадавшим, если при эксплуатации опасных объектов произойдет страховой случай.

Страховые риски:

  • причинение вреда жизни или здоровью людей, в том числе работникам вашего предприятия;
  • повреждение или гибель имущества потерпевших;
  • нарушение условий жизнедеятельности людей и возникновение связанных с этим расходов на переезд к месту временного поселения и обратно, проживание в нем, а также приобретение жизненно важных материальных средств.

Действие договора обязательного страхования не распространяется на случаи, возникшие вследствие:

  1. причинения вреда за пределами территории Российской Федерации, а также иных территорий, над которыми Российская Федерация осуществляет юрисдикцию в соответствии с законодательством Российской Федерации и нормами международного права;
  2. использования атомной энергии;
  3. причинения вреда природной среде.

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

Срок действия договора страхования — 1 год

Страховая сумма

При заключении договора обязательного страхования страховая сумма определяется по каждому опасному объекту и зависит от типа объекта.


Для объектов, подлежащих декларированию

Страховая сумма* (лимит)

Для объектов, не подлежащих декларированию

МВКП** > 3000 человек

не предусматривается

МВКП 1501-3000 человек

не предусматривается

МВКП 301-1500 человек

не предусматривается

МВКП 151-300 человек

для шахт угольной промышленности
с МВКП более 50 человек

МВКП 76-150 человек

для химической, нефтехимической, нефтеперерабатывающей промышленности и спецхимии, для шахт угольной промышленности с МВКП 50

и менее человек

МВКП 10-75 человек

для сетей газопотребления
и газораспределения, в том числе межпоселковых

для иных опасных объектов, подлежащих декларированию

для иных опасных объектов (т. е. для большинства)

* Страховая сумма установлена по каждому страховому случаю, вне зависимости от их количества в период действия договора.

** МВКП – максимально возможное количество потерпевших, жизни или здоровью которых может быть причинен вред.

Зачем нужна декларация ОПО? | Промышленная безопасность. Экспертиза промышленной безопасности

Прежде чем ответить на вопрос «Зачем нужна декларация ОПО?», необходимо выяснить «Нужна ли вашему ОПО декларация?» и «Что такое ДПБ?». Декларация промышленной безопасности опасного производственного объекта — это письменный документ, оформленный согласно требований РД-03-14-2005, содержащий информацию, с указанием факторов повышенного риска и опасностей на объекте повышенной опасности и мер по контролю за ними, в котором дается обоснование мерам, принятым для обеспечения безопасности на объекте.

Декларация промышленной безопасности разрабатывается в соответствии с требованиями Федерального закона № 116-ФЗ «О промышленной безопасности опасных производственных объектов» (c изменениями) и РД-03-14-2005 «Порядок оформления декларации промышленной безопасности опасных производственных объектов и перечень включаемых в нее сведений» (c изменениями). Разработка декларации промышленной безопасности обязательна для опасных производственных объектов I и II классов опасности, на которых находятся опасные вещества, т.е. объектов, указанных в пункте 1 приложения 1 к Федеральному закону от 21.07.1997 №116-ФЗ «О промышленной безопасности опасных производственных объектов». При это если опасный производственный объект относится к I или II классу опасности, но на нем нет опасных веществ, то для таких объектов декларация промышленной безопасности не разрабатываются. Декларация промышленной безопасности разрабатывается в составе проектной документации на строительство, реконструкцию опасного производственного объекта, который согласно Градостроительному кодексу относится к особо опасным и технически сложным объектам капстроительства, а также в составе документации на техническое перевооружение, консервацию и ликвидацию такого опасного производственного объекта.

В действительности, декларация промышленной безопасности разрабатывается в составе проектной документации на строительство опасного производственного объекта, на котором опасные вещества не находятся, а могут находиться, и класс опасности такому объекту еще не присвоен. Кроме декларации промышленной безопасности в составе проектной документации или документации на техническое перевооружение, консервацию и ликвидацию такого опасного производственного объекта, декларация разрабатывается или перерабатывается для эксплуатируемого опасного производственного объекта в предусмотренных случаях, в частности, при изменении технологических процессов на опасном производственном объекте, при изменении требований промышленной безопасности, при указанном в комментируемом пункте несоответствии сведений (при наличии предписания Ростехнадзора или его территориального органа) независимо от характера и масштабов этих несоответствий. Несмотря на то, что декларация промышленной безопасности утверждается руководителем организации, эксплуатирующей опасный производственный объект, понятно, что декларация промышленной безопасности в составе проектной документации на строительство опасного производственного объекта не может быть утверждена руководителем эксплуатирующей организации, т. к. этот объект не только не введен в эксплуатацию, но и строительство его не начато, т.е. эксплуатировать нечего. Имеется в виду не эксплуатирующая организация, а организация, предполагающая эксплуатировать опасный производственный объект.

Декларация промышленной безопасности позволяет:

  • выявить перечень наиболее опасных составляющих и/или производственных участков декларируемого объекта, определить показатели риска аварий для них;
  • выяснить наиболее значимые факторы, влияющие на показатели риска;
  • провести обобщенную оценку обеспечения промышленной безопасности и достаточности мер по предупреждению аварий на декларируемом объекте;
  • сформировать перечень основных мер, направленных на уменьшение риска аварий.

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

Обобщив всё вышесказанное, можно сказать, что декларация предназначена:

  • для всесторонней оценки риска аварии и связанной с ней угрозы, анализа достаточности принятых мер по предупреждению аварий, а также разработки мероприятий, направленных на снижение масштаба последствий аварии и размера ущерба, нанесенного в случае аварии на опасном производственном объекте;
  • для информирования органов Ростехнадзора о готовности эксплуатирующей организации к эксплуатации опасного производственного объекта в соответствии с требованиями промышленной безопасности, а также к локализации и ликвидации последствий аварии на указанном объекте;
  • для информирования органов государственной власти, органов местного самоуправления, средств массовой информации, организаций и гражданского населения об авариях, которые могут возникнуть на опасном производственном объекте, размерах зон действия поражающих факторов, способов оповещения и действиях гражданского населения в случае возникновения аварий.

Разработка деклараций промышленной безопасности опасных производственных объектов

ТОО «Экспертно-сертификационный центр взрывчатых материалов» производит разработку деклараций промышленной безопасности опасных производственных объектов, на которых производятся, хранятся и используются взрывчатые вещества (их невзрывчатые компоненты) и изделия на их основе, с последующей экспертизой разработанных деклараций в независимых аттестованных экспертных организациях.

Разработка деклараций промышленной безопасности опасных производственных объектов осуществляется на основании статьи 76 Закона Республики Казахстан «О гражданской защите» № 188-V от 11 апреля 2014 года. Обязательному декларированию промышленной безопасности подлежат опасные производственные объекты, соответствующие критериям отнесения опасных производственных объектов к декларируемым, утвержденным Правительством Республики Казахстан.

Декларация промышленной безопасности опасного производственного объекта) разрабатывается для проектируемых и действующих опасных производственных объектов.

Разработка декларации осуществляется организацией, эксплуатирующей опасный производственный объект самостоятельно при наличии аттестата, предоставляющего право на разработку декларации, либо сторонней организацией, аттестованной на право разработки декларации.

Декларация утверждается руководителем организации, эксплуатирующей опасный производственный объект.

Руководитель организации, эксплуатирующей опасный производственный объект, несет ответственность за своевременность представления, полноту и достоверность сведений, содержащихся в декларации, установленную законами Республики Казахстан.

Декларация подлежит экспертизе в аттестованной организации, предоставляющей право разработки декларации.

Для присвоения регистрационного шифра декларации заявитель представляет в уполномоченный орган заявление и декларацию в форме электронных документов вместе со сканированной копией экспертного заключения. Уполномоченный орган, рассмотрев представленные документы, принимает решение о регистрации декларации либо представляет мотивированный отказ.

Декларация, зарегистрированная уполномоченным органом, хранится в уполномоченном органе в форме электронного документа.

Эксплуатация опасного производственного объекта без декларации, зарегистрированной уполномоченным органом, запрещается.

Перечень зарегистрированных деклараций размещается на интернет-ресурсе уполномоченного органа.

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

При внесении изменений в декларацию она подлежит повторной экспертизе и регистрации в срок не позднее трех месяцев после внесения изменений.

1910.140 — Системы индивидуальной защиты от падения с высоты.

Определения . К этому разделу применяются следующие определения:

Крепление означает надежную точку крепления для такого оборудования, как спасательные канаты, стропы или тормозные устройства.

Наконечник ремня означает концевое крепление системы позиционирования устройства для мойки окон, используемое для крепления ремня или привязи к креплению ремня устройства для чистки окон.

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

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

Карабин означает соединитель, обычно состоящий из корпуса трапециевидной или овальной формы с закрытой защелкой или аналогичным устройством, которое может открываться для прикрепления другого предмета, а при освобождении автоматически закрывается для удерживания предмета.

Компетентное лицо означает лицо, которое способно идентифицировать существующие и предсказуемые опасности в любой системе индивидуальной защиты от падения или любом ее компоненте, а также в их применении и использовании с соответствующим действия по устранению выявленных опасностей.

Соединитель означает устройство, используемое для соединения (соединения) частей системы защиты от падения вместе.

D-кольцо означает используемый разъем:

i) в привязи в качестве неотъемлемого элемента крепления или страховочного приспособления;

(ii) в стропе, амортизаторе, страховочном тросе или анкерном соединителе в качестве составного соединителя; или

(iii) В системе позиционирования или при движении в качестве элемента крепления.

Устройство замедления означает любой механизм, который служит для рассеивания энергии при падении.

Расстояние торможения означает расстояние по вертикали, которое проходит падающий работник от точки, в которой начинает работать устройство замедления, исключая удлинение страховочного троса и расстояние свободного падения, до остановки. Измеряется как расстояние между положением точки крепления страховочной привязи работника в момент срабатывания (при срабатывании страховочных сил) тормозного устройства при падении и положением этой точки крепления после того, как работник пришел в себя. полная остановка.

Эквивалент означает альтернативные конструкции, оборудование, материалы или методы, которые работодатель может продемонстрировать, обеспечат равную или большую степень безопасности для работников по сравнению с конструкциями, оборудованием, материалами или методами, указанными в стандарте.

Свободное падение означает падение до того, как персональная страховочная система начнет применять усилие для остановки падения.

Расстояние свободного падения означает вертикальное смещение точки крепления средства защиты от падения на нательном ремне или страховочной привязи работника между началом падения и моментом, когда система начинает применять усилие для остановки падения. Это расстояние не включает расстояние замедления, удлинение страховочного троса и страховочного стропа, но включает любое расстояние скольжения устройства замедления или самоутягивающегося страховочного троса/удлинения страховочного троса до того, как устройства сработают и возникнут усилия, препятствующие падению.

Ремешок означает гибкую веревку, проволочный трос или лямку, которая обычно имеет разъем на каждом конце для соединения нательного ремня или нательной привязи с тормозным устройством, спасательным тросом или анкерным креплением.

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

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

Индивидуальная система защиты от падения означает систему (включая все компоненты), которую работодатель использует для обеспечения защиты от падения или для безопасной остановки работника при падении в случае падения.Примеры систем индивидуальной защиты от падения включают в себя системы индивидуальной защиты от падения, системы позиционирования и системы ограничения движения.

Система позиционирования (система рабочего позиционирования) означает систему оборудования и соединителей, которая при использовании с нательной привязью или поясным ремнем позволяет поддерживать работника на возвышенной вертикальной поверхности, такой как стена или подоконник, и работать обеими руками свободно. Системы позиционирования также называют «устройствами системы позиционирования» и «оборудованием рабочего позиционирования».»

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

Канатный захват означает тормозное устройство, которое перемещается по спасательному тросу и автоматически, за счет трения, зацепляет спасательный трос и блокирует его, чтобы предотвратить падение работника.Захват для веревки обычно использует принцип инерционной блокировки, блокировки кулачка / рычага или того и другого.

Коэффициент безопасности означает соотношение расчетной нагрузки и предела прочности материала.

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

Крюк-карабин означает соединитель, состоящий из крюкообразного корпуса с нормально закрытым затвором или аналогичной конструкции, которую можно открыть вручную, чтобы крючок мог принять предмет. При отпускании карабин автоматически закрывается, чтобы удержать объект. Для открытия snaphook требуется два отдельных действия. Защелки обычно бывают одного из двух типов:

(i) Типа с автоматическим запиранием (разрешено) с самозакрывающимися и самозапирающимися воротами, которые остаются закрытыми и запертыми до тех пор, пока они не будут преднамеренно разблокированы и открыты для соединения или разъединения; и

(ii) Незапирающийся тип (запрещенный) с самозакрывающимися воротами, которые остаются закрытыми, но не запертыми до тех пор, пока не будут преднамеренно открыты для соединения или разъединения.

Линия ограничения движения (трос) означает канат или проволочный трос, используемый для передачи усилий от опоры тела к анкерному креплению или анкерному соединителю в системе ограничения движения.

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

Ремень для мытья окон означает пояс для позиционирования, состоящий из поясного ремня, встроенной направляющей или ремня и разъемов для ремня.

Анкер для ремня мойщика окон (анкер для окон) означает специально разработанные точки крепления для предотвращения падения, постоянно прикрепленные к оконной раме или к части здания, непосредственно прилегающей к оконной раме, для непосредственного крепления концевой части ремня для мойщика окон.

Система позиционирования для мойщика окон означает систему, состоящую из ремня для мойщика окон, прикрепленного к оконным анкерам.

Система рабочего позиционирования (см. Система позиционирования в этом параграфе (b)).

Предупреждения и инструкции по безопасности продукта

Этот символ обозначает сообщения о безопасности и здоровье в данном руководстве по устройству.

ПРЕДУПРЕЖДЕНИЕ. Прочтите информацию о безопасности и охране здоровья

.

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

Продукты Microsoft разрабатываются с расчетом на безопасность и эффективность. Прочтите это руководство, чтобы получить важную информацию о безопасности и здоровье вашего устройства, а также условия ограниченной гарантии, применимые к вашему устройству.Руководство предназначено для того, чтобы помочь вам сделать работу с этим устройством более удобной и продуктивной. Несоблюдение инструкций по правильной настройке, использованию и уходу за устройством может увеличить риск серьезной травмы, смерти или повреждения имущества.

Дополнительную поддержку можно найти на сайте support.microsoft. com или в приложении Surface для устройств Surface.

ВНИМАНИЕ: Опасность удушья

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

Это устройство может содержать мелкие детали, которыми дети младше 3 лет могут подавиться.Храните мелкие детали в недоступном для детей месте.

ВНИМАНИЕ: Хранить в недоступном для детей месте

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

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

ВНИМАНИЕ! Использование с высоким риском

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

Ваше устройство не предназначено и не предназначено для использования в каких-либо приложениях или ситуациях, когда выход из строя любого устройства может привести к смерти, серьезным телесным повреждениям или серьезному ущербу окружающей среде («использование с высоким риском»). Если вы решите использовать свое устройство в целях повышенного риска, вы делаете это на свой страх и риск.

ВНИМАНИЕ: Части этого устройства являются магнитными

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, перу Surface, док-станциям Surface, HoloLens и клавиатуре

Части вашего устройства являются магнитными и могут притягивать металлические предметы. Чтобы снизить потенциальный риск возникновения искр и последующего повреждения устройства, других объектов и/или возможных травм, перед подключением устройств или зарядных разъемов убедитесь, что в местах электрических соединений нет металлических предметов.Не размещайте устройства, чувствительные к магнитным полям, кредитные карты и другие магнитные носители информации рядом с вашим устройством, чтобы снизить вероятность возникновения магнитных помех между вашим устройством и другими устройствами, возможного нарушения работы медицинского устройства или повреждения данных, хранящихся на магнитных носителях.

ВНИМАНИЕ: Персональные медицинские устройства

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, Surface Pen, мобильным устройствам, HoloLens, мыши, клавиатуре, Microsoft Band и Xbox

.

Радиочастотное излучение и магнитные поля электронного оборудования могут отрицательно влиять на работу другого электронного оборудования, вызывая его неисправность.Хотя ваше устройство спроектировано, протестировано и изготовлено в соответствии с нормами, регулирующими радиочастотное излучение в таких странах, как США, Канада, Европейский Союз и Япония, беспроводные передатчики и электрические цепи в устройстве могут создавать непреднамеренные помехи в других устройствах. электронное оборудование.

Лица с кардиостимуляторами всегда должны принимать следующие меры предосторожности:

  • Американская кардиологическая ассоциация рекомендует поддерживать минимальное расстояние 15 см (6 дюймов) между беспроводным устройством и кардиостимулятором, чтобы избежать потенциальных помех для кардиостимулятора.

  • Если вы используете мобильное устройство с чехлом или держателем, выберите без металлических частей.

  • Не носите устройство в нагрудном кармане.

  • Если у вас есть основания подозревать наличие помех, немедленно выключите устройство.

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

ВНИМАНИЕ: Беспроводные устройства на борту самолета

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, Surface Pen, мобильным устройствам, HoloLens, мыши, клавиатуре и Xbox

.

Перед посадкой в ​​любой самолет или упаковкой беспроводного устройства в багаж, который будет проверяться, извлеките батареи из беспроводного устройства (если оно съемное) или выключите беспроводное устройство (если оно имеет переключатель включения/выключения). Слушайте объявление в полете, в котором сообщается, можете ли вы использовать свое устройство во время полета. Использование беспроводной связи в полете остается на усмотрение авиакомпании.

ВНИМАНИЕ! Радиочастотные помехи

Применяется к: Surface, Surface Headphones, Surface Earbuds, Surface Duo, Surface Pen, мобильным устройствам, HoloLens, мыши, клавиатуре и Xbox

Несмотря на то, что ваше устройство было протестировано на безопасность и совместимость, оно содержит радиомодем, который при определенных обстоятельствах может повлиять на другое электронное оборудование или медицинские устройства (например, кардиостимуляторы), что приведет к их неисправности и возможным травмам или смерти.

  • Выключите устройство в любом месте, где это указано.

  • Следуйте всем инструкциям экипажа, находясь в самолете. Выключите ваше устройство и/или включите режим полета в соответствии с инструкциями экипажа, в том числе для любых беспроводных устройств, упакованных в ваш багаж. Проконсультируйтесь с персоналом авиакомпании или экипажем об использовании вашего устройства в полете.

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

ВНИМАНИЕ! Потенциально взрывоопасная среда

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, док-станциям Surface, HoloLens, мобильным устройствам, устройствам Azure Kinect и Xbox

.

Не храните и не носите легковоспламеняющиеся жидкости, газы или взрывоопасные материалы в одном отсеке с вашим устройством, его частями и/или аксессуарами.

Выключите устройство и не снимайте и не устанавливайте зарядные устройства, адаптеры переменного тока или любые другие аксессуары для вашего устройства, когда вы находитесь в зоне с потенциально взрывоопасной атмосферой.Зоны с потенциально взрывоопасной атмосферой часто, но не всегда, обозначаются и могут включать заправочные станции или заправочные станции; под палубой на лодках или других судах; объекты по транспортировке и хранению топлива и/или химикатов; и места, где в воздухе скопились легковоспламеняющиеся химические вещества или частицы, такие как зерновая пыль или металлический порошок. В таких местах могут возникнуть искры и стать причиной взрыва или пожара.

ВНИМАНИЕ: Нарушения опорно-двигательного аппарата

Применяется к: Surface, Surface Duo, Surface Pen, HoloLens, мыши, клавиатуре, мобильным устройствам и Xbox

.

Использование электронных устройств ввода может быть связано с серьезными травмами или расстройствами.При использовании компьютера, как и при многих других действиях, вы можете время от времени испытывать дискомфорт в кистях, предплечьях, плечах, шее или других частях тела. Однако, если вы испытываете такие симптомы, как постоянный или повторяющийся дискомфорт, боль, пульсация, ноющая боль, покалывание, онемение, ощущение жжения или скованность, НЕ ИГНОРИРУЙТЕ ЭТИ ПРЕДУПРЕЖДАЮЩИЕ ЗНАКИ. НЕЗАМЕДЛИТЕЛЬНО ОБРАЩАЙТЕСЬ К КВАЛИФИЦИРОВАННОМУ ВРАЧУ, даже если симптомы возникают, когда вы не работаете за компьютером. Подобные симптомы могут быть связаны с болезненными, а иногда и навсегда приводящими к инвалидности травмами или заболеваниями нервов, мышц, сухожилий или других частей тела.

Эти заболевания опорно-двигательного аппарата (MSD) включают синдром запястного канала, тендинит, теносиновит и другие состояния. Хотя исследователи пока не могут ответить на многие вопросы о дисфункциях среднего позвоночника, существует общее мнение, что многие факторы могут быть связаны с их возникновением, в том числе: общее состояние здоровья, стресс и то, как человек справляется с ним, медицинские и физические условия, а также то, как человек позиционирует себя. и использует свое тело во время работы и других действий (включая использование клавиатуры или мыши).Количество времени, в течение которого человек выполняет какую-либо деятельность, также может быть фактором.

Некоторые рекомендации, которые могут помочь вам более комфортно работать с вашим устройством и, возможно, снизить риск возникновения MSD, можно найти по адресу https://support.microsoft.com и https://xbox.com/xboxone/playhealthy (Здоровая игра). Руководство).

ПРЕДУПРЕЖДЕНИЕ: фоточувствительные припадки

Применяется к: Surface, Surface Duo, HoloLens и Xbox

.

У некоторых людей может возникнуть припадок при воздействии мигающих огней или узоров в движущихся изображениях или видеоиграх.Даже у людей, у которых в анамнезе не было припадков или эпилепсии, может быть невыявленное заболевание, которое может вызывать «светочувствительные припадки» во время просмотра движущихся изображений или видеоигр.

Эти припадки могут иметь различные симптомы, включая головокружение, изменение зрения, подергивание глаз или лица, подергивание или дрожание рук или ног, дезориентацию, спутанность сознания или кратковременную потерю сознания. Светочувствительные припадки также могут вызывать потерю сознания или судороги, которые могут привести к травме при падении или ударе о близлежащие предметы.Немедленно прекратите играть и обратитесь к врачу, если у вас возникли какие-либо из этих симптомов. Родители должны наблюдать за своими детьми или спрашивать их о вышеуказанных симптомах — дети и подростки чаще, чем взрослые, испытывают эти приступы. Риск фоточувствительных судорог можно снизить, приняв следующие меры предосторожности:

  • Сядьте подальше от видеоэкрана.

  • Используйте видеоэкран меньшего размера.

  • Играйте в хорошо освещенной комнате.

  • Не играйте в состоянии сонливости или усталости.

Если у вас или у кого-либо из ваших родственников были судороги или эпилепсия, проконсультируйтесь с врачом перед игрой.

ВНИМАНИЕ: Общая безопасность батареи

Применяется к: Surface, наушникам Surface, наушникам Surface, перу Surface, HoloLens, мыши, клавиатуре, мобильным устройствам, Microsoft Band и Xbox

.

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

Аккумуляторная жидкость вызывает коррозию и может быть токсичной. Это может вызвать ожоги и может быть опасным или смертельным при проглатывании.

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

  • Храните батареи в недоступном для детей месте.

  • Заряжайте аккумуляторы только с помощью зарядного устройства, поставляемого с устройством. Использование неподходящего метода зарядки может привести к возгоранию или взрыву

  • Немедленно извлеките из устройства старые, разряженные или изношенные аккумуляторы. Утилизируйте или утилизируйте старые, разряженные или изношенные батареи в соответствии с местными, региональными или национальными законами или постановлениями

    .
  • Извлеките батареи из устройства перед его хранением в течение длительного периода времени.

  • Избегайте контакта с аккумуляторной жидкостью. Если батарея протекает:

    • Не допускайте попадания вытекшей жидкости на кожу, глаза, одежду или другие поверхности. Если аккумуляторная жидкость попала на кожу, глаза или одежду, немедленно промойте пораженный участок водой и обратитесь к врачу или другому медицинскому работнику.

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

    • Перед установкой новых батарей тщательно очистите батарейный отсек сухой тканью или следуйте рекомендациям производителя батарей по очистке.

  • Мы рекомендуем использовать аккумуляторы, одобренные Microsoft. Замените одноразовые или перезаряжаемые батареи, поставляемые с устройством, на батареи того же типа и номинала.

  • Не разбирать, раздавить. раздавить, открыть, проколоть, разорвать, замкнуть накоротко внешние контакты или цепи, подвергнуть воздействию температуры выше 40 °C (104 °F) или бросить батареи в огонь или воду.

  • Не смешивайте новые и старые батареи или батареи разных типов (например, угольно-цинковые и щелочные батареи).

  • Не допускайте прикосновения металлических предметов к клеммам аккумулятора на устройстве; они могут стать горячими и вызвать ожоги.

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

  • Не оставляйте устройство с батарейным питанием под прямыми солнечными лучами на длительное время.

  • Не погружайте батареи в воду и не допускайте намокания.

  • Не используйте аккумулятор, если он намок.Не пытайтесь сушить аккумулятор или аккумуляторный блок феном, в обычной духовке или в микроволновой печи.

  • Не подключайте аккумуляторы напрямую к настенным розеткам или автомобильным прикуривателям.

  • Не ударяйте, не бросайте, не наступайте на батареи и не подвергайте их сильным физическим ударам.

  • Не модифицируйте и не переделывайте аккумулятор, не пытайтесь вставлять в аккумулятор посторонние предметы, погружать его в воду или другие жидкости или подвергать его воздействию огня, взрыва или других опасностей.

  • Не перезаряжайте батареи вблизи огня или в очень жарких условиях.

  • Падение устройства или его аккумулятора, особенно на твердую поверхность, может привести к повреждению устройства и его аккумулятора. Мы рекомендуем вам обратиться за профессиональной помощью для осмотра вашего устройства, если вы считаете, что оно повреждено.

  • Никогда не используйте поврежденный аккумулятор.Если ваша батарея поцарапана или надрезана, немедленно отложите ее в сторону и утилизируйте надлежащим образом. Использование поврежденного аккумулятора может привести к коротким замыканиям, перегреву и другим неисправностям компонентов.

ПРЕДУПРЕЖДЕНИЕ. Безопасность батареи (не заменяемые пользователем батареи)

Применяется к: Surface, Xbox, HoloLens, наушникам Surface, наушникам Surface, Microsoft Band, устройствам с батареями, не заменяемыми пользователем

Неправильное использование аккумулятора вашего устройства может привести к возгоранию или взрыву.Не нагревайте, не открывайте, не прокалывайте, не калечите и не сжигайте свое устройство или его батарею. Не оставляйте и не заряжайте устройство под прямыми солнечными лучами в течение длительного периода времени. Это может привести к повреждению или расплавлению батареи.

Корпорация Майкрософт рекомендует обращаться за профессиональной помощью при ремонте любых других устройств и соблюдать осторожность при самостоятельном ремонте. Вскрытие и/или ремонт устройства может привести к поражению электрическим током, повреждению устройства, возгоранию, травмам и другим опасностям.Помощь и информация от Microsoft по ремонту устройств и другим услугам доступны на сайте www.support.microsoft.com.

ПРЕДУПРЕЖДЕНИЕ. Замена батареи и ремонт устройства (заменяемые пользователем батареи)

Применяется к: Surface Pen, мобильным устройствам, мыши, клавиатуре и Xbox

Батареи в устройствах с заменяемыми пользователем батареями можно заменить, открыв батарейный отсек и следуя инструкциям по замене батарей в Кратком руководстве пользователя.Корпорация Майкрософт рекомендует обращаться за профессиональной помощью при ремонте любых других устройств и проявлять осторожность при самостоятельном ремонте. Вскрытие и/или ремонт устройства может привести к поражению электрическим током, повреждению устройства, возгоранию, травмам и другим опасностям.

ПРЕДУПРЕЖДЕНИЕ. Безопасность батарейки типа «таблетка»

.

Применяется к: Клавиатура и Surface Pen

ХРАНИТЬ В НЕДОСТУПНОМ ДЛЯ ДЕТЕЙ.НЕ ПРОГЛАТЫВАЙТЕ АККУМУЛЯТОР. ОПАСНОСТЬ ХИМИЧЕСКОГО ОЖОГА.

Этот продукт содержит батарейки типа «таблетка». При проглатывании батарейка типа «таблетка» может вызвать серьезные внутренние ожоги и перфорацию мягких тканей всего за два часа, что может привести к серьезной травме или смерти.

Всегда держите новые и использованные батареи в недоступном для младенцев и детей месте. Если батарейный отсек на вашем устройстве не закрывается плотно, прекратите его использование и держите его подальше от младенцев и детей.Немедленно обратитесь за медицинской помощью, если вы считаете, что младенец или ребенок мог проглотить или поместить батарейку типа «таблетка» внутрь любой части своего тела. Батареи типа «таблетка» или «таблетка» должны быть немедленно удалены квалифицированным медицинским персоналом, чтобы свести к минимуму риск серьезной травмы или смерти.

ВНИМАНИЕ! Безопасность источника питания переменного тока

Применяется к: Surface, Surface Duo, док-станциям Surface, HoloLens, мобильным устройствам и устройствам с внешними источниками питания

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

Чтобы выбрать подходящий источник питания для вашего устройства:

  • Мы рекомендуем использовать оригинальные блоки питания Microsoft (PSU) и шнуры питания переменного тока. Вместе с устройством был предоставлен подлинный блок питания Microsoft. Подлинные блоки питания Microsoft также можно приобрести у авторизованного розничного продавца Microsoft и в https://store.microsoft.com/devices.

  • Используйте только питание переменного тока от стандартной сетевой розетки. Не используйте нестандартные источники питания, такие как генераторы или инверторы, даже если напряжение и частота кажутся приемлемыми.

  • Убедитесь, что ваша электрическая розетка обеспечивает мощность, указанную на блоке питания (напряжение [В] и частота [Гц]). Если вы не уверены в типе электропитания, подаваемого в ваш дом, проконсультируйтесь с квалифицированным электриком.

  • Не перегружайте настенную розетку, удлинитель, удлинитель или другую электрическую розетку. Убедитесь, что они рассчитаны на общий ток (в амперах [А]), потребляемый вашим устройством (как указано на блоке питания) и любыми другими устройствами, использующими ту же цепь.

  • Для устройств, в которых штыри переменного тока можно сложить для хранения, убедитесь, что его штыри полностью выдвинуты, прежде чем подключать блок питания переменного тока для вашего устройства в электрическую (сетевую) розетку.

  • Для устройств, оснащенных кабелями питания со съемными штырями и универсальным блоком питания, перед подключением блока питания переменного тока к сетевой розетке убедитесь, что блок штырей правильно сконфигурирован для сетевой розетки и полностью вставлен в блок питания.

ПРЕДУПРЕЖДЕНИЕ: Воздействие радиочастотной (РЧ) энергии

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, Surface Pen, мобильным устройствам, HoloLens, мыши, клавиатуре, Microsoft Band и Xbox

Устройства, содержащие радиопередатчики Wi-Fi и Bluetooth®, были разработаны, изготовлены и испытаны в соответствии с Федеральной комиссией по связи (FCC), Министерством промышленности Канады и европейскими директивами по радиочастотному излучению и удельной мощности поглощения.

Чтобы гарантировать, что ваше воздействие радиочастотной энергии, генерируемой радиомодулями Wi-Fi и Bluetooth, не превышает пределов воздействия, установленных в этих рекомендациях, ориентируйте устройства с экранами дисплея таким образом, чтобы сторона дисплея не соприкасалась непосредственно с вашим телом (т.е. , положив дисплей лицевой стороной вниз на колени или на верхнюю часть тела.

Дополнительную информацию о радиочастотной безопасности можно найти на веб-сайте FCC по адресу http://www.fcc.gov/oet/rfsafety и на веб-сайте Министерства промышленности Канады по адресу http://www.ic.gc.ca/eic/site/smt-gst.nsf/eng/sf01904.html.

ВНИМАНИЕ: Риск при ремонте

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

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

ВНИМАНИЕ: Предотвращение подушки безопасности

Применяется к: Surface, Surface Duo и мобильным устройствам

Не кладите устройство или другие предметы на подушки безопасности или рядом с ними в автомобилях, оборудованных подушками безопасности.Предметы, помещенные на подушку безопасности или рядом с ней, могут привести к серьезной травме или смерти в случае срабатывания подушки безопасности.

ВНИМАНИЕ! Очистка

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

Риск возгорания, поражения электрическим током или повреждения устройства Microsoft во время очистки можно снизить, приняв следующие меры предосторожности:

  • Перед очисткой отсоедините все кабели и выключите устройство.

  • Чистите устройство только снаружи.

  • Протрите устройство сухой тканью.

  • Для устройств с вентиляторами, вентиляционными отверстиями, портами или подобными отверстиями:

    • Аккуратно очистите внешнюю поверхность вентилятора, вентиляционного отверстия или другого отверстия, чтобы удалить пыль
      наращивать.

    • Не вставляйте предметы в вентилятор, вентиляционные отверстия, порты или другие отверстия.

  • Не пытайтесь очищать разъемы, погружая их в жидкости. Только аккуратно протрите и высушите
    чистой тканью.

ВНИМАНИЕ: Использование

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

Во избежание возгорания, поражения электрическим током или повреждения устройства не подвергайте его воздействию дождя, снега или других типов влаги. Не используйте устройство рядом с водой или во влажных или чрезмерно влажных местах (например, рядом с душем, ванной, раковиной или бассейном или во влажном подвале). Для поддержания вашего устройства в отличном рабочем состоянии:

  • Не используйте устройство рядом с источниками тепла, пищевыми продуктами, чрезмерной грязью, пылью, маслом, химическими веществами или под прямыми солнечными лучами.

  • Не кладите предметы на устройство.

  • Используйте только насадки/аксессуары, указанные Microsoft.

  • Для устройств с вентиляторами, вентиляционными отверстиями, портами или подобными отверстиями:

    • Не вставляйте предметы в вентилятор, вентиляционные отверстия, порты, прорези подставки и петли, пространства вокруг клавиш или другие отверстия.

    • Не допускайте скопления пыли на вентиляторе, вентиляционных отверстиях и других отверстиях.

    • Не размещайте устройство в узком или тесном пространстве.

  • Не сушите устройство феном, сушилкой для белья, обычным способом, тостером или микроволновой печью. Если ваше устройство намокло, осторожно протрите его снаружи чистой сухой тканью.

ВНИМАНИЕ! Порты и отверстия

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

Чтобы снизить риск возгорания, поражения электрическим током или повреждения устройства Microsoft

  • Не вставляйте предметы в вентилятор, вентиляционные отверстия, порты, прорези подставки и петли, пространства вокруг клавиш или другие отверстия.

  • Не пытайтесь чистить порты, прорези подставки и петли, пространства вокруг ключей или другие отверстия острыми предметами (например, скрепками, отвертками, канцелярскими ножами и т. д.)

ВНИМАНИЕ! Клавиши клавиатуры

Применяется к: поверхности, клавиатуре

Microsoft рекомендует обратиться за профессиональной помощью для ремонта или замены отсоединенных или отсутствующих клавиш на вашем устройстве.Будьте осторожны, если затеваете ремонт своими руками. Не надевайте на клавиатуру отсоединенные колпачки с силой и не вставляйте предметы в клавиатуру между клавишами и крышкой платы. Вскрытие и/или ремонт устройства может привести к поражению электрическим током, повреждению устройства, возгоранию, травмам и другим опасностям. Помощь и информация от Microsoft по ремонту устройств и другим услугам доступны на сайте www.support.microsoft.com.

ВНИМАНИЕ: Опасность удушья

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

Держите пластиковые пакеты подальше от младенцев и детей, чтобы избежать риска удушья.

ВНИМАНИЕ: следите за своим окружением

Применяется к: Surface, наушникам Surface, наушникам Surface, мобильным устройствам и HoloLens

Чтобы снизить потенциальный риск травм или смерти из-за отвлекающих факторов, не используйте свое устройство во время вождения, управления механизмами, езды на велосипеде, ходьбы или других действий, требующих вашего полного внимания. Использование устройства отдельно или с наушниками или гарнитурой (даже если они используются только в одном ухе) во время вождения автомобиля или езды на велосипеде не рекомендуется и может быть запрещено в вашем сообществе.

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

  • Никогда не печатайте и не просматривайте тексты или электронные письма.

  • Никогда не вводить навигационную информацию.

  • Никогда не пользуйтесь Интернетом и не выполняйте другие задачи, которые отвлекают ваше внимание.

ВНИМАНИЕ: Разъем постоянного тока блока питания (PSU)

Применяется к: Поверхность

Избегайте длительного контакта кожи с разъемом постоянного тока, когда блок питания (PSU) подключен к источнику питания, так как это может вызвать дискомфорт или травму.Следует избегать сна или сидения на разъеме постоянного тока.

Не подвергайте разъем воздействию жидкостей, пота, грязи или других загрязнений. Использование загрязненного разъема может привести к нагреву и вызвать дискомфорт или травму. Немедленно прекратите использование разъема. Отсоедините разъем постоянного тока от устройства. Высушите и протрите его чистой тканью.

Если вы обнаружите какие-либо повреждения на какой-либо части зарядного устройства или шнура, прекратите их использование и свяжитесь с нами для получения поддержки.

ВНИМАНИЕ: Используйте в безопасных условиях

Применимо к: Windows Mixed Reality

Использование вашего устройства может отвлекать вас и мешать вам видеть то, что вас окружает. Иммерсивные гарнитуры Windows Mixed Reality могут полностью мешать обзору, а контент может казаться удаленным, но при этом блокировать обзор ближайших физических объектов.

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

Вы должны следовать всем рекомендациям по настройке для Windows Mixed Reality, включая использование гарнитуры для создания границы. Настройка вашего ПК и некоторые приложения или возможности могут привести к задержкам или ошибкам в отображении границ.Всегда соблюдайте осторожность и следите за своим окружением, даже если вы установили границу.

ВНИМАНИЕ: Тяжелый объект

Применяется к: Surface Hub

Ваше устройство очень тяжелое. Чтобы снизить риск получения травм, смерти или повреждения устройства при подъеме, мы рекомендуем, чтобы устройство поднимали как минимум два человека. Важно использовать правильную позу при подъеме и/или перемещении устройства.

ВНИМАНИЕ! Общий доступ к устройству

Применяется к: Xbox, смешанная реальность Windows

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

ВНИМАНИЕ! Риск приложения

Применяется к: устройствам Azure Kinect

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

ПРЕДУПРЕЖДЕНИЕ. Использование аксессуаров для видеоигр

.

Применимо к: Xbox

Убедитесь, что дети, использующие аксессуары для видеоигр со своей консолью Xbox™ и сенсором Kinect™, играют безопасно, в пределах своих возможностей и понимают, как правильно пользоваться консолью, сенсором и аксессуарами.

ВНИМАНИЕ: Эргономичный подъем

Применяется к: Surface Hub

Чтобы снизить риск получения травм, смерти или повреждения устройства при подъеме, используйте надлежащие эргономические методы подъема, включая, помимо прочего:

  • Планируйте заранее.Убедитесь, что подъемная бригада согласна с планом.

  • Определите, можете ли вы поднять устройство. Это слишком тяжело или слишком неудобно?

  • Решите, нужны ли вам подъемные приспособления.

  • Проверьте окружающую среду на наличие препятствий и скользких поверхностей.

  • Поднимайте ноги, а не спину.

  • Согните ноги в коленях, держа спину прямо.

  • Держите устройство близко к телу.

  • Сосредоточьтесь на устройстве. Держите ноги примерно на ширине плеч.

  • Плавно поднимите прямо вверх.

  • Держите туловище прямо; не скручивайте во время подъема или после подъема груза.

  • Медленно и плавно установите устройство на подставку или настенное крепление с прямой спиной; не отпускайте, пока устройство не будет установлено на место.

ВНИМАНИЕ: Правильная установка стойки

Применяется к: Surface Hub

Устройство тяжелое и крепится к подставке с помощью всех четырех монтажных кронштейнов. Чтобы снизить риск травм, смерти или повреждения устройства:

  • Следуйте всем инструкциям производителя подставки.

  • Убедитесь, что подставка и предлагаемый способ крепления выдержат вес вашего устройства.

  • Используйте только крепежные детали, входящие в комплект поставки подставки.

  • Убедитесь, что все винты надежно затянуты в соответствии с инструкциями производителя подставки.

  • Не отпускайте устройство, пока не убедитесь, что верхний и нижний крючки обоих монтажных кронштейнов надежно закреплены на верхней и нижней монтажных направляющих подставки.

ВНИМАНИЕ: невидимые опасности в стенах или других монтажных поверхностях

Применяется к: Surface Hub

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

Установщик несет ответственность за обнаружение невидимых опасностей до начала установки и за их предотвращение во время установки. Перед сверлением и/или резкой оцените условия монтажа и всегда проверяйте, нет ли в стене или другой монтажной поверхности невидимых опасностей.

ПРЕДУПРЕЖДЕНИЕ. Следуйте указаниям и инструкциям по настройке и использованию

.

Применяется к: HoloLens, Windows Mixed Reality

Следуйте всем указаниям и инструкциям по настройке и использованию, предоставленным для вашего устройства, его аксессуаров и издателя любого программного приложения или 2D- или 3D-контента или опыта («контент»).

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

ВНИМАНИЕ: Опасность опрокидывания

Применяется к: Surface Hub

Во избежание травм, смерти или повреждения устройства, установленного на подставке, при его перемещении:

  • Используйте только ту подставку, которая совместима с вашим устройством.

  • Следуйте всем инструкциям производителя подставки по перемещению или перемещению устройства, установленного на подставке.

  • Не подвешивайте и не кладите тяжелые предметы на устройство или на подставку.

  • При необходимости отсоедините шнур питания и другие кабели перед перемещением устройства, установленного на подставке.

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

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

  • Только взрослые должны перемещать устройство, установленное на подставке.

ПРЕДУПРЕЖДЕНИЕ. Блок питания переменного тока и безопасность шнура питания

Применимо к: Xbox

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

Чтобы выбрать подходящий источник питания для вашего устройства:

  • Мы рекомендуем использовать оригинальные блоки питания Microsoft (PSU) и шнуры питания переменного тока. К устройству прилагался оригинальный блок питания Microsoft и/или шнур питания переменного тока. Подлинные блоки питания Microsoft или кабель питания переменного тока также можно приобрести у авторизованного розничного продавца Microsoft и в https://store.microsoft.com/devices.

  • Используйте только питание переменного тока от стандартной сетевой розетки. Не используйте нестандартные источники питания, такие как генераторы или инверторы, даже если напряжение и частота кажутся приемлемыми.

  • Убедитесь, что ваша электрическая розетка обеспечивает тип питания, указанный для вашего устройства (напряжение [В] и частота [Гц]). Если вы не уверены в типе электропитания, подаваемого в ваш дом, проконсультируйтесь с квалифицированным электриком.

  • Не перегружайте настенную розетку, удлинитель, удлинитель или другую электрическую розетку. Убедитесь, что они рассчитаны на общий ток (в амперах [А]), потребляемый вашим устройством и любыми другими устройствами, использующими ту же цепь.

  • Для устройств, в которых штыри переменного тока можно сложить для хранения, убедитесь, что его штыри полностью выдвинуты, прежде чем подключать блок питания переменного тока для вашего устройства в электрическую (сетевую) розетку.

  • Для устройств, оснащенных кабелями питания со съемными штырями и универсальным блоком питания, перед подключением блока питания переменного тока к сетевой розетке убедитесь, что блок штырей правильно сконфигурирован для сетевой розетки и полностью вставлен в блок питания.

ВНИМАНИЕ! Перемещение и подготовка места

Применяется к: Surface Hub

Для снижения риска получения травм из-за размера и веса устройства, а также важности удержания устройства в вертикальном положении:

  • Прежде чем перемещать устройство к месту его установки, осмотрите место, чтобы определить, как безопасно переместить его в место, где оно будет распаковано и смонтировано.

  • Для распаковки и установки всегда используйте как минимум двух человек.

  • После того, как ваше устройство распаковано, его следует немедленно установить, поэтому система крепления должна быть на месте до распаковки. Если вы устанавливаете на подставку на колесиках, заблокируйте или заблокируйте колеса подставки перед распаковкой.

  • Во избежание опасности споткнуться, держите место сборки свободным от упаковочных материалов.

ПРЕДУПРЕЖДЕНИЕ. Используйте требования

.

Применимо к: HoloLens

Межзрачковое расстояние (измерение расстояния между двумя вашими зрачками) от 51 до 74 необходимо для правильного и удобного просмотра голограмм с помощью HoloLens. Этот диапазон подходит для большинства взрослых и детей в возрасте 13 лет и старше. HoloLens не предназначен для использования детьми младше 13 лет.

ВНИМАНИЕ: Правильный настенный монтаж

Применяется к: Surface Hub

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

  • Следуйте всем инструкциям производителя настенного крепления.

  • Убедитесь, что конструкция/материалы вашей стены и предлагаемый способ крепления выдержат вес вашего устройства.

  • Приобретите и используйте рекомендуемое оборудование и систему крепления для вашего устройства в зависимости от конструкции/материалов вашей стены.

  • Убедитесь, что все винты надежно затянуты в соответствии с инструкциями производителя настенного крепления.

  • Устройство предназначено для установки на бетонную стену или столб. Перед началом монтажа может потребоваться дополнительное усиление стен из гипсокартона, штукатурки, пластиковых панелей, стальных и деревянных стен, столбов и/или шпилек.

  • Не отпускайте устройство, пока не убедитесь, что оно полностью закреплено в соответствии с инструкциями, прилагаемыми к выбранному вами решению для монтажа.

ВНИМАНИЕ: Правильная установка

Применяется к: Surface Hub

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

ПРЕДУПРЕЖДЕНИЕ: ранее существовавшие нарушения зрения

Применяется к: HoloLens, Windows Mixed Reality

Для просмотра стереоскопического 3D-контента требуется хорошее бинокулярное зрение. Подумайте о том, чтобы проконсультироваться с глазным врачом, если вы не можете четко и комфортно видеть 3D-эффект. HoloLens можно носить поверх большинства очков и использовать с контактными линзами. Если у вас уже есть нарушение зрения, проконсультируйтесь с врачом перед использованием HoloLens.У небольшого процента людей есть ранее существовавшие нарушения зрения, которые могут усугубляться при использовании HoloLens.

ВНИМАНИЕ! Стабильность устройства

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, док-станциям Surface, HoloLens, мыши, клавиатуре, мобильным устройствам и Xbox

.

Не кладите устройство на неровные или неустойчивые поверхности. Обязательно надежно держите его при переноске, а не с помощью аксессуара, кабеля или шнура.Ненадежное удержание устройства может привести к его падению или удару о человека или объект, что может привести к повреждению устройства, другого имущества или травмам.

ВНИМАНИЕ! Защита органов слуха

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, HoloLens, мобильным устройствам и Xbox

.

Частое или продолжительное воздействие громкого шума или звуков при использовании гарнитуры или наушников может привести к временной или постоянной потере слуха.Индивидуальная восприимчивость к шумовой потере слуха и потенциальным проблемам со слухом различается. Кроме того, громкость звука, воспроизводимого устройством, может различаться в зависимости от характера звука, настроек устройства и используемых гарнитуры или наушников. В результате не существует единой настройки громкости, подходящей для всех или для каждой комбинации звука, настроек и оборудования.

Вот несколько рекомендаций, основанных на здравом смысле, чтобы свести к минимуму воздействие громких шумов или звуков при использовании гарнитуры или наушников с вашим устройством:

  • Минимизируйте время прослушивания громкого звука.Весь звук, с которым вы сталкиваетесь каждый день, суммируется. При максимальной громкости прослушивание музыки или другого контента на вашем устройстве с помощью гарнитуры или наушников может привести к необратимому повреждению слуха через 15 минут. Если вы также подвергаетесь воздействию других громких звуков, прослушивание на высокой громкости займет меньше времени, чтобы вызвать повреждение слуха.

  • Чем больше времени вы проводите под воздействием громких звуков, тем выше вероятность того, что вы навредите своему слуху. Чем громче звук, тем меньше времени требуется для повреждения слуха.

  • Всегда убавляйте громкость на устройстве перед подключением к нему гарнитуры или наушников. Установите громкость, достаточную для четкого слышимости в тихой обстановке, но не выше.

  • Не увеличивайте громкость после начала прослушивания. Ваши уши могут со временем адаптироваться, чтобы высокая громкость звучала нормально, но высокая громкость все равно может повредить слух.

  • Не увеличивайте громкость, чтобы заблокировать внешний шум. Сочетание внешнего шума и звука из гарнитуры или наушников может повредить слух. Герметичные наушники или наушники с шумоподавлением могут уменьшить внешний шум, чтобы вам не приходилось увеличивать громкость.

  • Если вы не можете нормально понять, кто рядом говорит, уменьшите громкость. Звук, заглушающий обычную речь, может повредить слух.Даже в герметичных наушниках или наушниках с шумоподавлением вы должны слышать, как говорят люди поблизости.

  • Чтобы свести к минимуму вероятность повреждения слуха, устанавливайте громкость на достаточно низком уровне, чтобы вы могли разговаривать с людьми поблизости.

  • Наушники и гарнитуры могут притягивать опасные предметы, такие как скобы и скрепки. Всегда проверяйте гарнитуру или наушники перед использованием.

  • Использование гарнитуры или наушников во время вождения может быть запрещено или ограничено в вашем регионе; дополнительную информацию см. в местных законах и правилах.

Наконец, помните о симптомах потери слуха. Рекомендуется регулярно проверять слух у аудиолога. Прекратите использовать гарнитуру или наушники с вашим устройством и проверьте слух, если:

  • У вас есть симптомы потери слуха

  • Вы слышите звон в ушах

  • Ваша речь звучит невнятно, глухо или невнятно.

ОСТОРОЖНО: Стекло сенсорного экрана

Применяется к: Surface, Surface Duo, Surface Hub и мобильным устройствам

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

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

ВНИМАНИЕ! Раздражение кожи (носимые устройства)

Применяется к: HoloLens, наушникам Surface, наушникам Surface, Microsoft Band

Это устройство изготовлено из материалов, обычно используемых в носимых бытовых электронных устройствах. Однако у некоторых людей может развиться раздражение кожи из-за аллергии или повышенной чувствительности.Для снижения риска раздражения кожи:

  • Регулярно очищайте устройство.

  • Избегайте использования лосьонов или других продуктов под частями устройства, которые соприкасаются с кожей.

  • Не надевайте на поврежденную кожу.

  • Если применимо, затяните регулировку до упора, но не слишком туго.

  • Если ваша кожа раздражается, прекратите использование устройства.

Если симптомы тяжелые или сохраняются, обратитесь к врачу.

ВНИМАНИЕ! Раздражение кожи (неносимые устройства)

Применяется к: Surface Duo, Surface Pen, мыши и клавиатуре

Это устройство изготовлено из материалов, обычно используемых в носимых бытовых электронных устройствах.Однако у некоторых людей может развиться раздражение кожи из-за аллергии или повышенной чувствительности. Для снижения риска раздражения кожи:

  • Регулярно очищайте устройство.

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

  • Используйте с осторожностью, если ваша кожа повреждена.

Если симптомы тяжелые или сохраняются, обратитесь к врачу.

ВНИМАНИЕ: навигация

Применяется к: Surface, Surface Duo и мобильным устройствам

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

ВНИМАНИЕ! Безопасность кабеля и шнура

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, мобильным устройствам, HoloLens, мыши, клавиатуре, Microsoft Band, устройствам Azure Kinect и Xbox

.

Открытые кабели и шнуры устройств представляют потенциальную опасность, о которую можно споткнуться.Расположите все кабели и шнуры так, чтобы люди и домашние животные не могли споткнуться или случайно потянуть за них, когда они передвигаются или проходят по территории. Не позволяйте детям играть с кабелями и шнурами. Во избежание повреждения шнуров и кабелей:

  • Защитите шнуры от наступания или сдавливания.

  • Защищайте шнуры от пережатия или резкого изгиба, особенно там, где они подключены к сетевой розетке, блоку питания и вашему устройству.

  • Не дергайте, не завязывайте, не сгибайте, не натягивайте шнуры питания и не допускайте других повреждений. Не наматывайте шнур питания слишком туго, особенно вокруг блока питания. Вместо этого оберните его свободными витками, а не узкими углами.

  • При установке устройства или блока питания следите за тем, чтобы шнуры не были сильно согнуты, а разъемы не упирались в стену или твердую поверхность.

  • Не подвергайте шнуры питания воздействию источников тепла.

  • Не позволяйте домашним животным или детям кусать или жевать шнуры питания.

  • При отсоединении шнура питания тяните за вилку — не тяните за шнур.

  • Регулярно проверяйте шнуры и кабели питания.Если шнур питания или кабель нагревается, изнашивается, трескается или каким-либо образом повреждается, немедленно прекратите его использование. Мы рекомендуем вам заменить поврежденный шнур питания или кабель оригинальным источником питания или кабелем Microsoft.

  • Отсоединяйте зарядный кабель или шнур во время грозы или при длительном неиспользовании.

ВНИМАНИЕ! Удобное использование смешанной реальности

Применяется к: HoloLens, Windows Mixed Reality

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

Морская болезнь и связанные с ней симптомы могут возникнуть, когда существует несоответствие между тем, что вы видите, и тем, что воспринимает ваше тело. Если вы склонны к укачиванию, страдаете от мигрени, страдаете заболеванием внутреннего уха или имеете другие проблемы со здоровьем, вы можете подвергаться повышенному риску дискомфорта.

Неизвестно, что просмотр 3D или смешанной реальности вредит развитию зрения или вызывает нарушения бинокулярного зрения.Если вы не можете четко и комфортно просматривать трехмерный эффект, рассмотрите возможность консультации с окулистом, так как у вас может быть ранее существовавшее недиагностированное нарушение бинокулярного зрения.

Определенные ситуации могут увеличить риск дискомфорта. Например:

  • Если вы новичок — симптомы, как правило, уменьшаются по мере того, как вы привыкаете к использованию смешанной или виртуальной реальности.

  • Устройства могут лучше всего работать для пользователей, у которых межзрачковое расстояние (IPD) находится в пределах определенного диапазона.IPD — это расстояние между центрами зрачков обоих глаз. Пользователи с IPD за пределами оптимального диапазона для устройства могут испытывать дискомфорт.

  • Определенные типы контента, в частности игры или фильмы, которые заставляют вас чувствовать, будто вы перемещаетесь в пространстве или смотрите сверху вниз, или взаимодействия, включающие отслеживание движущихся объектов.

  • Использование устройства в течение длительного времени без перерыва.

Для снижения риска дискомфорта:

  • Начните медленно и делайте первые сеансы короткими. Для большинства людей дискомфорт должен уменьшиться в течение первых нескольких сеансов.

  • Периодически делайте перерывы и останавливайтесь и отдыхайте, если чувствуете какой-либо дискомфорт. Время и продолжительность перерывов зависят от конкретного пользователя и от того, как он использует свое устройство.

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

УВЕДОМЛЕНИЕ: Проблемы, связанные с нагревом

Применяется к: Surface, Surface Duo, док-станциям Surface, мобильным устройствам, другим неносимым устройствам и Xbox

.

Устройство может сильно нагреваться при обычном использовании. Он соответствует ограничениям температуры доступной для пользователя поверхности, установленным международными стандартами безопасности (IEC 60950-1 и IEC 62368).Тем не менее, продолжительный контакт с теплыми поверхностями в течение длительного времени может вызвать дискомфорт или травму. Чтобы уменьшить потенциальные проблемы, связанные с перегревом, следуйте этим рекомендациям:

  • Держите устройство и его адаптер питания в хорошо проветриваемом месте во время использования или зарядки. Обеспечьте достаточную циркуляцию воздуха под устройством и вокруг него.

  • Руководствуйтесь здравым смыслом, чтобы избежать ситуаций, когда ваша кожа соприкасается с устройством или его адаптером питания, когда оно работает или подключено к источнику питания.Например, не спите с устройством или его адаптером питания, не кладите его под одеяло или подушку и избегайте контакта тела с устройством, когда адаптер питания подключен к источнику питания. Будьте особенно осторожны, если у вас есть физическое состояние, которое влияет на вашу способность обнаруживать теплоту тела.

  • Если ваше устройство используется в течение длительного времени, его поверхность может сильно нагреться. Несмотря на то, что температура может не ощущаться горячей на ощупь, если вы поддерживаете физический контакт с устройством в течение длительного времени, например, если вы кладете устройство на колени, ваша кожа может получить низкотемпературную травму.

  • Если ваше устройство лежит у вас на коленях и сильно нагревается, снимите его с колен и положите на устойчивую рабочую поверхность.

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

ВНИМАНИЕ: Проблемы, связанные с перегревом (носимые устройства)

Применяется к: HoloLens, Surface Headphones, Surface Earbuds, Microsoft Band, другим носимым устройствам

Устройство может сильно нагреваться при обычном использовании.Он соответствует ограничениям температуры доступной для пользователя поверхности, установленным международными стандартами безопасности (IEC 60950-1 и IEC 62368). Чтобы уменьшить проблемы, связанные с жарой, следуйте этим рекомендациям:

  • Соблюдайте ОСТОРОЖНОСТЬ при использовании устройства с подушкой, одеялом или другим мягким материалом, соприкасающимся с устройством, поскольку материал может блокировать поток воздуха, что может привести к перегреву устройства.

  • Если ваше устройство сильно нагревается, снимите его и сделайте перерыв.

  • Если ваше устройство используется в течение длительного времени, его поверхность может сильно нагреться. Хотя температура может не ощущаться горячей на ощупь, если вы поддерживаете физический контакт с устройством в течение длительного времени, ваша кожа может получить низкотемпературную травму.

  • Никогда не кладите блок питания (БП) вашего устройства на мебель или любую другую поверхность, которая может быть повреждена в результате воздействия тепла, поскольку температура поверхности блока питания может повышаться при нормальном использовании.

ВНИМАНИЕ: обращение с

Применяется к: Surface, наушникам Surface, наушникам Surface, Surface Duo, HoloLens, мобильным устройствам, устройствам Microsoft Band и Azure Kinect

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

УВЕДОМЛЕНИЕ. Совместимость со сторонними производителями

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

Некоторые аксессуары сторонних производителей могут быть несовместимы с вашим устройством или могут быть контрафактными, поэтому мы настоятельно рекомендуем вам приобретать и использовать только оригинальные устройства или аксессуары Microsoft или устройства или аксессуары, лицензированные Microsoft.Использование несовместимых или поддельных аксессуаров, аккумуляторов и зарядных устройств может привести к повреждению вашего устройства и создать возможный риск возгорания, взрыва или выхода из строя аккумулятора, что может привести к серьезным травмам, повреждению вашего устройства или другим серьезным опасностям.

ПРИМЕЧАНИЕ. Для более удобного просмотра 3D-контента

Применяется к: HoloLens, Windows Mixed Reality

Для просмотра стереоскопического 3D-контента требуется хорошее бинокулярное зрение.Если у вас нарушение бинокулярного зрения, например косоглазие (косоглазие, косоглазие или блуждающий глаз), вам может быть неудобно просматривать 3D-контент. Небольшой процент людей имеет ранее существовавшее нарушение бинокулярного зрения, о котором они могут не знать, пока не попытаются просмотреть 3D-контент. Подумайте о том, чтобы обратиться к окулисту, если вы не можете четко и комфортно просматривать 3D-контент.

УВЕДОМЛЕНИЕ. Использование границ

Применимо к: HoloLens, Windows Mixed Reality

Функции вашего устройства, если они доступны и правильно настроены, можно использовать для установки границ, чтобы помочь вам избежать препятствий и помочь в управлении своим окружением.

ВНИМАНИЕ: обращение с

Применимо к: Xbox

Бережно обращайтесь с устройством Microsoft. Он сделан из металла, пластика и имеет внутри чувствительные электронные компоненты. Ваше устройство может быть повреждено при падении, сжигании, проколе или раздавливании, а также при контакте с жидкостью. Если вы подозреваете, что ваше устройство или аккумулятор повреждены, прекратите использование устройства, так как это может привести к перегреву или травме.

ВНИМАНИЕ: Используйте диск

Применимо к: Xbox

Во избежание заклинивания дисковода и возможного повреждения дисков или устройства:

дресс-кодов | Энциклопедия Первой поправки

Дресс-код обычно применяется школьными округами и работодателями для содействия обучению, безопасности и имиджа.Хотя такие правила сталкиваются с проблемами Первой поправки со стороны учащихся, родителей и сотрудников, суды обычно поддерживают школы и работодателей. На этой фотографии 2013 года 61-летняя Мэри Бет Тинкер показывает Ассошиэйтед Пресс старую фотографию, на которой она вместе со своим братом Джоном Тинкером, во время интервью в Вашингтоне. В Тинкер. против Независимого школьного округа Де-Мойна, (1969 г.) Суд подтвердил права учащихся на свободу слова, предусмотренные Первой поправкой. Хотя решение суда поддержало право учащихся на самовыражение посредством определенных вещей, которые они носят, суд ни разу не указал, запрещает ли это право униформу, дресс-код или требования к внешнему виду.(Фото AP сделано Мануэлем Бальсе Синетой, использовано с разрешения Associated Press)

Дресс-код обычно применяется школьными округами и работодателями для содействия обучению, безопасности и имиджа. Хотя такие правила сталкиваются с проблемами Первой поправки со стороны учащихся, родителей и сотрудников, суды обычно поддерживают школы и работодателей.

Суд никогда напрямую не рассматривал правила школьной одежды

Школьные дресс-коды, которые просто исключают типы одежды, такие как бандитские цвета или провокационная одежда, как правило, принимаются без разногласий. Однако, когда кодексы требуют униформы, многие родители и дети возражают.

Верховный суд никогда напрямую не касался школьного дресс-кода. В деле Тинкер против Независимого школьного округа Де-Мойна (1969 г.), в котором участвовали старшеклассники с черными нарукавными повязками в знак протеста против войны во Вьетнаме, суд подтвердил права учащихся на свободу слова, предусмотренные Первой поправкой. Хотя решение суда поддержало право учащихся на самовыражение посредством определенных вещей, которые они носят, суд ни разу не указал, запрещает ли это право униформу, дресс-код или требования к внешнему виду.

Школьные дресс-коды, которые просто исключают типы одежды, такие как бандитские цвета или провокационная одежда, как правило, принимаются без разногласий. Однако, когда кодексы требуют униформы, многие родители и дети возражают. На этом фото ученики начальной школы Амосленда в новой обязательной школьной форме покидают первый день занятий в 1999 году в Филадельфии. (AP Photo/Dan Loh, использовано с разрешения Associated Press)

Столкнувшись с растущими проблемами с дисциплиной учащихся, особенно из-за группового насилия (с участием банд, члены которых часто идентифицировали себя через предметы одежды) и роста популярности более похотливой одежды в 1980-х и 1990-х годах, школьные системы в 1990-х годах начали вводить дресс-код, школьная форма и единый дресс-код.

В двух обращениях к Конгрессу США президент Билл Клинтон выступал за форму государственных школ, аналогичную той, что используется в приходских школах и во многих государственных школах за рубежом. Количество школ, перешедших на униформу, неизвестно, но в Калифорнии, где она впервые была введена в действие, по меньшей мере 50 школ отказались от требований к униформе в период с 2000 по 2002 год.

За исключением ограничения чистого политического выражения, которое не мешает обучению, школьные чиновники имеют большую конституционную свободу действий.Законодательство в этой области далеко не урегулировано, и суды часто встают на сторону школ, когда учащиеся и родители оспаривают требования к одежде.

На практике, однако, ожесточенность и стоимость судебных разбирательств сократили практические маневры школьной администрации и школьных советов.

Защита прав на самовыражение

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

Противники дресс-кода и униформы часто делятся на несколько категорий:

  • тех, кто не хочет, чтобы школы узурпировали родительские права,
  • тех, кто желает студенческой независимости,
  • желающих использовать подержанную одежду,
  • и тем, кто просто хочет похвастаться своей одеждой.

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

За исключением ограничения чисто политического выражения, которое не мешает обучению, школьные чиновники имеют большую конституционную свободу в отношении требования дресс-кода. На этой фотографии Томми ДеФо ждет у здания федерального суда в Ноксвилле, штат Теннесси, в 2008 году, пока присяжные обсуждают его иск о свободе слова против школьного совета округа Андерсон из-за дресс-кода, запрещающего ношение флага Конфедерации, например, на его поясе. пряжка.(AP Photo/Duncan Mansfield, использовано с разрешения Associated Press)

Плюсы и минусы школьного дресс-кода

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

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

Кроме того, трения и проблемы с дисциплиной могут обостриться, поскольку нарушители правил толпятся в кабинете директора. Со временем учащиеся могут просто перестать носить униформу или одежду, похожую на униформу, или они могут высмеивать политику, откровенно надевая униформу.

Ученые изучали влияние униформы и дресс-кода на дисциплину и успеваемость, но их выводы были неоднозначными: исследователи, в том числе социолог Дэвид Л.Брунсма из Алабамского университета в Хантсвилле пришли к выводу, что никакой связи не существует, что униформа или дресс-код гораздо менее важны, чем большинство других факторов, или даже что униформа снижает результаты тестов.

Работодатели имеют право вводить дресс-код, включая униформу, если для этого есть разумное основание. Они могут запретить все, что разумно считается отвлекающим от работы, включая боди-арт. На этой фотографии, сделанной в октябре 2005 года, защитник «Филадельфии 76ерс» Аллен Айверсон (в центре) пропустил игру против «Вашингтон Уизардс» из-за травмы. В ответ на платье Айверсона НБА объявила в служебной записке командам, что минимальный дресс-код вступит в силу с началом регулярного сезона 1 ноября. (AP Photo/Charles Dharapak, использовано с разрешения Associated Press)

Работодатели могут вводить дресс-код на рациональной основе

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

Работодатели также могут предлагать альтернативные дресс-коды, например, минимальные требования для «повседневной пятницы». Хотя в соответствии с Первой поправкой сотрудники не имеют права одеваться так, как они хотят выразить себя, они имеют право в соответствии с Первой поправкой оспаривать дресс-код в цивилизованной форме, не опасаясь возмездия со стороны работодателя.

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

Дискриминационный дресс-код будет отменен

При условии, что дресс-код четко прописан, не является чрезмерным или обременительным, применяется последовательно и не содержит явной дискриминации по признаку расы, пола, религии и, возможно, этнической принадлежности, этот кодекс является конституционным и не нарушает Раздел VII Закона о гражданских правах 1965 года.

Дресс-код, дискриминирующий по половому признаку, будет отменен. Однако можно соблюдать дресс-код, соответствующий общественным обычаям.Так, в деле Harper v. Blockbuster Entertainment (11-й округ, 1998 г.) 11-й окружной апелляционный суд США оставил в силе правило, требующее более коротких стрижек для сотрудников-мужчин.

Эта статья была впервые опубликована в 2009 году. Генри Ф. Кэри — адъюнкт-профессор политологии в Университете штата Джорджия.

Отправить отзыв об этой статье

Атрибуты объекта QML | Qt QML 5.15.8

Каждый тип объекта QML имеет определенный набор атрибутов. Каждый экземпляр типа объекта создается с набором атрибутов, определенных для этого типа объекта.Существует несколько различных типов атрибутов, которые можно указать, и они описаны ниже.

Атрибуты в объявлениях объектов

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

Набор типов атрибутов объектного типа QML следующий:

  • идентификатор атрибут
  • атрибуты свойств
  • атрибуты сигнала
  • атрибуты обработчика сигналов
  • атрибуты метода
  • прикрепленных свойств и прикрепленных атрибутов обработчика сигналов
  • атрибуты перечисления

Эти атрибуты подробно обсуждаются ниже.

id Атрибут

Каждый тип объекта QML имеет ровно один атрибут id . Этот атрибут предоставляется самим языком и не может быть переопределен или переопределен каким-либо типом объекта QML.

Атрибуту id экземпляра объекта может быть присвоено значение, чтобы позволить другим объектам идентифицировать этот объект и ссылаться на него. Этот идентификатор id должен начинаться со строчной буквы или символа подчеркивания и не может содержать символы, кроме букв, цифр и символов подчеркивания.

Ниже представлены объект TextInput и объект Text. Значение id объекта TextInput установлено на «myTextInput». Объект Text устанавливает для своего свойства text то же значение, что и свойство text TextInput, ссылаясь на myTextInput.text . Теперь оба элемента будут отображать один и тот же текст:

.
 импорт QtQuick 2.0

Столбец {
    ширина: 200; высота: 200

    TextInput {идентификатор: myTextInput; текст: "Привет, мир" }

    Текст { текст: myTextInput.текст }
} 

На объект можно ссылаться по его идентификатору из любой точки области действия компонента, в которой он объявлен. Таким образом, значение id всегда должно быть уникальным в пределах области действия его компонента. Дополнительные сведения см. в разделе Область действия и разрешение именования.

После создания экземпляра объекта значение его атрибута id изменить нельзя. Хотя это может выглядеть как обычное свойство, атрибут id является , а не обычным атрибутом свойства , и к нему применяется особая семантика; например, невозможно получить доступ к myTextInput.id в приведенном выше примере.

Атрибуты свойств

Свойство — это атрибут объекта, которому можно присвоить статическое значение или привязать к динамическому выражению. Значение свойства может быть прочитано другими объектами. Как правило, он также может быть изменен другим объектом, если конкретный тип QML явно не запрещает это для определенного свойства.

Определение атрибутов свойства

Свойство может быть определено для типа в C++ путем регистрации Q_PROPERTY класса, который затем регистрируется в системе типов QML. Кроме того, пользовательское свойство типа объекта может быть определено в объявлении объекта в документе QML со следующим синтаксисом:

.
 [по умолчанию] [обязательно] [только для чтения] свойство   

Таким образом, объявление объекта может предоставлять определенное значение внешним объектам или более легко поддерживать некоторое внутреннее состояние.

Имена свойств должны начинаться со строчной буквы и могут содержать только буквы, цифры и знаки подчеркивания. Зарезервированные слова JavaScript не являются допустимыми именами свойств.Ключевые слова default , required и readonly являются необязательными и изменяют семантику объявляемого свойства. Дополнительные сведения об их значении см. в следующих разделах о свойствах по умолчанию, обязательных свойствах и свойствах только для чтения.

Объявление пользовательского свойства неявно создает сигнал изменения значения для этого свойства, а также соответствующий обработчик сигнала с именем onChanged , где — это имя свойства, первая буква которого заглавная. .

Например, следующее объявление объекта определяет новый тип, производный от базового типа Rectangle. Он имеет два новых свойства с обработчиком сигнала, реализованным для одного из этих новых свойств:

.
 Прямоугольник {
    цвет свойства предыдущаяЦвет
    цвет свойства nextColor
    onNextColorChanged: console.log("Следующий цвет будет: " + nextColor.toString())
} 
Допустимые типы в определениях пользовательских свойств

Любой из базовых типов QML, кроме типа перечисления, может использоваться в качестве пользовательских типов свойств.Например, это все допустимые объявления свойств:

.
 Товар {
    свойство in someNumber
    строка свойства
    URL свойства
} 

(Значения перечисления — это просто целочисленные значения, и вместо этого на них можно ссылаться с типом int.)

Некоторые базовые типы предоставляются модулем QtQuick и поэтому не могут использоваться в качестве типов свойств, если модуль не импортирован. Дополнительные сведения см. в документации по базовым типам QML.

Обратите внимание, что базовый тип var — это общий тип заполнителя, который может содержать значения любого типа, включая списки и объекты:

 свойство var someNumber: 1.5
свойство var someString: "abc"
свойство var someBool: true
свойство var someList: [1, 2, "три", "четыре"]
свойство var someObject: Rectangle { width: 100; высота: 100; цвет: "красный" } 

Кроме того, в качестве типа свойства можно использовать любой тип объекта QML. Например:

 свойство Item someItem
свойство Прямоугольник someRectangle 

Это относится и к пользовательским типам QML. Если тип QML был определен в файле с именем ColorfulButton.qml (в каталоге, который затем был импортирован клиентом), то свойство типа ColorfulButton также будет допустимым.

Присвоение значений атрибутам свойств

Значение свойства экземпляра объекта может быть указано двумя разными способами:

  • присвоение значения при инициализации
  • императивное присвоение значения

В любом случае значение может быть либо статическим значением , либо значением выражения привязки .

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

Синтаксис для присвоения значения свойству при инициализации:

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

.
 [по умолчанию] свойство   :  

Ниже приведен пример инициализации значения свойства:

 импорт QtQuick 2.0

Прямоугольник {
    красный цвет"
    свойство color nextColor: "синий"
} 
Императивное присвоение значения

Императивное присвоение значения — это когда значение свойства (статическое значение или выражение привязки) присваивается свойству из императивного кода JavaScript.Синтаксис императивного присваивания значения — это просто оператор присваивания JavaScript, как показано ниже:

 [.] = значение 

Ниже приведен пример императивного присвоения значения:

 импорт QtQuick 2. 0

Прямоугольник {
    идентификатор: прямоугольник
    Компонент.onCompleted: {
        rect.color = "красный"
    }
} 
Статические значения и значения выражения привязки

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

Вид Семантика
Статическое значение Постоянное значение, не зависящее от других свойств.
Binding Expression Выражение JavaScript, описывающее связь свойства с другими свойствами. Переменные в этом выражении называются зависимостями свойства .

Движок QML обеспечивает связь между свойством и его зависимостями.Когда значение любой из зависимостей изменяется, механизм QML автоматически повторно оценивает выражение привязки и присваивает новый результат свойству.

Вот пример, показывающий, что оба типа значений присваиваются свойствам:

 импорт QtQuick 2.0

Прямоугольник {
    
    ширина: 400
    высота: 200

    Прямоугольник {
        
        ширина: родитель.ширина / 2
        высота: родитель.высота
    }
} 

Примечание: Для императивного назначения выражения привязки выражение привязки должно содержаться в функции, которая передается в Qt.binding(), а затем значение, возвращаемое Qt.binding(), должно быть присвоено свойству. Напротив, Qt.binding() нельзя использовать при назначении выражения привязки при инициализации. Дополнительные сведения см. в разделе Связывание свойств.

Тип Безопасность

Свойства типобезопасны. Свойству может быть присвоено только значение, соответствующее типу свойства.

Например, если свойство является реальным, и если вы попытаетесь присвоить ему строку, вы получите ошибку:

 свойство int volume: "четыре" 

Аналогичным образом, если свойству присваивается значение неправильного типа во время выполнения, новое значение не будет присвоено, и будет сгенерирована ошибка.

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

См. Базовые типы QML для получения списка типов свойств, которые поддерживаются по умолчанию. Кроме того, любой доступный тип объекта QML также может использоваться в качестве типа свойства.

Особые типы свойств
Атрибуты свойств списка объектов

Свойству типа списка может быть назначен список значений типа объекта QML. Синтаксис для определения значения списка объектов представляет собой список, разделенный запятыми, заключенный в квадратные скобки:

 [<элемент 1>, <элемент 2>, ...] 

Например, тип Item имеет свойство states, которое используется для хранения списка объектов типа State. В приведенном ниже коде значение этого свойства инициализируется списком из трех объектов State:

.
 импорт QtQuick 2.0

Пункт {
    состояния: [
        Состояние {имя: "загрузка"},
        Состояние {название: "работает"},
        Состояние {имя: "остановлено"}
    ]
} 

Если список содержит один элемент, квадратные скобки можно не ставить:

 импорт QtQuick 2.0

Пункт {
    состояния: состояние {имя: "работает"}
} 

Свойство типа списка может быть указано в объявлении объекта со следующим синтаксисом:

 [по умолчанию] список свойств<> propertyName 

и, как и другие объявления свойств, инициализация свойства может быть объединена с объявлением свойства со следующим синтаксисом:

 [по умолчанию] список свойств<> propertyName:  

Ниже приведен пример объявления свойства списка:

Если вы хотите объявить свойство для хранения списка значений, которые не обязательно являются значениями объектного типа QML, вы должны вместо этого объявить свойство var.

Сгруппированные свойства

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

Например, тип Text имеет свойство группы шрифтов. Ниже первый объект Text инициализирует свои значения шрифта , используя точечную нотацию, а второй использует групповую нотацию:

.
 Текст {
    
    font.pixelSize: 12
    шрифт.b: правда
}

Текст {
    
    шрифт { размер пикселя: 12; б: правда }
} 

Типы сгруппированных свойств — это базовые типы, которые имеют подсвойства.Некоторые из этих базовых типов предоставляются языком QML, в то время как другие могут использоваться только в том случае, если модуль Qt Quick импортирован. Дополнительную информацию см. в документации о базовых типах QML.

Псевдонимы свойств

Псевдонимы свойств — это свойства, которые содержат ссылку на другое свойство. В отличие от обычного определения свойства, которое выделяет новое уникальное пространство для хранения свойства, псевдоним свойства связывает вновь объявленное свойство (называемое свойством с псевдонимом) как прямую ссылку на существующее свойство (свойство с псевдонимом).

Объявление псевдонима свойства выглядит как обычное определение свойства, за исключением того, что для него требуется ключевое слово псевдонима вместо типа свойства, а справа от объявления свойства должна быть допустимая ссылка псевдонима:

 [по умолчанию] псевдоним свойства <имя>: <псевдоним ссылки> 

В отличие от обычного свойства псевдоним имеет следующие ограничения:

Например, ниже приведен тип Button со свойством buttonText с псевдонимом, которое связано с объектом text дочернего элемента Text:

импортировать QtQuick 2.0

Прямоугольник {
    псевдоним свойства buttonText: textItem.text

    ширина: 100; высота: 30; цвет: "желтый"

    Текст {идентификатор: textItem}
} 

Следующий код создаст кнопку с определенной текстовой строкой для дочернего текстового объекта:

 Кнопка { buttonText: "Нажми на меня"} 

Здесь изменение buttonText напрямую изменяет значение textItem. text; он не изменяет какое-либо другое значение, которое затем обновляет textItem.text. Если бы buttonText не был псевдонимом, изменение его значения фактически вообще не изменило бы отображаемый текст, поскольку привязки свойств не являются двунаправленными: значение buttonText изменилось бы, если бы textItem.текст был изменен, но не наоборот.

Соображения относительно псевдонимов свойств

Псевдонимы активируются только после полной инициализации компонента. Ошибка генерируется при ссылке на неинициализированный псевдоним. Аналогично, псевдоним свойства псевдонима также приведет к ошибке.

 псевдоним свойства widgetLabel: метка







Component.onCompleted: widgetLabel.text = "Инициализация псевдонима завершена" 

Однако при импорте типа объекта QML с псевдонимом свойства в корневой объект свойство отображается как обычное свойство Qt и, следовательно, может использоваться в ссылках псевдонима.

Свойство псевдонима может иметь то же имя, что и существующее свойство, фактически перезаписывая существующее свойство. Например, следующий тип QML имеет свойство псевдонима color , названное так же, как встроенное свойство Rectangle::color:

.
 Прямоугольник {
    идентификатор: цветной прямоугольник
    цвет псевдонима свойства: bluerectangle.color
    красный цвет"

    Прямоугольник {
        идентификатор: синий прямоугольник
        цвет: "#1234ff"
    }

    Компонент.onCompleted: {
        консоль.журнал (coloredrectangle.color)
        установить внутренний цвет ()
        console.log(coloredrectangle.color)
        colorrectangle.color = "#884646"
        console.log(coloredrectangle.color)
    }

    
    функция setInternalColor() {
        цвет = "#111111"
    }
} 

Любой объект, использующий этот тип и ссылающийся на его свойство color , будет ссылаться на псевдоним, а не на обычное свойство Rectangle::color. Однако внутри прямоугольник может правильно установить свое свойство color и ссылаться на фактическое определенное свойство, а не на псевдоним.

Псевдонимы и типы свойств

Псевдонимы свойств не могут иметь явных спецификаций типа. Тип псевдонима свойства — это объявленный тип свойства или объекта, на который он ссылается. Поэтому, если вы создадите псевдоним для объекта, на который ссылается идентификатор, с дополнительными свойствами, объявленными встроенными, дополнительные свойства не будут доступны через псевдоним:

.
Пункт {
    внутренний псевдоним свойства: innerItem

    Пункт {
        идентификатор: внутренний элемент
        свойство int extraProperty
    }
} 

Вы не можете инициализировать внутренний.extraProperty из-за пределов этого компонента, поскольку внутренний является только элементом :

МойЭлемент {
    внутреннее.дополнительное свойство: 5
} 

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

 // MainItem.qml
Пункт {
    // Теперь вы можете получить доступ к inner.extraProperty, так как inner теперь является ExtraItem
    внутренний псевдоним свойства: innerItem

    Дополнительный элемент {
        идентификатор: внутренний элемент
    }
}

// Дополнительный элемент.qml
Пункт {
    свойство int extraProperty
} 
Свойства по умолчанию

Определение объекта может иметь одно свойство по умолчанию . Свойство по умолчанию — это свойство, которому присваивается значение, если объект объявлен в определении другого объекта без объявления его как значения для определенного свойства.

Объявление свойства с необязательным ключевым словом default помечает его как свойство по умолчанию. Например, предположим, что есть файл MyLabel.qml со свойством по умолчанию someText :

импортировать QtQuick 2.0

Текст {
    свойство по умолчанию var someText

    текст: "Здравствуйте," + someText.text
} 

Значение someText может быть присвоено в определении объекта MyLabel , например:

 Моя метка {
    Текст { текст: "мир!" }
} 

Это имеет тот же эффект, что и следующее:

 Моя метка {
    someText: Text { текст: "мир!" }
} 

Однако, поскольку свойство someText помечено как свойство по умолчанию, нет необходимости явно назначать объект Text этому свойству.

Вы заметите, что дочерние объекты могут быть добавлены к любому основанному на Item типу без явного добавления их к дочернему свойству. Это связано с тем, что свойством по умолчанию для Item является его свойство data , и любые элементы, добавленные в этот список для Item, автоматически добавляются в список его дочерних элементов.

Свойства по умолчанию могут быть полезны для переназначения дочерних элементов элемента. См. пример TabWidget, в котором используется свойство по умолчанию для автоматического переназначения дочерних элементов TabWidget в качестве дочерних элементов внутреннего ListView.См. также Расширение QML.

Требуемые свойства

Объявление объекта может определять свойство по мере необходимости, используя ключевое слово required . Синтаксис

 обязательное свойство   

Как следует из названия, обязательные свойства должны быть установлены при создании экземпляра объекта. Нарушение этого правила приведет к тому, что приложения QML не запустятся, если это можно обнаружить статически. В случае динамически создаваемых компонентов QML (например, через Qt.createComponent()), нарушение этого правила приводит к предупреждению и нулевому возвращаемому значению.

Можно сделать существующее свойство обязательным с помощью

.

В следующем примере показано, как создать пользовательский компонент Rectangle, в котором всегда необходимо указывать свойство цвета.

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

Обязательные свойства играют особую роль в коде делегата модель-представление: если делегат представления имеет обязательные свойства, имена которых совпадают с именами ролей модели представления, то эти свойства будут инициализированы соответствующими значениями модели.Для получения дополнительной информации посетите страницу Модели и представления в Qt Quick.

и {QQuickView::setInitialProperties} для способов инициализации необходимых свойств из C++.

Свойства только для чтения

Объявление объекта может определять свойство только для чтения с использованием ключевого слова readonly со следующим синтаксисом:

 свойство только для чтения   :  

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

Например, код в блоке Component.onCompleted ниже недействителен:

 Товар {
    свойство только для чтения int someNumber: 10

    Component.onCompleted: someNumber = 20
} 

Примечание: Свойство только для чтения не может также быть свойством по умолчанию.

Объекты модификатора свойств

Свойства могут иметь связанные с ними объекты модификатора значения свойства.Синтаксис для объявления экземпляра типа модификатора свойства, связанного с конкретным свойством, следующий:

  в  {
    
} 

Важно отметить, что приведенный выше синтаксис на самом деле является объявлением объекта, которое создаст экземпляр объекта, который действует на уже существующее свойство.

Определенные типы модификаторов свойств могут быть применимы только к определенным типам свойств, однако это не обеспечивается языком.Например, тип NumberAnimation , предоставленный QtQuick , будет анимировать только свойства числового типа (например, int или real ). Попытка использовать NumberAnimation с нечисловым свойством не приведет к ошибке, однако нечисловое свойство не будет анимировано. Поведение типа модификатора свойства, связанного с конкретным типом свойства, определяется его реализацией.

Атрибуты сигнала

Сигнал — это уведомление от объекта о том, что произошло какое-то событие: например, изменилось свойство, запустилась или остановилась анимация, загрузилась картинка.Тип MouseArea, например, имеет сигнал щелчка, который испускается, когда пользователь щелкает в области мыши.

Объект может быть уведомлен через обработчик сигнала всякий раз, когда испускается определенный сигнал. Обработчик сигнала объявляется с синтаксисом on , где — это имя сигнала с заглавной первой буквой. Обработчик сигнала должен быть объявлен в определении объекта, излучающего сигнал, и обработчик должен содержать блок кода JavaScript, который будет выполняться при вызове обработчика сигнала.

Например, приведенный ниже обработчик сигнала onClicked объявлен в определении объекта MouseArea и вызывается при щелчке мышью, вызывая вывод сообщения консоли:

 импорт QtQuick 2.0

Пункт {
    ширина: 100; высота: 100

    Область мыши {
        anchors.fill: родитель
        при клике: {
            console.log("Нажмите!")
        }
    }
} 
Определение атрибутов сигнала

Сигнал может быть определен для типа в C++ путем регистрации Q_SIGNAL класса, который затем регистрируется в системе типов QML.В качестве альтернативы пользовательский сигнал для типа объекта может быть определен в объявлении объекта в документе QML со следующим синтаксисом:

.
 signal [([ <имя параметра>[, ...]])] 

Попытка объявить два сигнала или метода с одинаковыми именами в блоке одного типа является ошибкой. Однако новый сигнал может повторно использовать имя существующего сигнала в типе. (Это следует делать с осторожностью, так как существующий сигнал может быть скрыт и стать недоступным.)

Вот три примера объявлений сигналов:

 импорт QtQuick 2.0

Пункт {
    сигнал щелкнул
    сигнал завис()
    signal actionPerformed (строковое действие, var actionResult)
} 

Если сигнал не имеет параметров, скобки «()» необязательны. Если используются параметры, типы параметров должны быть объявлены, как для аргументов string и var для сигнала actionPerformed выше. Допустимые типы параметров совпадают с перечисленными в разделе «Определение атрибутов свойства» на этой странице.

Чтобы выдать сигнал, вызовите его как метод. Любые соответствующие обработчики сигналов будут вызываться при испускании сигнала, и обработчики могут использовать определенные имена аргументов сигнала для доступа к соответствующим аргументам.

Сигналы об изменении свойства
Типы

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

Атрибуты обработчика сигналов

Обработчики сигналов — это особый тип атрибута метода, где реализация метода вызывается механизмом QML всякий раз, когда испускается соответствующий сигнал. Добавление сигнала в определение объекта в QML автоматически добавит связанный обработчик сигнала в определение объекта, которое по умолчанию имеет пустую реализацию. Клиенты могут предоставить реализацию для реализации логики программы.

Рассмотрим следующий тип SquareButton , определение которого содержится в SquareButton.qml , как показано ниже, с активированными сигналами , и , деактивированными :

Прямоугольник {
    идентификатор: корень

    сигнал активирован (реальная xPosition, реальная yPosition)
    сигнал деактивирован

    свойство внутри сторона: 100
    ширина: сбоку; высота: сторона

    Область мыши {
        anchors.fill: родитель
        onPressed: root.activated(mouse.x, mouse.y)
        onReleased: root.deactivated()
    }
} 

Эти сигналы могут быть получены любыми объектами SquareButton в другом файле QML в том же каталоге, где реализации обработчиков сигналов предоставлены клиентом:

Квадратная кнопка {
    onActivated: консоль.log("Активировано в " + xPosition + "," + yPosition)
    onDeactivated: console.log("Деактивировано!")
} 

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

Обработчики сигналов изменения свойства

Обработчики сигналов для сигнала изменения свойства имеют синтаксическую форму onChanged , где — это имя свойства с заглавной первой буквой. Например, хотя документация по типу TextInput не документирует сигнал textChanged , этот сигнал неявно доступен благодаря тому факту, что TextInput имеет свойство text, и поэтому можно написать обработчик сигнала onTextChanged , который будет вызываться всякий раз, когда это свойство изменений:

 импорт QtQuick 2.0

Ввод текста {
    текст: "Измени это!"

    onTextChanged: console.log("Текст изменился на:", текст)
} 

Атрибуты метода

Метод объектного типа — это функция, которую можно вызвать для выполнения некоторой обработки или инициирования дальнейших событий. Метод может быть связан с сигналом, чтобы он автоматически вызывался всякий раз, когда сигнал испускается. Дополнительные сведения см. в разделе Система событий сигналов и обработчиков.

Определение атрибутов метода

Метод может быть определен для типа в C++ путем пометки функции класса, которая затем регистрируется в системе типов QML с помощью Q_INVOKABLE, или путем регистрации ее как Q_SLOT класса.Кроме того, пользовательский метод можно добавить к объявлению объекта в документе QML со следующим синтаксисом:

.
 function <имя_функции>([<имя_параметра>[, ...]]) { <тело> } 

Методы могут быть добавлены к типу QML для определения автономных повторно используемых блоков кода JavaScript. Эти методы могут быть вызваны либо внутренними, либо внешними объектами.

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

Попытка объявить два метода или сигнала с одинаковыми именами в блоке одного типа является ошибкой. Однако новый метод может повторно использовать имя существующего метода для типа. (Это следует делать с осторожностью, так как существующий метод может быть скрыт и стать недоступным.)

Ниже показан прямоугольник с методом calculateHeight() , который вызывается при присвоении значения высоты :

 импорт QtQuick 2.0
Прямоугольник {
    идентификатор: прямоугольник

    функция вычислитьВысоту() {
        возврат прямо.ширина / 2;
    }

    ширина: 100
    высота: вычислитьВысоту()
} 

Если у метода есть параметры, они доступны по имени внутри метода. Ниже, когда MouseArea щелкнут, он вызывает метод moveTo() , который затем может ссылаться на полученные параметры newX и newY для изменения положения текста:

 импорт QtQuick 2.0

Пункт {
    ширина: 200; высота: 200

    Область мыши {
        anchors.fill: родитель
        onClicked: label.moveTo(mouse.х, мышь.у)
    }

    Текст {
        идентификатор: метка

        функция moveTo(новыйX, новыйY) {
            метка.x = новыйX;
            метка.y = новыйY;
        }

        текст: "Двигай меня!"
    }
} 

Присоединенные свойства и прикрепленные обработчики сигналов

Присоединенные свойства и присоединенные обработчики сигналов — это механизмы, которые позволяют аннотировать объекты дополнительными свойствами или обработчиками сигналов, которые иначе недоступны для объекта. В частности, они позволяют объектам получать доступ к свойствам или сигналам, которые имеют непосредственное отношение к отдельному объекту.

Реализация типа QML может выбрать создание присоединяемого типа в C++ с определенными свойствами и сигналами. Затем можно создать экземпляры этого типа и присоединить к определенным объектам во время выполнения, что позволит этим объектам получить доступ к свойствам и сигналам присоединяемого типа. Доступ к ним осуществляется путем префикса свойств и соответствующих обработчиков сигналов с именем типа присоединения.

Ссылки на прикрепленные свойства и обработчики имеют следующий синтаксис:

 <тип прикрепления>.<имя_свойства>
.on 

Например, тип ListView имеет присоединенное свойство ListView.isCurrentItem, доступное для каждого объекта делегата в ListView. Это может использоваться каждым отдельным объектом делегата, чтобы определить, является ли он текущим выбранным элементом в представлении:

 импорт QtQuick 2.0

Посмотреть список {
    ширина: 240; высота: 320
    модель: 3
    делегат: прямоугольник {
        ширина: 100; высота: 30
        цвет: список.ТекущийЭлемент? "красный желтый"
    }
} 

В этом случае имя присоединяемого типа ListView , а рассматриваемое свойство — isCurrentItem , поэтому присоединенное свойство называется ListView.isCurrentItem .

Таким же образом ссылаются на прикрепленный обработчик сигнала. Например, прикрепленный обработчик сигнала Component.onCompleted обычно используется для выполнения некоторого кода JavaScript после завершения процесса создания компонента.В приведенном ниже примере после полного создания ListModel автоматически вызывается обработчик сигнала Component.onCompleted для заполнения модели:

 импорт QtQuick 2.0

Посмотреть список {
    ширина: 240; высота: 320
    модель: ListModel {
        идентификатор: списокМодель
        Компонент.onCompleted: {
            для (вар я = 0; я < 10; я ++)
                listModel.append({"Имя": "Элемент " + i})
        }
    }
    делегат: текст {текст: индекс}
} 

Поскольку имя присоединяемого типа Component , и этот тип имеет завершенный сигнал, присоединенный обработчик сигнала называется Component.onCompleted .

Примечание о доступе к присоединенным свойствам и обработчикам сигналов

Распространенной ошибкой является предположение, что прикрепленные свойства и обработчики сигналов доступны непосредственно из дочерних элементов объекта, к которому были прикреплены эти атрибуты. Это не тот случай. Экземпляр присоединяемого типа присоединяется только к определенным объектам, а не к объекту и всем его дочерним элементам.

Например, ниже приведена модифицированная версия предыдущего примера с присоединенными свойствами.На этот раз делегат — это элемент, а цветной прямоугольник — дочерний элемент этого элемента:

.
 импорт QtQuick 2.0

Посмотреть список {
    ширина: 240; высота: 320
    модель: 3
    делегат: Пункт {
        ширина: 100; высота: 30

        Прямоугольник {
            ширина: 100; высота: 30
            цвет: ListView.isCurrentItem? "красный желтый"
        }
    }
} 

Это не работает должным образом, поскольку ListView.isCurrentItem присоединен только к объекту корневого делегата, а не к его дочерним элементам.Поскольку Rectangle является дочерним элементом делегата, а не самим делегатом, он не может получить доступ к присоединенному свойству isCurrentItem как ListView.isCurrentItem . Поэтому вместо этого прямоугольник должен получить доступ к isCurrentItem через корневого делегата:

 Просмотр списка {
    
    делегат: Пункт {
        идентификатор: делегатитем
        ширина: 100; высота: 30

        Прямоугольник {
            ширина: 100; высота: 30
            цвет: delegateItem.ListView.isCurrentItem? "красный желтый"
        }
    }
} 

Теперь delegateItem.ListView.isCurrentItem правильно ссылается на присоединенное свойство isCurrentItem делегата.

Атрибуты перечисления

Перечисления предоставляют фиксированный набор именованных вариантов. Их можно объявить в QML, используя ключевое слово enum :

.
Текст {
    перечисление TextType {
        Нормальный,
        Заголовок
    }
} 

Как показано выше, перечисляемые типы (например, TextType ) и значения (например, Normal ) должны начинаться с заглавной буквы.

Значения указываются через <Тип>.<Тип перечисления>.<Значение> или <Тип>.<Значение> .

Текст {
    перечисление TextType {
        Нормальный,
        Заголовок
    }

    свойство int textType: MyText.TextType.Normal

    font.bold: textType == MyText.TextType.Heading
    font.pixelSize: textType == MyText.TextType.Heading ? 24 : 12
} 

Дополнительную информацию об использовании перечисления в QML можно найти в документации по перечислению основных типов QML.

Возможность объявлять перечисления в QML появилась в Qt 5.10.

Мелкие детали для игрушек и товаров для детей Бизнес-руководство

Какова цель регулирования мелких деталей?

Это постановление предотвращает смертельные случаи и травмы детей в возрасте до трех лет в результате удушья, вдыхания или проглатывания мелких предметов, которые они могут «пустить в рот». Он запрещает игрушки и другие предметы, предназначенные для использования детьми в возрасте до трех лет, которые состоят из мелких деталей или имеют мелкие детали, а также из которых образуются мелкие детали при поломке.

 

Какие продукты должны соответствовать этому правилу?

Регламент распространяется на продукты, предназначенные для детей младше трех лет. Эти продукты включают широкий спектр товаров, таких как игрушки, куклы и пазлы, детское оборудование, детская мебель и оборудование, такое как манежи, коляски, детские шезлонги и тренажеры. См. 16 C.F.R. Часть 1501.2  для получения более подробного списка.

 

Что такое маленькая деталь?

Мелкая деталь – это любой предмет, который полностью помещается в специально разработанный испытательный цилиндр 2.25 дюймов в длину и 1,25 дюйма в ширину, что примерно соответствует размеру полностью расширенного горла ребенка в возрасте до трех лет. (см. рисунок). См. 16 C.F.R. 1501.4 Небольшая деталь может быть:

  1. Целая игрушка или предмет
  2. A Отдельная часть игрушки, игры или другого предмета
  3. Кусок игрушки или предмета, который отламывается во время испытаний, имитирующих использование или жестокое обращение со стороны детей

Если небольшая деталь полностью помещается в цилиндр, а игрушка или изделие, из которого она изготовлена, предназначены для использования детьми в возрасте до трех лет, игрушка или изделие запрещены, поскольку эта маленькая деталь представляет опасность удушья.

 

Приспособление для испытаний мелких деталей

 

Как производители могут определить, какие игрушки и другие товары «предназначены» для детей младше 3 лет?

  1. В правиле перечислены общие примеры видов продукции, предназначенной для детей до 3 лет. 16 С.Ф.Р. 1501.2(а)
  2. Правило использует три фактора, чтобы определить, предназначена ли игрушка для детей младше трех лет: заявленное производителем намерение, например возраст, указанный на этикетке; реклама, продвижение и маркетинг продукта как предназначенного для использования детьми определенного возраста; и является ли продукт или игрушка общепризнанным предназначением для использования детьми в возрасте до 3 лет. См. 16 C.F.R. 1501.2(б)

 

Как производитель решает, является ли игрушка или другой продукт общепризнанным предназначением для детей младше 3 лет?

  1. Публикация CPSC «Сокращенное руководство производителей по маркировке игрушек по возрасту: соответствие характеристик игрушек возрасту детей». может помочь вам сопоставить характеристики продукта с возрастом детей, для которых он широко используется. Чтобы получить копию, позвоните по телефону 301-504-0800 или посетите https://www.cpsc.gov.
  2. Запросите определение возраста продукта в лаборатории, которая проверяет соответствие этому регламенту, или у другого лица или фирмы, обладающих опытом в этой области.

 

Какие игрушки и товары не подпадают под действие правил, касающихся мелких деталей?

  1. Да. Воздушные шары, книги и другие изделия из бумаги, грампластинки, письменные принадлежности, такие как цветные карандаши, мел, карандаши и ручки, глина для лепки и аналогичные изделия, а также пальчиковые краски, акварели и другие наборы для рисования освобождаются, поскольку они не могут быть изготовлены каким-либо способом. это предотвратило бы их разрушение на мелкие части при тестировании на использование и неправильное использование.Детская одежда и аксессуары, такие как держатели для шнурков и пуговицы, а также товары для ухода, кормления и гигиены, такие как булавки и зажимы для подгузников, заколки, зубные щетки, стаканы, посуда и столовые приборы, также не подпадают под действие исключения, поскольку они должны быть маленькими, чтобы выполнять свое предназначение. цель. См. 16 C.F.R. Часть 1501.3 и 4 (б).
  2. На погремушки и пустышки распространяются требования к их собственным мелким деталям. См. 16 C.F.R. 1510.3 и 1511.4(г).
  3. Продукт, предназначенный для использования детьми в возрасте до трех лет, должен соответствовать требованиям регламента о мелких деталях, если продукт не является одним из тех предметов, на которые конкретно не распространяется действие регламента.

Каким требованиям к испытаниям мелких деталей должны соответствовать игрушки и товары для детей до трех лет?

Эти игрушки и изделия не должны высвобождать детали, которые полностью помещаются в цилиндр для мелких деталей после испытаний на удар, изгиб, крутящий момент, растяжение и сжатие. Эти тесты имитируют силы, которые игрушки и изделия могут испытывать при нормальном использовании и жестоком обращении со стороны детей младше 3 лет. Если эти силы приводят к поломке частей, которые подходят к цилиндру, эти части представляют риск удушья, аспирации или проглатывания детьми младше 3 лет. .

 

16 С.Ф.Р. 1500.51 содержит тестовые процедуры и силы, которые имитируют использование и жестокое обращение с детьми в возрасте 0-18 месяцев. 16 С.Ф.Р. 1500.52 содержит тестовые процедуры и силы, имитирующие использование и жестокое обращение со стороны детей в возрасте 18–36 месяцев.

 

Существуют ли какие-либо другие требования, направленные на защиту детей младше 3 лет от удушья мелкими деталями?

Да. Игрушки и игры, изготовленные или содержащие мелкие детали и предназначенные для использования детьми от 3 до 6 лет, должны иметь маркировку, предупреждающую покупателей о том, что нельзя покупать их для детей младше 3 лет, поскольку эти дети могут подавиться мелкими деталями. .Мраморные шарики, маленькие шарики и воздушные шары также требуют подобных предупреждений. См. 16 C.F.R. 1500.19

 

Есть ли у CPSC какие-либо другие рекомендации или правила, которым должны соответствовать все товары для детей младше трех лет?

Да. Игрушки и товары для детей не должны иметь опасных острых концов (16 C.F.R. 1500.48) или краев (16 C.F.R. 1500.49) , иметь краску или любое другое подобное поверхностное покрытие, содержащее более 0,009% свинца (16 C.F.R.Часть 1303) , содержат другие опасные химические вещества  (16 C.F.R.1500.3(a)(15)) или превышают пределы воспламеняемости  (16 C.F.R. 1500.44) .

 

Какие товары и игрушки для детей до трех лет должны соответствовать дополнительным требованиям?

Пустышки -  16 C.F.R. 1511

Погремушки —  16 C.F.R. 1510

Детские кроватки -  16 C.F.R. 1508, 1509

Детские подушки, подушки -  16 C.Ф.Р. 1500.18(а)(16)

Детские ходунки, шезлонги, прыгунки -  16 CFR. 1500.18(а)(6)

Игрушки с электроприводом —  16 C.F.R. 1505

Куклы, мягкие игрушки и другие изделия, которые могут вызвать рваные раны или проколы. -  16 C.F.R. 1500.18(а)(1), (2), (3)

Маленькие шарики —  16 C.F.R. 1500.18(а)(17)

 

Применяются ли какие-либо другие стандарты к продуктам, предназначенным для детей в возрасте до трех лет?

Американское общество по испытаниям и материалам (ASTM) — это организация, которая координирует разработку добровольных отраслевых стандартов, дополняющих обязательные стандарты.Чтобы получить копию Стандартной спецификации безопасности для потребителей в отношении безопасности игрушек (ASTM F-963) и других добровольных стандартов, касающихся конкретных товаров для детей, обратитесь в Американское общество по испытаниям и материалам, 100 Barr Harbour Drive, West Conshohocken, PA 19428-2959. , телефон: (610) 832-9585, факс (610) 832-9555, или посетите сайт http://www.astm.org.

Где я могу получить дополнительную информацию?

Для получения дополнительной информации о требованиях к мелким деталям игрушек и товаров для детей обращайтесь в U.S. Комиссия по безопасности потребительских товаров:

  • Управление по соблюдению (для конкретных запросов по обеспечению соблюдения): электронная почта: [email protected]; телефон: (800) 638-2772
  • Омбудсмен малого бизнеса (для общей помощи в понимании и соблюдении правил CPSC): электронная почта: Пожалуйста, используйте нашу контактную форму, которая является лучшим способом получить быстрый ответ; телефон: (888) 531-9070.

 

Это сообщение было подготовлено только для общих информационных целей.T его краткий документ не является и не предназначен для предоставления юридической консультации, а также не заменяет и не отменяет обязательств производителя по соблюдению всех применимых законов, правил, стандартов или запретов, введенных в действие CPSC. Это сообщение не было рассмотрено или одобрено Комиссией и не обязательно отражает их точку зрения. Любые взгляды, выраженные в этом сообщении, могут быть изменены или заменены Комиссией.

Важная информация по безопасности для iPhone

ПРЕДУПРЕЖДЕНИЕ. Несоблюдение этих инструкций по безопасности может привести к возгоранию, поражению электрическим током, травмам или повреждению iPhone или другого имущества.Перед использованием iPhone прочтите всю приведенную ниже информацию о безопасности.

Обращение  Обращайтесь с iPhone осторожно. Он сделан из металла, стекла и пластика и имеет внутри чувствительные электронные компоненты. iPhone или его аккумулятор могут быть повреждены при падении, сжигании, проколе или раздавливании, а также при контакте с жидкостью. Если вы подозреваете повреждение iPhone или аккумулятора, прекратите использование iPhone, так как это может привести к перегреву или травме. Не используйте iPhone с треснутым стеклом, так как это может привести к травме.Если вы боитесь поцарапать поверхность iPhone, рассмотрите возможность использования чехла или чехла.

Ремонт   Не открывайте iPhone и не пытайтесь ремонтировать iPhone самостоятельно. Разборка iPhone может повредить его, привести к потере защиты от брызг и воды (поддерживаемые модели) или стать причиной травмы. Если iPhone поврежден или работает неправильно, обратитесь в компанию Apple или к авторизованному поставщику услуг Apple. Ремонт, осуществляемый поставщиками услуг, отличными от Apple или авторизованного поставщика услуг Apple, может не включать использование оригинальных деталей Apple и может повлиять на безопасность и функциональность устройства.Вы можете найти больше информации о ремонте и обслуживании на веб-сайте ремонта iPhone.

Аккумулятор   Не пытайтесь заменить аккумулятор iPhone самостоятельно. Литий-ионный аккумулятор в iPhone должен быть заменен компанией Apple или авторизованным поставщиком услуг. Неправильная замена или ремонт могут привести к повреждению аккумулятора, перегреву или травмам. Батарея должна быть переработана или утилизирована отдельно от бытовых отходов. Не сжигайте батарею. Информацию об обслуживании и переработке аккумуляторов см. на веб-сайте «Обслуживание и утилизация аккумуляторов».

Лазеры   Датчик приближения в iPhone 7 и более поздних версиях, система камер TrueDepth и сканер LiDAR содержат один или несколько лазеров. Эти лазерные системы могут быть отключены по соображениям безопасности, если устройство повреждено или неисправно. Если вы получаете уведомление на своем iPhone о том, что лазерная система отключена, вы всегда должны отремонтировать ее в Apple или авторизованном поставщике услуг. Неправильный ремонт, модификация или использование неоригинальных компонентов Apple в лазерных системах может помешать правильному функционированию защитных механизмов и привести к опасным воздействиям и травмам глаз или кожи.

Отвлечение внимания   Использование iPhone в некоторых случаях может отвлечь вас и создать опасную ситуацию (например, не пользуйтесь наушниками во время езды на велосипеде и не набирайте текстовые сообщения во время вождения автомобиля). Соблюдайте правила, запрещающие или ограничивающие использование мобильных устройств или наушников. Дополнительные сведения о безопасности во время вождения см. в статье Сохраняйте концентрацию во время вождения с iPhone.

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

Зарядка  Чтобы зарядить iPhone, выполните любое из следующих действий:

Вы также можете заряжать iPhone с помощью кабелей и адаптеров питания «Сделано для iPhone» или других сторонних производителей, совместимых со стандартом USB 2.0 или более поздней версии и действующим законодательством страны. а также международные и региональные стандарты безопасности.Другие адаптеры могут не соответствовать применимым стандартам безопасности, а зарядка с помощью таких адаптеров может привести к смерти или травмам.

Использование поврежденных кабелей или зарядных устройств, а также зарядка при наличии влаги может привести к возгоранию, поражению электрическим током, травмам или повреждению iPhone или другого имущества. При использовании зарядного кабеля (входит в комплект) или беспроводного зарядного устройства (продается отдельно) для зарядки iPhone убедитесь, что разъем USB полностью вставлен в совместимый адаптер питания, прежде чем подключать адаптер к розетке.Важно хранить iPhone, зарядный кабель, адаптер питания и любое беспроводное зарядное устройство в хорошо проветриваемом помещении во время использования или зарядки. При использовании беспроводного зарядного устройства снимите металлические корпуса и не кладите на зарядное устройство металлические посторонние предметы (например, ключи, монеты, батарейки или украшения), поскольку они могут нагреваться или мешать зарядке.

Зарядный кабель и разъем   Избегайте длительного контакта кожи с зарядным кабелем и разъемом, когда зарядный кабель подключен к источнику питания, так как это может вызвать дискомфорт или травму.Следует избегать сна или сидения на зарядном кабеле или разъеме.

Длительное воздействие тепла   USB-адаптеры питания для iPhone и Apple (продаются отдельно) соответствуют требуемым предельным значениям температуры поверхности, установленным действующим законодательством страны, а также международными и региональными стандартами безопасности. Однако даже в этих пределах продолжительный контакт с теплыми поверхностями в течение длительного времени может вызвать дискомфорт или травму. Руководствуйтесь здравым смыслом, чтобы избежать ситуаций, когда ваша кожа соприкасается с устройством, его адаптером питания или беспроводным зарядным устройством, когда оно работает или подключено к источнику питания в течение длительного времени.Например, не спите на устройстве, адаптере питания или беспроводном зарядном устройстве и не кладите их под одеяло, подушку или на свое тело, когда они подключены к источнику питания. Храните iPhone, адаптер питания и любое беспроводное зарядное устройство в хорошо проветриваемом помещении во время использования или зарядки. Будьте особенно осторожны, если у вас есть физическое состояние, которое влияет на вашу способность обнаруживать тепло тела.

USB-адаптер питания   (продается отдельно) Для безопасной эксплуатации USB-адаптера питания Apple и снижения вероятности тепловых травм или повреждений подключайте адаптер питания непосредственно к сетевой розетке.Не используйте адаптер питания во влажных местах, например, рядом с раковиной, ванной или душевой кабиной, а также не подключайте и не отключайте адаптер питания мокрыми руками. Прекратите использование адаптера питания и любых кабелей при наличии любого из следующих условий:

  • Вилка или штыри адаптера питания повреждены.

  • Зарядный кабель изношен или иным образом поврежден.

  • Адаптер питания подвергся воздействию чрезмерной влаги или внутрь адаптера питания попала жидкость.

  • Адаптер питания упал, его корпус поврежден.

Apple 20W USB-C Адаптер питания Характеристики:

  • Частота: 50-60 Гц, Однофазное

    90-60 Гц, Однофазное

  • Напряжение линии: 100-240 V

  • Выходное напряжение / ток : 9 VDC / 2.2A

  • Минимальная выходная мощность: 20 Вт

  • Выходной порт: USB-C

Apple 18W USB-C Адаптер питания Спецификации:

  • Частота: от 50 до 60 Гц, одна фаза

  • Линия напряжение: от 100 до 240 В

  • Выходное напряжение:

    Выходное напряжение: 5V / 3A или 9V / 2A

  • Выходной порт: USB-C

Характеристики адаптера питания Apple 5 Вт USB:

  • Частота: 50–60 Гц, однофазный 2

  • Выходное напряжение: 5 В/1 А

  • Выходной порт: USB

Потеря слуха   Прослушивание звука на большой громкости может повредить ваш слух.Фоновый шум, а также продолжительное воздействие высоких уровней громкости могут сделать звуки тише, чем они есть на самом деле. Включите воспроизведение звука и проверьте громкость, прежде чем вставлять что-либо в ухо. Информацию о том, как установить максимальный предел громкости, см. в разделе Использование функций уровня звука в наушниках на iPhone. Дополнительные сведения о потере слуха см. на веб-сайте «Звук и слух».

ПРЕДУПРЕЖДЕНИЕ: Во избежание возможного повреждения слуха не слушайте музыку на высокой громкости в течение длительного времени.

Воздействие радиочастот iPhone использует радиосигналы для подключения к беспроводным сетям. Для получения информации о радиочастотной (РЧ) энергии, создаваемой радиосигналами, и мерах, которые вы можете предпринять, чтобы свести к минимуму воздействие, выберите «Настройки» > «Основные» > «Законодательные и нормативные документы» > «Воздействие радиочастот» или посетите веб-сайт, посвященный воздействию радиочастот.

Радиопомехи  Соблюдайте знаки и предупреждения, запрещающие или ограничивающие использование электронных устройств. Несмотря на то, что iPhone разработан, протестирован и изготовлен в соответствии с нормами, регулирующими радиочастотное излучение, такое излучение iPhone может негативно повлиять на работу другого электронного оборудования, вызывая его неисправность.Если использование запрещено, например во время путешествия в самолете или по требованию властей, выключите iPhone или используйте режим полета или Настройки > Wi-Fi и Настройки > Bluetooth, чтобы отключить беспроводные передатчики iPhone.

Помехи для медицинских устройств  Аксессуары для iPhone и MagSafe содержат магниты, а также компоненты и/или радиоприемники, излучающие электромагнитные поля. Эти магниты и электромагнитные поля могут мешать работе медицинских устройств.

Проконсультируйтесь со своим врачом и производителем медицинского устройства для получения информации, касающейся вашего медицинского устройства, и необходимости соблюдения безопасного расстояния между вашим медицинским устройством и iPhone и аксессуарами MagSafe.Производители часто дают рекомендации по безопасному использованию своих устройств рядом с беспроводными или магнитными устройствами, чтобы предотвратить возможные помехи. Если вы подозреваете, что аксессуары iPhone и MagSafe мешают работе вашего медицинского устройства, прекратите использование этих продуктов.

Медицинские устройства, такие как имплантированные кардиостимуляторы и дефибрилляторы, могут содержать датчики, реагирующие на магниты и радиоприемники при близком контакте. Во избежание потенциального взаимодействия с этими устройствами держите модели iPhone, совместимые с MagSafe, и аксессуары MagSafe на безопасном расстоянии от устройства (более 6 дюймов/15 см или более 12 дюймов/30 см при беспроводной зарядке, но проконсультируйтесь с вашим врачом и производителем вашего устройства для получения конкретных указаний).

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

Заболевания   Если у вас есть какое-либо заболевание или симптомы, которые, по вашему мнению, могут быть вызваны iPhone или мигающими огнями (например, судороги, потеря сознания, зрительное напряжение или головные боли), проконсультируйтесь с врачом перед использованием iPhone.

Взрывоопасные и другие атмосферные условия   Зарядка или использование iPhone в местах с потенциально взрывоопасной атмосферой, например, в местах, где воздух содержит большое количество легковоспламеняющихся химических веществ, паров или частиц (таких как зерно, пыль или металлический порошок) , может быть опасным. Воздействие на iPhone среды с высокой концентрацией промышленных химикатов, включая почти испаряющиеся сжиженные газы, такие как гелий, может повредить или ухудшить функциональность iPhone. Соблюдайте все знаки и инструкции.

Повторяющиеся движения   Когда вы выполняете повторяющиеся действия, такие как ввод текста, пролистывание или игры на iPhone, вы можете испытывать дискомфорт в кистях, предплечьях, запястьях, плечах, шее или других частях тела. Если вы чувствуете дискомфорт, прекратите использование iPhone и обратитесь к врачу.

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

Опасность удушья   Некоторые аксессуары для iPhone могут представлять опасность для маленьких детей. Держите эти аксессуары подальше от маленьких детей.

Часто задаваемые вопросы (FAQ) — язык программирования Go

Происхождение

Какова цель проекта?

Во время создания Go, всего десять лет назад, мир программирования отличался от сегодняшнего. Производственное программное обеспечение обычно писалось на C++ или Java. GitHub не существовало, большинство компьютеров еще не были мультипроцессорными, кроме Visual Studio и Eclipse, было мало доступных IDE или других высокоуровневых инструментов. вообще, не говоря уже о бесплатном доступе в Интернете.

Тем временем мы были разочарованы чрезмерной сложностью, необходимой для использования языки, с которыми мы работали при разработке серверного программного обеспечения. Компьютеры стали намного быстрее с тех пор, как появились такие языки, как Сначала были разработаны C, C++ и Java, но акт программирования еще не сама продвинулась почти так же. Также было ясно, что мультипроцессоры становятся универсальными, но большинство языков предлагали мало помощи для их эффективного программирования и безопасно.

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

Эти соображения привели к а ряд дискуссий, из которых возник Go, сначала как набор идей и desiderata, а затем как язык. Всеобъемлющая цель состояла в том, чтобы Go делал больше, чтобы помочь работающему программисту. путем включения инструментов, автоматизации рутинных задач, таких как форматирование кода, и устранение препятствий для работы с большими кодовыми базами.

Гораздо более подробное описание целей Го и того, как их встречают, или хотя бы приближают, имеется в статье, Перейти в Google: Языковой дизайн на службе программной инженерии.

Какова история проекта?

Роберт Гриземер, Роб Пайк и Кен Томпсон начали делать наброски цели для нового языка на доске 21 сентября 2007 года. Через несколько дней цели превратились в план что-то сделать. и справедливое представление о том, что это будет.Дизайн продолжал работать неполный рабочий день в параллельно с несвязанной работой. К январю 2008 года Кен начал работать на компиляторе, с помощью которого можно исследовать идеи; он сгенерировал код C как свой вывод. К середине года язык стал полноценным проектом и достаточно устоялся, чтобы попробовать производственный компилятор. В мае 2008 г. Ян Тейлор самостоятельно начал работу над интерфейсом GCC для Go, используя проект спецификации. Расс Кокс присоединился к нам в конце 2008 года и помог изменить язык и библиотеки от прототипа до реальности.

Go стал общедоступным проектом с открытым исходным кодом 10 ноября 2009 года.Бесчисленное количество людей из сообщества внесли свои идеи, обсуждения и код.

Сейчас миллионы Go-программистов — сусликов — по всему миру. и есть больше каждый день. Успех Go намного превзошел наши ожидания.

Каково происхождение талисмана суслика?

Талисман и логотип были разработаны Рене Френч, которая также разработала Гленда, Кролик План 9. Сообщение в блоге про суслика объясняет как это было получено из того, что она использовала для WFMU Дизайн футболки несколько лет назад.Логотип и талисман покрыты Атрибуция Creative Commons 3.0 лицензия.

У суслика есть лист модели иллюстрируя его характеристики и как правильно их представлять. Лист модели был впервые показан в говорить Рене на Gophercon в 2016 году. У него есть уникальные черты; он суслик Go , а не просто какой-то старый суслик.

Язык называется Go или Golang?

Язык называется Go. Прозвище «голанг» возникло из-за того, что веб-сайт был изначально голанг.орг . (Тогда не было домена .dev .) Однако многие используют имя golang, и оно удобно, поскольку этикетка. Например, тэг Twitter для языка — «#golang». Название языка просто Go, несмотря ни на что.

Дополнительное примечание: хотя официальный логотип имеет две заглавные буквы, название языка пишется Go, а не GO.

Почему вы создали новый язык?

Go родился из-за разочарования в существующих языках и среды для работы, которую мы делали в Google.Программирование стало слишком сложно, и отчасти виноват выбор языков. Нужно было выбрать эффективную компиляцию, эффективное выполнение или простоту программирование; все три не были доступны в одном и том же мейнстриме язык. Программисты, которые могли, предпочитали простоту безопасности и эффективности за счет перехода на динамически типизированные языки, такие как Python и JavaScript, а не C++ или, в меньшей степени, Java.

Мы были не одиноки в своих опасениях. После многих лет довольно спокойного ландшафта для языков программирования, Go был одним из первых из нескольких новых языков — Rust, Elixir, Swift и другие, которые сделали разработку языков программирования снова активное, почти мейнстримное поле.

Go решил эти проблемы, попытавшись совместить простоту программирования с интерпретируемым, динамически типизированный язык с эффективностью и безопасностью статически типизированного компилируемого языка. Он также стремился быть современным, с поддержкой сетевых и многоядерных процессоров. вычисления. Наконец, работа с Go должна быть быстрой : это должно занять не более нескольких секунд для создания большого исполняемого файла на одном компьютере. Для достижения этих целей потребовалось решить ряд лингвистические проблемы: выразительная, но легкая система шрифтов; параллелизм и сборка мусора; жесткая спецификация зависимостей; и так далее.С ними невозможно справиться с помощью библиотек или инструментов; новый требовался язык.

Статья Перейти в Google обсуждает предысторию и мотивацию дизайна языка Go, а также предоставление более подробной информации о многих ответах, представленных в этом FAQ.

Кто предки Го?

Go в основном относится к семейству C (базовый синтаксис), со значительным вкладом от Pascal/Modula/Oberon семья (объявления, пакеты), плюс некоторые идеи из языков вдохновленный CSP Тони Хоара, такие как Newsqueak и Limbo (параллелизм).Тем не менее, это новый язык по всем направлениям. Во всех отношениях язык был разработан мышлением о том, что делают программисты и как сделать программирование, хотя бы Тип программирования, который мы делаем, более эффективен, а значит, веселее.

Каковы руководящие принципы в дизайне?

Когда Go был разработан, Java и C++ были наиболее распространенными используемые языки для написания серверов, по крайней мере, в Google. Мы чувствовали, что эти языки требуют слишком много бухгалтерии и повторений.Некоторые программисты отреагировали на это, перейдя к более динамичному, гибкие языки, такие как Python, за счет эффективности и безопасность типа. Мы чувствовали, что должна быть возможность иметь эффективность, безопасность и плавность на одном языке.

Go пытается уменьшить количество набора текста в обоих смыслах этого слова. При разработке мы старались уменьшить беспорядок и сложность. Нет опережающих объявлений и заголовочных файлов; все объявляется ровно один раз. Инициализация выразительна, автоматический и простой в использовании.Синтаксис чистый и легкий для ключевых слов. Повторение ( foo.Foo* myFoo = new(foo.Foo) ) уменьшается на вывод простого типа с использованием := конструкция объявления и инициализации. И, возможно, наиболее радикально здесь нет иерархии типов: только типы являются , им не обязательно объявить о своих отношениях. Эти упрощения позволяют Go быть выразительный, но понятный, не жертвуя при этом изысканностью.

Еще один важный принцип — сохранять ортогональность концепций.Методы могут быть реализованы для любого типа; структуры представляют данные, в то время как интерфейсы представляют абстракцию; и так далее. Ортогональность делает это легче понять, что происходит, когда вещи объединяются.

Использование

Использует ли Google Go для внутренних целей?

да. Go широко используется в производстве внутри Google. Одним из простых примеров является сервер, стоящий за golang.org. Это просто годок сервер документов, работающий в производственной конфигурации на Google App Engine.

Более важным примером является сервер загрузки Google, dl.google.com , который предоставляет бинарные файлы Chrome и другие большие устанавливаемые файлы, такие как apt-get пакеты.

Go — далеко не единственный язык, используемый в Google, но это ключевой язык. по ряду направлений, в том числе надежность сайта инжиниринг (SRE) и крупномасштабная обработка данных.

Какие еще компании используют Go?

Использование Go растет во всем мире, особенно, но не исключительно в пространстве облачных вычислений. Пара крупных проектов облачной инфраструктуры, написанных на Go: Докер и Кубернетес, но есть еще много.

Однако это не просто облако. Go Wiki включает в себя страница, регулярно обновляется, в нем перечислены некоторые из многих компаний, использующих Go.

В Wiki также есть страница со ссылками на Истории успеха о компаниях и проектах, использующих язык.

Связываются ли программы Go с программами C/C++?

Можно использовать C и Go вместе в одном адресном пространстве, но это не естественно и может потребовать специального программного обеспечения интерфейса. Кроме того, связывание кода C с кодом Go приводит к потере памяти. свойства безопасности и управления стеком, которые предоставляет Go.Иногда абсолютно необходимо использовать библиотеки C для решения проблемы, но это всегда вносит элемент риска, которого нет в чистый код Go, поэтому делайте это с осторожностью.

Если вам нужно использовать C с Go, дальнейшие действия зависят от Go. реализация компилятора. Существует три реализации компилятора Go, поддерживаемые Иди команда. Это gc , компилятор по умолчанию, gccgo , который использует серверную часть GCC, и несколько менее зрелый gollvm , использующий инфраструктуру LLVM.

Gc использует соглашение о вызовах и компоновщик, отличные от C и поэтому не может вызываться напрямую из программ на C или наоборот. Программа cgo обеспечивает механизм для «Внешний функциональный интерфейс», чтобы разрешить безопасный вызов Библиотеки C из кода Go. SWIG распространяет эту возможность на библиотеки C++.

Вы также можете использовать cgo и SWIG с Gccgo и gollvm . Поскольку они используют традиционный API, также возможно, с большой осторожностью, для прямой компоновки кода этих компиляторов с программами C или C++, скомпилированными с помощью GCC/LLVM.Однако для безопасного выполнения этого требуется понимание соглашений о вызовах для все затронутые языки, а также забота об ограничениях стека при вызове C или C++ из Го.

Какие IDE поддерживает Go?

Проект Go не включает пользовательскую IDE, но язык и библиотеки были разработаны, чтобы упростить анализ исходного кода. Как следствие, большинство известных редакторов и IDE поддерживают Go well, либо напрямую, либо через плагин.

Список известных IDE и редакторов с хорошей поддержкой Go доступны Emacs, Vim, VSCode, Atom, Eclipse, Sublime, IntelliJ (через пользовательский вариант под названием Goland) и многое другое.Скорее всего, ваша любимая среда продуктивна для программирование на Go.

Поддерживает ли Go буферы протоколов Google?

Отдельный проект с открытым исходным кодом предоставляет необходимый подключаемый модуль компилятора и библиотеку. Он доступен по адресу github.com/golang/protobuf/.

Могу ли я перевести домашнюю страницу Go на другой язык?

Абсолютно. Мы призываем разработчиков создавать сайты Go Language на их родных языках. Однако, если вы решите добавить на свой сайт логотип Google или брендинг (он не появляется на golang.орг), вам нужно будет соблюдать рекомендации на www.google.com/permissions/guidelines.html

Дизайн

Есть ли в Go среда выполнения?

В Go есть обширная библиотека, называемая средой выполнения . это часть каждой программы Go. Библиотека времени выполнения реализует сборку мусора, параллелизм, управление стеком и другие важные функции языка Go. Хотя это более важно для языка, среда выполнения Go аналогична до libc , библиотека C.

Однако важно понимать, что среда выполнения Go не включать виртуальную машину, например, предоставляемую средой выполнения Java. Программы Go заранее компилируются в собственный машинный код. (или JavaScript или WebAssembly, для некоторых вариантов реализации). Таким образом, хотя этот термин часто используется для описания виртуального среда, в которой работает программа, в Go слово «среда выполнения» это просто имя, данное библиотеке, предоставляющей важные языковые услуги.

Что случилось с идентификаторами Unicode?

При разработке Go мы хотели убедиться, что он не чрезмерно ASCII-ориентированный, что означало расширение пространства идентификаторов из ограничивается 7-битным ASCII.Правило Go — символы-идентификаторы должны быть буквы или цифры, как определено в Unicode, просты для понимания и реализовать, но имеет ограничения. Комбинированные символы исключено, например, по замыслу и это исключает некоторые языки, такие как деванагари.

Это правило имеет еще одно печальное последствие. Так как экспортируемый идентификатор должен начинаться с заглавная буква, идентификаторы, созданные из символов на некоторых языках по определению нельзя экспортировать. На данный момент единственное решение — использовать что-то вроде X日本語 , что явно неудовлетворительно.

Начиная с самой ранней версии языка, было значительно задумался о том, как лучше всего расширить пространство идентификатора, чтобы вместить программисты, использующие другие родные языки. Что именно делать, остается активной темой для обсуждения, и будущее версия языка может быть более либеральной в своем определении идентификатора. Например, он может перенять некоторые идеи из Unicode. рекомендации организации для идентификаторов. Что бы ни случилось, это должно быть сделано совместимо, сохраняя (или, возможно, расширение) того, как регистр букв определяет видимость идентификаторы, которые остаются одной из наших любимых функций Go.

На данный момент у нас есть простое правило, которое можно расширить позже не нарушая программы, которая позволяет избежать ошибок, которые наверняка возникнут из правила, которое допускает неоднозначные идентификаторы.

Почему в Go нет функции X?

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

Если вас беспокоит, что в Go отсутствует функция X , пожалуйста, простите нас и исследуйте возможности, которые есть в Go. Вы можете обнаружить, что они интересным образом компенсируют отсутствие X .

Почему в Go нет универсальных типов?

Языковое предложение реализация формы универсальных типов была принята для включения в язык.Если все пойдет хорошо, он будет доступен в версии Go 1.18.

Go был задуман как язык для написания серверных программ, которые легко поддерживать в течение долгого времени. (Видеть это статью для получения дополнительной информации.) Дизайн был сосредоточен на таких вещах, как масштабируемость, удобочитаемость и параллелизм. Полиморфное программирование не казалось существенным для языка. целей в то время, и поэтому для простоты не учитывался.

Сейчас язык более зрелый, и есть возможность рассмотреть некоторая форма универсального программирования.Однако остаются некоторые предостережения.

Дженерики удобны, но они дорого обходятся. сложность в системе типов и времени выполнения. Мы еще не нашли дизайн, который дает ценность, пропорциональную сложности, хотя мы продолжайте думать об этом. Между тем, встроенные в Go карты и срезы, плюс возможность использовать пустой интерфейс для создания контейнеров (с явной распаковкой) означает, что во многих случаях можно написать код, который делает то, что можно было бы сделать с помощью дженериков, хотя и менее плавно.

Тема остается открытой. Взгляните на несколько предыдущих неудачных попыток разработать хорошее универсальное решение для Go, см. это предложение.

Почему в Go нет исключений?

Мы считаем, что связывание исключений с контролем структура, как и в идиоме try-catch-finally , приводит к запутанный код. Это также побуждает программистов маркировать слишком много обычных ошибок, таких как невозможность открыть файл, т.к. исключительный.

Go использует другой подход.Для простой обработки ошибок многозначный код Go return позволяет легко сообщить об ошибке, не перегружая возвращаемое значение. Канонический тип ошибки, связанный с другими функциями Go делает обработку ошибок приятной, но совсем другой от этого на других языках.

У Go также есть пара встроенных функций для сигнализации и восстановления после действительно исключительных условия. Механизм восстановления выполняется только как часть состояние функции сбрасывается после ошибки, чего достаточно справиться с катастрофой, но не требует дополнительных управляющих структур и, при правильном использовании может привести к чистому коду обработки ошибок.

Дополнительные сведения см. в статье «Отсрочка, паника и восстановление». Кроме того, сообщение в блоге Errors is values описывает один подход к чистой обработке ошибок в Go, демонстрируя, что поскольку ошибки — это просто значения, вся мощь Go может быть использована для обработки ошибок.

Почему в Go нет утверждений?

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

Мы понимаем, что это спорный момент. Есть много вещей в язык Go и библиотеки, отличающиеся от современных практик, просто потому что мы чувствуем, что иногда стоит попробовать другой подход.

Зачем строить параллелизм на идеях CSP?

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

Одна из самых успешных моделей оказания лингвистической поддержки высокого уровня для параллелизма исходит от Хоара «Общение последовательных процессов» или CSP.Оккам и Эрланг — два хорошо известных языка, происходящих от CSP. Примитивы параллелизма Go происходят из другой части генеалогического древа. чей главный вклад — мощное представление о каналах как об объектах первого класса. Опыт работы с несколькими более ранними языками показал, что модель CSP хорошо вписывается в структуру процедурного языка.

Почему горутины вместо потоков?

Горутины являются частью упрощения использования параллелизма. Идея, которая имеет существует некоторое время, заключается в мультиплексировании независимо выполняющихся функции — сопрограммы — на набор потоков.Когда сопрограмма блокирует, например, вызывая блокирующий системный вызов, среда выполнения автоматически перемещает другие сопрограммы на ту же операционную системный поток в другой исполняемый поток, чтобы они не были заблокированы. Программист ничего этого не видит, в этом и смысл. Результат, который мы называем горутинами, может быть очень дешевым: у них мало накладные расходы помимо памяти для стека, которые составляют всего несколько килобайт.

Чтобы сделать стеки небольшими, во время выполнения Go используются ограниченные стеки изменяемого размера.Недавно minted goroutine отводится несколько килобайт, чего почти всегда достаточно. Когда это не так, время выполнения увеличивает (и сжимает) память для хранения стек автоматически, что позволяет многим горутинам жить в скромной объем памяти. Накладные расходы ЦП составляют в среднем около трех дешевых инструкций на вызов функции. Практично создавать сотни тысяч горутин в одном и том же адресное пространство. Если бы горутины были просто потоками, системные ресурсы иссякают в гораздо меньшем количестве.

Почему операции карты не определены как атомарные?

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

Язык не исключает обновления атомарной карты. При необходимости такие как при размещении ненадежной программы реализация может заблокироваться доступ к карте.

Доступ к карте небезопасен только тогда, когда происходят обновления. Пока все горутины только читают — ищут элементы на карте, включая итерацию через него с использованием для диапазон цикл — и без изменения карты присваивая элементам или выполняя удаления, для них безопасно одновременно обращаться к карте без синхронизации.

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

Вы примете мою смену языка?

Люди часто предлагают улучшить язык — список рассылки содержит богатую историю таких дискуссий, но очень немногие из этих изменений был принят.

Хотя Go является проектом с открытым исходным кодом, язык и библиотеки защищены обещанием совместимости, которое предотвращает изменения, которые нарушают существующие программы, по крайней мере, на уровне исходного кода (программы, возможно, придется время от времени перекомпилировать, чтобы оставаться в актуальном состоянии).Если ваше предложение нарушает спецификацию Go 1, мы не можем даже принимать идея, независимо от ее достоинства. Будущий основной выпуск Go может быть несовместим с Go 1, но обсуждения на эту тему только начали, и одно можно сказать наверняка: в процессе будет очень мало таких несовместимостей. Кроме того, обещание совместимости побуждает нас предоставлять автоматический путь вперед, чтобы старые программы адаптировались в случае возникновения такой ситуации.

Даже если ваше предложение совместимо со спецификацией Go 1, оно может не соответствовать духу целей дизайна Go.Артикул Перейти в Google: языковой дизайн на службе разработки программного обеспечения объясняет происхождение Go и мотивацию его дизайна.

Типы

Является ли Go объектно-ориентированным языком?

И да и нет. Хотя в Go есть типы и методы, и он позволяет объектно-ориентированный стиль программирования, отсутствует иерархия типов. Концепция «интерфейса» в Go предлагает другой подход, который мы считаем, что он прост в использовании и в некотором смысле более универсален. Есть также способы встраивания типов в другие типы, чтобы предоставить что-то аналогичен, но не идентичен созданию подклассов.Более того, методы в Go более общие, чем в C++ или Java: их можно определить для любого типа данных, даже встроенных типов, таких как как простые, «неупакованные» целые числа. Они не ограничены структурами (классами).

Кроме того, отсутствие иерархии типов делает «объекты» в Go гораздо более чувствительными. легче, чем в таких языках, как C++ или Java.

Как получить динамическую отправку методов?

Единственный способ иметь динамически отправляемые методы — через интерфейс. Методы структуры или любого другого конкретного типа всегда разрешаются статически.

Почему нет наследования типов?

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

Вместо того, чтобы требовать от программиста заранее объявить, что два типы связаны, в Go тип автоматически удовлетворяет любому интерфейсу который определяет подмножество его методов. Помимо сокращения бухгалтерии, этот подход имеет реальные преимущества.Типы могут удовлетворить много интерфейсов одновременно, без сложностей традиционных множественное наследование. Интерфейсы могут быть очень легкими — интерфейс с один или даже ноль методов могут выражать полезную концепцию. Интерфейсы могут быть добавлены постфактум, если появится новая идея или для тестирования — без аннотирования исходных типов. Поскольку между типами нет явных отношений и интерфейсы, нет иерархии типов для управления или обсуждения.

Эти идеи можно использовать для создания чего-то аналогичного типобезопасные каналы Unix.Например, посмотрите, как fmt.Fprintf позволяет форматированную печать на любой выход, а не только в файл или как Пакет bufio может быть полностью отделен от файлового ввода-вывода, или как пакеты образов генерируют сжатые файлы изображений. Все эти идеи проистекают из единого интерфейса ( io.Writer ), представляющий один метод ( Напишите ). И это только царапины на поверхности. Интерфейсы Go сильно влияют на структуру программ.

Требуется некоторое время, чтобы привыкнуть к этому неявному стилю шрифта. зависимость — одна из самых продуктивных вещей в Go.

Почему

len — это функция, а не метод?

Мы обсуждали этот вопрос, но решили реализация len и др. в качестве функций на практике прошла нормально и не усложнил вопросы по интерфейсу (в смысле типа Go) основных типов.

Почему Go не поддерживает перегрузку методов и операторов?

Отправка метода упрощается, если ему также не нужно выполнять сопоставление типов.Опыт работы с другими языками подсказал нам, что наличие множества иногда были полезны методы с одинаковыми именами, но разными сигнатурами но на практике это также может быть запутанным и хрупким. Соответствие только по имени и требование последовательности в типах было основным упрощающим решением в системе типов Go.

Что касается перегрузки операторов, это кажется скорее удобством, чем абсолютным требование. Опять же, без него все проще.

Почему в Go нет объявлений «реализует»?

Тип Go удовлетворяет интерфейсу, реализуя методы этого интерфейса. больше ничего.Это свойство позволяет определять и использовать интерфейсы без необходимо изменить существующий код. Он дает возможность своего рода структурная типизация, которая способствует разделению задач и улучшает повторное использование кода, а также упрощает строить на шаблонах, которые появляются по мере разработки кода. Семантика интерфейсов — одна из главных причин шустрости Go, ощущение легкости.

См. вопрос о наследовании типов для более подробной информации.

Как я могу гарантировать, что мой тип удовлетворяет интерфейсу?

Вы можете попросить компилятор проверить, что тип T реализует интерфейса I путем попытки назначения с использованием нулевого значения для T или указатель на T , в зависимости от ситуации:

структура типа T{}
var _ I = T{} // Проверяем, что T реализует I.var _ I = (*T)(nil) // Проверяем, что *T реализует I.
 

Если T (или *T соответственно) не реализует I ошибка будет обнаружена во время компиляции.

Если вы хотите, чтобы пользователи интерфейса явно заявляли, что они реализуют это, вы можете добавить метод с описательным именем в набор методов интерфейса. Например:

тип Фуер-интерфейс {
    Фу()
    РеализуетFooer()
}
 

Затем тип должен реализовать метод ImplementsFooer , чтобы быть Fooer , четко задокументировав этот факт и объявив об этом в выход документа.

тип Барная структура {}
func (b Bar) ImplementsFooer() {}
func (b Bar) Foo() {}
 

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

Почему тип T не удовлетворяет интерфейсу Equal?

Рассмотрим этот простой интерфейс для представления объекта, который может сравнивать сам с другим значением:

интерфейс типа Эквалайзер {
    Равно (Equaler) bool
}
 

и этот тип, T :

тип T целое число
func (t T) Equal(u T) bool { return t == u } // не удовлетворяет Equaler
 

В отличие от аналогичной ситуации в некоторых системах полиморфного типа, T не реализует Equaler .Тип аргумента T.Equal равен T , не буквально требуемый тип Equaler .

В Go система типов не продвигает аргумент Равно ; это обязанность программиста, т.к. иллюстрируется типом T2 , который реализует Эквалайзер :

тип T2 внутр.
func (t T2) Equal(u Equaler) bool { return t == u.(T2) } // удовлетворяет Equaler
 

Однако даже это не похоже на другие системы типов, потому что в Go любой тип, который удовлетворяет Equaler может быть передан как аргумент для T2.Равно , и во время выполнения мы должны проверьте, что аргумент имеет тип T2 . Некоторые языки обеспечивают такую ​​гарантию во время компиляции.

Связанный пример идет другим путем:

тип открывающего интерфейса {
   Открыть() Читатель
}

func (t T3) Open() *os.File
 

В Go T3 не удовлетворяет Opener , хотя может и на другом языке.

Хотя это правда, что система типов Go делает меньше для программиста в таких случаях отсутствие подтипов делает правила о Удовлетворенность интерфейсом очень легко констатировать: имена функций а подписи точно такие же у интерфейса? Правило Go также легко реализовать эффективно.Мы считаем, что эти преимущества компенсируют отсутствие автоматическое продвижение типа. Должен ли Go когда-нибудь принять какую-либо форму полиморфного печатая, мы ожидаем, что будет способ выразить идею этих примеры, а также их статическая проверка.

Можно ли преобразовать []T в []interface{}?

Не напрямую. Это запрещено спецификацией языка, потому что два типа не имеют одинакового представления в памяти. Необходимо копировать элементы по отдельности в место назначения кусочек.В этом примере фрагмент int преобразуется в фрагмент Интерфейс {} :

т := []целое{1, 2, 3, 4}
s := make([]interface{}, len(t))
для i, v := диапазон t {
    с [я] = v
}
 

Можно ли преобразовать []T1 в []T2, если T1 и T2 имеют один и тот же базовый тип?

Эта последняя строка этого примера кода не компилируется.
тип T1 целое
тип T2 внутр.
вар t1 T1
var x = T2(t1) // ОК
переменная st1 []T1
var sx = ([]T2)(st1) // НЕ ОК
 

В Go типы тесно связаны с методами, в том смысле, что каждый именованный тип имеет (возможно, пустой) набор методов.Общее правило состоит в том, что вы можете изменить имя типа преобразован (и, следовательно, возможно, изменить его набор методов), но вы не можете изменить имя (и набор методов) элементов составного типа. Go требует, чтобы вы четко указывали на преобразования типов.

Почему значение моей нулевой ошибки не равно нулю?

Под крышками интерфейсы реализованы в виде двух элементов типа T и значение V . V — конкретное значение, такое как int , структура или указатель, а не сам интерфейс, и имеет тип Т .Например, если мы сохраним значение 3 int в интерфейсе, результирующее значение интерфейса имеет, схематично, ( T=int , V=3 ). Значение V также известно как значение интерфейса. динамическое значение , поскольку данная переменная интерфейса может иметь разные значения V (и соответствующие типы T ) во время выполнения программы.

Значение интерфейса равно или , только если V и T оба не установлены ( T=nil , V не установлены), В частности, интерфейс nil всегда будет содержать тип nil .Если мы сохраним указатель nil типа *int внутри значение интерфейса, внутренний тип будет *int независимо от значения указателя: ( T=*int , V=nil ). Следовательно, такое значение интерфейса будет отличным от nil . , даже если значение указателя V внутри равно nil .

Эта ситуация может сбивать с толку и возникает, когда значение nil хранится внутри значения интерфейса, такого как ошибка return:

func возвращает ошибку() {
var p *MyError = ноль
если плохо () {
р = Плохая ошибка
}
return p // Всегда будет возвращать ненулевую ошибку.}
 

Если все пойдет хорошо, функция вернет nil p , поэтому возвращаемое значение представляет собой интерфейс ошибки . удержание значения ( T=*MyError , V=nil ). Это означает, что если вызывающая сторона сравнивает возвращенную ошибку с nil , это всегда будет выглядеть так, как будто произошла ошибка, даже если ничего плохого не произошло. Чтобы вернуть правильную ошибку nil вызывающему абоненту, функция должна возвращать явный nil :

func возвращает ошибку() {
если плохо () {
вернуть ErrBad
}
вернуть ноль
}
 

Это хорошая идея для функций которые всегда возвращают ошибки, чтобы использовать тип ошибки в их подпись (как мы сделали выше), а не конкретный тип, такой как *MyError , чтобы гарантировать, что ошибка создан правильно.Например, ос.открыт возвращает ошибку , хотя если не nil , это всегда конкретный тип *os.PathError .

Ситуации, подобные описанным здесь, могут возникать всякий раз, когда используются интерфейсы. Просто имейте в виду, что если какое-либо конкретное значение был сохранен в интерфейсе, интерфейс не будет nil . Для получения дополнительной информации см. Законы отражения.

Почему нет немаркированных объединений, как в C?

Объединения без тегов нарушат безопасность памяти Go. гарантии.

Почему в Go нет вариантов типов?

Вариантные типы, также известные как алгебраические типы, позволяют указать что значение может принимать один из множества других типов, но только те типы. Обычный пример в системном программировании указывает, что error — это, скажем, сетевая ошибка, ошибка безопасности или приложение ошибка и позволить вызывающему абоненту определить источник проблемы путем изучения типа ошибки. Другой пример — синтаксическое дерево. в котором каждый узел может быть разного типа: объявление, оператор, задание и так далее.

Мы рассматривали возможность добавления типов вариантов в Go, но после обсуждения решил оставить их, потому что они перекрывают друг друга сбивающими с толку способами с интерфейсами. Что произойдет, если элементы вариантного типа были сами интерфейсы?

Кроме того, некоторые из вариантов адресов уже включены в язык. Пример ошибки легко выразить с помощью интерфейса значение для удержания ошибки и переключатель типа для различения случаев. То Пример с синтаксическим деревом также выполним, хотя и не так элегантно.

Почему в Go нет ковариантных типов результатов?

Ковариантные типы результатов означают, что такой интерфейс, как

тип Копируемый интерфейс {
Интерфейс копирования(){}
}
 

был бы удовлетворен методом

func (значение v) Копировать() значение
 

, потому что Значение реализует пустой интерфейс. В Go типы методов должны точно совпадать, поэтому Value не соответствует реализовать Копируемый . Go разделяет представление о том, что такое type делает — его методы — из реализации типа.Если два метода возвращают разные типы, они не делают одно и то же. Программисты, которым нужны ковариантные типы результатов, часто пытаются выражать иерархию типов через интерфейсы. В Go более естественно иметь четкое разделение между интерфейсом и реализация.

Значения

Почему Go не предоставляет неявные числовые преобразования?

Удобство автоматического преобразования между числовыми типами в C перевешивает путаница, которую это вызывает. Когда выражение беззнаковое? Насколько велико значение? Он переполняется? Является ли результат портативным, независимым машины, на которой он выполняется? Это также усложняет компилятор; «обычные арифметические преобразования» непросты в реализации и несовместимы между архитектурами.Из соображений переносимости мы решили сделать все понятным и понятным. за счет некоторых явных преобразований в коде. Определение констант в Go — значения произвольной точности бесплатно аннотаций подписи и размера - значительно улучшает ситуацию, хотя.

Связанная с этим деталь заключается в том, что, в отличие от C, int и int64 являются разными типами, даже если int является 64-битным типом. между тип общий; если вас волнует, сколько битов содержит целое число, Go призывает вас быть откровенным.

Как работают константы в Go?

Хотя Go строго относится к преобразованиям между переменными разных числовые типы, константы в языке гораздо более гибкие. Буквенные константы, такие как 23 , 3.14159 и мат.Пи занимают своего рода идеальное числовое пространство с произвольной точностью и нет переполнения или недолива. Например, значение math.Pi указано до 63 разрядов. в исходном коде, а константные выражения, включающие значение, сохраняют точность выше, чем у float64 .Только когда константа или постоянное выражение присваивается переменная — ячейка памяти в программе — делает это становится "компьютерным" номером с обычные свойства с плавающей запятой и точность.

Также, поскольку это просто числа, а не типизированные значения, константы в Go могут быть используется более свободно, чем переменные, тем самым смягчая некоторую неловкость вокруг строгих правил преобразования. Можно написать такие выражения, как

sqrt2 := math.Sqrt(2)
 

без нареканий со стороны составителя, потому что идеальное число 2 можно безопасно и точно преобразовать на float64 для вызова math. кв.

Сообщение в блоге под названием «Константы» исследует эту тему более подробно.

Почему встроены карты?

По той же причине, что и строки: они такие мощные и важные данные. структура, которая обеспечивает одну отличную реализацию с синтаксической поддержкой делает программирование более приятным. Мы считаем, что реализация карт в Go достаточно прочен, чтобы служить для подавляющего большинства применений. Если конкретное приложение может извлечь выгоду из пользовательской реализации, возможно, написать один, но это будет не так удобно синтаксически; это кажется разумным компромиссом.

Почему карты не позволяют использовать срезы в качестве ключей?

Для поиска на карте требуется оператор равенства, который не реализован в срезах. Они не реализуют равенство, потому что равенство не определено для таких типов; есть несколько соображений, связанных с поверхностным и глубоким сравнением, указателем и другим. сравнение значений, как работать с рекурсивными типами и так далее. Мы можем вернуться к этому вопросу и реализовать равенство для срезов. не сделает недействительными какие-либо существующие программы, но без четкого представления о том, что должно означать равенство ломтиков, проще было пока его не указывать.

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

Почему карты, срезы и каналы являются ссылками, а массивы — значениями?

На эту тему много истории. На раннем этапе карты и каналы были синтаксическими указателями, и было невозможно объявить или использовать экземпляр без указателя. Кроме того, мы боролись с тем, как должны работать массивы.В конце концов мы решили, что строгое разделение указателей и значения усложняли использование языка. Изменение этих типы, которые действуют как ссылки на связанные, разрешенные общие структуры данных эти проблемы. Это изменение добавило досадной сложности язык, но оказал большое влияние на удобство использования: Go стал более продуктивный, удобный язык, когда он был введен.

Написание кода

Как документируются библиотеки?

Существует программа godoc , написанная на Go, которая извлекает упаковать документацию из исходного кода и использовать ее в качестве веб-сайта. страница со ссылками на объявления, файлы и так далее.Экземпляр работает в golang.org/pkg/. На самом деле, godoc реализует полный сайт по адресу golang.org/.

Экземпляр godoc может быть настроен для предоставления расширенных, интерактивный статический анализ символов в отображаемых программах; детали перечислены здесь.

Для доступа к документации из командной строки инструмент go имеет документ подкоманда, предоставляющая текстовый интерфейс для той же информации.

Есть ли руководство по стилю программирования на Go?

Явного руководства по стилю нет, хотя, конечно, есть. узнаваемый «стиль го».

Go установил соглашения, чтобы направлять решения вокруг именование, расположение и организация файлов. Документ «Эффективный переход» содержит некоторые советы по этим темам. Точнее говоря, программа gofmt — это симпатичный принтер. целью которого является соблюдение правил компоновки; он заменяет обычный сборник того, что можно и чего нельзя делать, который допускает интерпретацию. Весь код Go в репозитории и подавляющее большинство в мир с открытым исходным кодом, прошел через gofmt .

Документ под названием Комментарии к обзору кода Go представляет собой сборник очень коротких эссе о деталях идиомы Го, которые часто упущено программистами.Это удобный справочник для людей, которые делают обзоры кода для проектов Go.

Как отправлять исправления в библиотеки Go?

Исходники библиотеки находятся в каталоге src репозитория. Если вы хотите внести существенные изменения, пожалуйста, обсудите их в списке рассылки, прежде чем приступить к работе.

См. документ Участие в проекте Go для получения дополнительной информации о том, как действовать.

Почему «go get» использует HTTPS при клонировании репозитория?

Компании часто разрешают исходящий трафик только на стандартных TCP-портах 80 (HTTP) и 443 (HTTPS), блокируя исходящий трафик на другие порты, включая порт TCP 9418 (git) и TCP-порт 22 (SSH).При использовании HTTPS вместо HTTP git применяет проверку сертификата по умолчанию, обеспечивая защиту от атак типа «человек посередине», подслушивания и взлома. Поэтому команда go get использует HTTPS для обеспечения безопасности.

Git можно настроить для аутентификации через HTTPS или для использования SSH вместо HTTPS. Для аутентификации по HTTPS вы можете добавить строку в файл $HOME/.netrc , к которому обращается git:

машина github.com логин  USERNAME  пароль  APIKEY 
 

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

Git также можно настроить на использование SSH вместо HTTPS для URL-адресов, соответствующих заданному префиксу. Например, чтобы использовать SSH для всего доступа к GitHub, добавьте эти строки в свой ~/.gitconfig :

[ссылка "ssh://[email protected]/"]
вместо = https://github.com/
 

Как мне управлять версиями пакетов с помощью «go get»?

Набор инструментов Go имеет встроенную систему для управления версионными наборами связанных пакетов, известных как модулей .Модули были представлены в Go 1.11 и готовы к использованию с версии 1.14.

Чтобы создать проект с использованием модулей, запустите go mod init . Эта команда создает файл go.mod , в котором отслеживаются версии зависимостей.

go mod init пример/проект
 

Чтобы добавить, обновить или понизить зависимость, запустите и получите :

зайди на golang.org/x/[email protected]
 

См. Учебное пособие: создание модуля для получения дополнительной информации о начале работы.

Руководства по управлению зависимостями с модулями см. в разделе Разработка модулей.

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

Если старый пакет и новый пакет имеют один и тот же путь импорта,
новый пакет должен быть обратно совместим со старым пакетом.

Руководство по совместимости с Go 1 является хорошей ссылкой здесь: не удаляйте экспортированные имена, поощряйте составные литералы с тегами и т. д.Если требуется другая функциональность, добавьте новое имя вместо изменения старого.

Модули кодифицируют это с семантическим управлением версиями и семантическим управлением версиями импорта. Если требуется перерыв в совместимости, выпустите модуль в новой основной версии. Для модулей основной версии 2 и выше требуется суффикс основной версии как часть их пути (например, /v2 ). Это сохраняет правило совместимости импорта: пакеты в разных основных версиях модуля имеют разные пути.

Указатели и размещение

Когда параметры функции передаются по значению?

Как и во всех языках семейства C, в Go все передается по значению.То есть функция всегда получает копию передаваемая вещь, как если бы существовал оператор присваивания, присваивающий значение параметра. Например, передача значения int в функцию делает копию int и передает указатель value делает копию указателя, но не данных, на которые он указывает. (см. позже раздел для обсуждения того, как это влияет на приемники методов.)

Значения карты и среза ведут себя как указатели: это дескрипторы, которые содержат указатели на базовую карту или данные среза.Копирование карты или значение slice не копирует данные, на которые оно указывает. Копирование значения интерфейса делает копию вещи, хранящейся в значении интерфейса. Если интерфейс value содержит структуру, копирование значения интерфейса делает копию структура. Если значение интерфейса содержит указатель, копирование значения интерфейса делает копию указателя, но опять же не данных, на которые он указывает.

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

Когда следует использовать указатель на интерфейс?

Больше никогда. Указатели на значения интерфейса возникают только в редких, сложных ситуациях, связанных с маскировка типа значения интерфейса для отложенной оценки.

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

Рассмотрим объявление переменной,

var w io.Writer
 

Функция печати fmt.Fprintf принимает в качестве первого аргумента значение, удовлетворяющее io.Writer — то, что реализует канонический метод Write . Таким образом, мы можем написать

fmt.Fprintf(w, "привет, мир\n")
 

Однако если мы передадим адрес w , программа не скомпилируется.

fmt.Fprintf(&w, "hello, world\n") // Ошибка времени компиляции.

Единственным исключением является то, что любое значение, даже указатель на интерфейс, может быть присвоено переменная пустого типа интерфейса ( interface{} ). Тем не менее, почти наверняка будет ошибкой, если значение является указателем на интерфейс; результат может сбить с толку.

Должен ли я определять методы для значений или указателей?

func (s *MyStruct) pointerMethod() { } // метод для указателя
func (s MyStruct) valueMethod() { } // метод для значения
 

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

Во-первых, и это наиболее важно, нужно ли модифицировать метод получатель? Если это так, получатель должен быть указателем. (Срезы и карты действуют как ссылки, поэтому их история немного более тонкий, но, например, для изменения длины среза в методе получатель должен быть указателем.) В приведенных выше примерах, если pointerMethod изменяет поля s , вызывающая сторона увидит эти изменения, но valueMethod вызывается с копией аргумента вызывающей стороны (это определение передачи значения), поэтому вносимые им изменения будут невидимы для вызывающей стороны.

Кстати, в Java получателями методов всегда являются указатели, хотя их указательная природа несколько замаскирована (и есть предложение добавить в язык приемники значений). Необычными в Go являются приемники значений.

Во-вторых, рассмотрение эффективности. Если приемник большой, например, большую структуру , будет намного дешевле использовать указательный приемник.

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

Для таких типов, как базовые типы, срезы и небольшие структуры , приемник значения очень дешев, поэтому, если только семантика метода требует указателя, приемник значения эффективен и понятен.

В чем разница между newи make?

Вкратце: new выделяет память, а make инициализирует типы срезов, карт и каналов.

См. соответствующий раздел Эффективный Go для получения более подробной информации.

Каков размер

int на 64-битной машине?

Размеры int и uint зависят от реализации. но такие же, как друг друга на данной платформе. Для переносимости код, основанный на определенном size значения должен использовать тип с явно заданным размером, например int64 .На 32-битных машинах компиляторы по умолчанию используют 32-битные целые числа, в то время как на 64-битных машинах целые числа имеют 64 бита. (Исторически так было не всегда.)

С другой стороны, скаляры с плавающей запятой и комплексные типы всегда имеют размеры (нет float или сложных базовых типов), потому что программисты должны знать о точности при использовании чисел с плавающей запятой. Тип по умолчанию, используемый для (нетипизированной) константы с плавающей запятой, равен float64 . Таким образом, foo := 3.0 объявляет переменную foo типа float64 . Для переменной float32 , инициализированной (нетипизированной) константой, тип переменной должны быть указаны явно в объявлении переменной:

переменная foo float32 = 3.0
 

В качестве альтернативы константе должен быть присвоен тип с преобразованием, как в foo := float32(3.0) .

Как узнать, выделена ли переменная в куче или в стеке?

С точки зрения правильности вам не нужно знать.Каждая переменная в Go существует до тех пор, пока на нее есть ссылки. Место хранения, выбранное реализацией, не имеет отношения к семантика языка.

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

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

Почему мой процесс Go использует так много виртуальной памяти?

Распределитель памяти Go резервирует большую область виртуальной памяти в качестве арены. для отчислений.Эта виртуальная память является локальной для конкретного процесса Go; в резервирование не лишает другие процессы памяти.

Чтобы найти объем фактической памяти, выделенной процессу Go, используйте функцию Unix. top команду и обратитесь к RES (Linux) или RSIZE (macOS) столбцов.

Параллелизм

Какие операции являются атомарными? А как насчет мьютексов?

Описание атомарности операций в Go можно найти в документ Go Memory Model.

Синхронизация низкого уровня и атомарные примитивы доступны в синхронизировать и синхронизация/атомарность пакеты. Эти пакеты хороши для простых задач, таких как увеличение подсчеты ссылок или гарантирующие мелкомасштабное взаимное исключение.

Для операций более высокого уровня, таких как координация между параллельных серверов, методы более высокого уровня могут привести к более красивым программам, и Go поддерживает этот подход через его горутины и каналы. Например, вы можете структурировать свою программу так, чтобы только один goroutine всегда отвечает за определенный фрагмент данных.Этот подход резюмируется в оригинале Иди пословица,

Не общайтесь, делясь памятью. Вместо этого делитесь памятью, общаясь.

См. прогулку по коду Share Memory By Communicating И его соответствующую статью для подробного обсуждения этой концепции.

Большие параллельные программы, скорее всего, будут заимствованы из обоих этих наборов инструментов.

Почему моя программа не работает быстрее при большем количестве процессоров?

Будет ли программа работать быстрее с большим количеством процессоров, зависит от проблемы. это решает.Язык Go предоставляет примитивы параллелизма, такие как горутины. и каналы, но параллелизм позволяет только параллелизм когда основная проблема внутренне параллельна. Проблемы, которые по своей сути являются последовательными, не могут быть ускорены добавлением больше процессоров, а те, которые можно разбить на части, которые можно параллельное выполнение может быть ускорено, иногда значительно.

Иногда добавление дополнительных процессоров может замедлить работу программы. С практической точки зрения, программы, которые тратят больше времени синхронизация или общение, чем выполнение полезных вычислений может наблюдаться снижение производительности при использовании несколько потоков ОС.Это связано с тем, что передача данных между потоками включает в себя переключение контексты, что имеет значительную стоимость, и эта стоимость может увеличиться с большим количеством процессоров. Например, пример простого решета из спецификации Go не имеет значительного параллелизма, хотя запускает множество горутины; увеличение количества потоков (ЦП) с большей вероятностью замедлит его, чем чтобы ускорить его.

Более подробно по этой теме см. доклад под названием параллелизм это не параллелизм.

Как я могу контролировать количество процессоров?

Количество ЦП, доступных одновременно для выполнения горутин, равно управляется переменной среды оболочки GOMAXPROCS , значением по умолчанию является количество доступных ядер ЦП.Поэтому программы с возможностью параллельного выполнения должны достичь этого по умолчанию на многопроцессорной машине. Чтобы изменить количество используемых параллельных процессоров, установите переменную среды или используйте одноименную переменную функция пакета среды выполнения для настройки поддержка во время выполнения для использования другого количества потоков. Установка его в 1 исключает возможность истинного параллелизма, заставляя независимые горутины выполняться по очереди.

Среда выполнения может выделить больше потоков, чем указано значение GOMAXPROCS для обслуживания нескольких непогашенных Запросы ввода-вывода. GOMAXPROCS влияет только на количество горутин может выполняться сразу; сколь угодно больше может быть заблокировано в системных вызовах.

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

Почему нет идентификатора горутины?

Горутины не имеют имен; они просто анонимные работники.Они не предоставляют программисту уникальный идентификатор, имя или структуру данных. Некоторых это удивляет, ожидая, что станет . оператор для возврата некоторого элемента, который можно использовать для доступа и управления горутина позже.

Основная причина, по которой горутины анонимны, заключается в том, что полный язык Go доступен при программировании параллельного кода. Напротив, шаблоны использования, которые развиваются, когда потоки и горутины named может ограничивать возможности библиотеки, использующей их.

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

Кроме того, опыт работы с библиотеками, например, для графических систем которые требуют, чтобы вся обработка происходила в «основном потоке» показал, насколько неуклюжим и ограничивающим может быть подход, когда развертывается на параллельном языке.Само существование специального потока или горутин заставляет программист искажает программу во избежание сбоев и другие проблемы, вызванные непреднамеренной эксплуатацией на неправильной ветке.

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

Функции и методы

Почему T и *T имеют разные наборы методов?

Как сказано в спецификации Go, набор методов типа T состоит из всех методов с ресивером типа T , в то время как соответствующий указатель тип *T состоит из всех методов с приемником *T или Т .Это означает, что набор методов *T включает в себя T , но не наоборот.

Это различие возникает потому, что если значение интерфейса содержит указатель *T , вызов метода может получить значение путем разыменования указателя, но если значение интерфейса содержит значение T , нет безопасного способа для вызова метода получить указатель. (Это позволит методу изменять содержимое значение внутри интерфейса, что не разрешено спецификацию языка.)

Даже в тех случаях, когда компилятор может взять адрес значения передать методу, если метод изменяет значение изменения будет потерян в вызывающем абоненте. Например, если метод Write байт. Буфер использовал приемник значения, а не указатель, этот код:

var buf bytes.Buffer
io.Copy(buf, os.Stdin)
 

скопирует стандартный ввод в копию из buf , не в сам buf .Это почти никогда не является желаемым поведением.

Что происходит с замыканиями, работающими как горутины?

Некоторая путаница может возникнуть при использовании замыканий с параллелизмом. Рассмотрим следующую программу:

основная функция () {
    сделано := сделать (чан буль)

    значения: = [] строка {"a", "b", "c"}
    для _, v := значения диапазона {
        иди функ () {
            fmt.Println(v)
            сделано <- верно
        }()
    }

    // ждем завершения всех горутин перед выходом
    для _ = диапазон значений {
        <-сделано
    }
}
 

Можно было бы ошибочно ожидать увидеть a, b, c в качестве вывода.Вместо этого вы, вероятно, увидите c, c, c . Это потому что каждая итерация цикла использует один и тот же экземпляр переменной v , поэтому каждое закрытие разделяет эту единственную переменную. Когда закрытие выполняется, оно печатает значение v во время выполнения fmt.Println , но v могли быть изменены с момента запуска горутины. Чтобы обнаружить эту и другие проблемы до их возникновения, запустите иди к ветеринару .

Чтобы привязать текущее значение v к каждому замыканию при его запуске, один должен изменить внутренний цикл, чтобы создать новую переменную на каждой итерации.Один из способов — передать переменную в качестве аргумента замыканию:

    для _, v := значения диапазона {
        go func(  u  строка) {
            fmt.Println(  и  )
            сделано <- верно
        }(  против  )
    }
 

В этом примере значение v передается в качестве аргумента функции анонимная функция. Затем это значение доступно внутри функции как переменная u .

Еще проще просто создать новую переменную, используя стиль объявления, который может кажется странным, но отлично работает в Go:

    для _, v := значения диапазона {
          v := v  // создать новый 'v'.иди функ () {
            fmt.Println( против )
            сделано <- верно
        }()
    }
 

Такое поведение языка, не определяющее новую переменную для каждая итерация, возможно, была ошибкой в ​​ретроспективе. Это может быть решено в более поздней версии, но для совместимости не может измениться в Go версии 1.

Поток управления

Почему в Go нет оператора

?:?

В Go нет троичной операции тестирования. Вы можете использовать следующее для достижения того же результат:

если выражение {
    n = истинное значение
} еще {
    n = ложное значение
}
 

Причина отсутствия ?: в Go заключается в том, что разработчики языка видел, как эта операция слишком часто использовалась для создания невероятно сложных выражений.Форма if-else , хотя и длиннее, бесспорно понятнее. Языку требуется только одна конструкция условного потока управления.

Пакеты и тестирование

Как создать многофайловый пакет?

Поместите все исходные файлы пакета в отдельный каталог. Исходные файлы могут ссылаться на элементы из разных файлов по желанию; Там есть нет необходимости в предварительных объявлениях или заголовочном файле.

Помимо разделения на несколько файлов, пакет будет компилироваться и тестироваться. точно так же, как однофайловый пакет.

Как написать модульный тест?

Создайте новый файл, оканчивающийся на _test.go в том же каталоге как ваши источники пакетов. Внутри этого файла импортировать "тестирование" и напишите функции вида

функция TestFoo(t *testing.T) {
    ...
}
 

Запустите go test в этом каталоге. Этот скрипт находит функции Test , создает тестовый двоичный файл и запускает его.

См. документ How to Write Go Code, пакет для тестирования и подкоманду go test для более подробной информации.

Где моя любимая вспомогательная функция для тестирования?

Стандартный пакет Go для тестирования упрощает написание модульных тестов, но ему не хватает функции, предоставляемые в средах тестирования других языков, такие как функции утверждения. В предыдущем разделе этого документа объяснялось, почему Go не имеет утверждений и те же аргументы применимы к использованию assert в тестах. Правильная обработка ошибок означает, что другие тесты могут запускаться после того, как один не пройден, поэтому что человек, отлаживающий сбой, получает полную картину того, что неправильный.Для теста полезнее сообщить, что isPrime дает неправильный ответ для 2, 3, 5 и 7 (или для 2, 4, 8 и 16), чем сообщать, что isPrime дает неправильный ответ для 2 и, следовательно, больше тестов не проводилось. Программист, который запускает сбой теста, возможно, он не знаком с кодом, который дает сбой. Время, затраченное на написание хорошего сообщения об ошибке, теперь окупается позже, когда тестовые перерывы.

Связанный с этим момент заключается в том, что фреймворки для тестирования имеют тенденцию превращаться в мини-языки. свои собственные, с условными операторами, элементами управления и механизмами печати, но в Go уже есть все эти возможности; зачем их воссоздавать? Мы предпочитаем писать тесты на Go; на один язык меньше, и Подход делает тесты простыми и понятными.

Если количество дополнительного кода, необходимого для написания хорошие ошибки кажутся повторяющимися и подавляющими, тест может работать лучше, если управляемый таблицей, итерация по списку определенных входов и выходов в структуре данных (в Go отличная поддержка литералов структур данных). Работа по написанию хорошего теста и хороших сообщений об ошибках будет амортизироваться в течение многих лет. тестовые случаи. Стандартная библиотека Go полна наглядных примеров, таких как тесты форматирования для пакета fmt .

Почему

X отсутствует в стандартной библиотеке?

Стандартная библиотека предназначена для поддержки среды выполнения, подключения к операционной системы и обеспечивают ключевую функциональность, которую многие Go требуются программы, такие как форматированный ввод-вывод и работа в сети. Он также содержит элементы, важные для веб-программирования, в том числе криптография и поддержка таких стандартов, как HTTP, JSON и XML.

Нет четкого критерия, определяющего, что включено, потому что для долгое время это была единственная библиотека Go для .Однако есть критерии, которые определяют, что добавляется сегодня.

Новые дополнения к стандартной библиотеке редки, и планка для включение высокое. Код, включенный в стандартную библиотеку, требует значительных текущих затрат на обслуживание. (часто несут те, кто не является первоначальным автором), подлежит обещанию совместимости Go 1 (блокировка исправлений любых недостатков в API), и подлежит Go график выпуска, предотвращение быстрого доступа пользователей к исправлениям ошибок.

Большая часть нового кода должна находиться за пределами стандартной библиотеки и быть доступной. через инструмент go иди и получи команду .У такого кода могут быть свои сопровождающие, цикл релизов, и гарантии совместимости. Пользователи могут найти пакеты и прочитать их документацию на godoc.org.

Хотя в стандартной библиотеке есть части, которые на самом деле не принадлежат, например log/syslog , мы продолжаем поддерживать все в библиотека из-за обещания совместимости с Go 1. Но мы рекомендуем размещать большую часть нового кода в другом месте.

Реализация

Какая технология компилятора используется для создания компиляторов?

Существует несколько компиляторов для Go и ряд других. в разработке для различных платформ.

Компилятор по умолчанию, gc , включен в Распространение Go в рамках поддержки go команда. Gc изначально был написан на C из-за сложности начальной загрузки — вам понадобится компилятор Go, чтобы настроить среду Go. Но дело продвинулось вперед, и с момента выпуска Go 1.5 компилятор был программа Go. Компилятор был конвертирован с C на Go с помощью средств автоматического перевода, т.к. описанный в этом конструкторском документе и говорить.Таким образом, компилятор теперь является «самостоятельным», что означает, что нам нужно было столкнуться с проблема с загрузкой. Решение состоит в том, чтобы уже иметь работающую установку Go, так же, как это обычно бывает при работающей установке C. История о том, как поднять новую среду Go из исходников описано здесь и здесь.

Gc написан на Go с парсером рекурсивного спуска. и использует собственный загрузчик, также написанный на Go, но на основе загрузчика Plan 9 для генерации двоичных файлов ELF/Mach-O/PE.

В начале проекта мы рассматривали возможность использования LLVM для gc , но решил, что он слишком большой и медленный для удовлетворения наши цели производительности. В ретроспективе важнее то, что начиная с LLVM это сделало бы сложнее ввести некоторые из ABI и связанные с ними изменения, такие как управление стеком, которое требуется Go, но не является частью стандарта Настройка С. Новая реализация LLVM однако сейчас начинает собираться.

Компилятор Gccgo — это внешний интерфейс, написанный на C++. с парсером рекурсивного спуска, связанным с стандартный сервер GCC.

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

Хотя gc их не использует (пока?), родной лексер и парсер доступен в пакете go а также есть нативная проверка типов.

Как реализована поддержка во время выполнения?

Опять же, из-за проблем с начальной загрузкой код времени выполнения изначально был написан в основном на C (с немного ассемблера), но с тех пор он был переведен на Go (за исключением некоторых битов ассемблера). Gccgo для поддержки времени выполнения использует glibc . Компилятор gccgo реализует горутины, используя метод, называемый сегментированными стеками, поддерживается недавними модификациями линкера золота. Gollvm аналогично построен на соответствующем LLVM-инфраструктура.

Почему моя тривиальная программа такая большая?

Линкер в наборе инструментов gc по умолчанию создает статически связанные двоичные файлы. Таким образом, все бинарные файлы Go включают в себя Go время выполнения вместе с информацией о типе времени выполнения, необходимой для поддержки динамического проверки типов, отражение и даже трассировка стека во время паники.

Простая программа "hello, world" на языке C, скомпилированная и статически скомпонованная с использованием gcc в Linux составляет около 750 КБ, включая реализацию печать .Эквивалентная программа Go, использующая fmt.Printf весит пару мегабайт, но в том числе более мощная поддержка во время выполнения, а также информация о типах и отладке.

Программа Go, скомпилированная с помощью gc , может быть связана с флаг -ldflags=-w для отключения генерации DWARF, удаление отладочной информации из бинарного файла, но без другие потери функциональности. Это может существенно уменьшить размер двоичного файла.

Могу ли я остановить эти жалобы на мою неиспользуемую переменную/импорт?

Наличие неиспользуемой переменной может указывать на ошибку, в то время как неиспользуемый импорт только замедляет компиляцию, эффект, который может стать существенным по мере накопления программы кода и программистов с течением времени.По этим причинам Go отказывается компилировать программы с неиспользуемыми переменные или импорт, обмен краткосрочного удобства на долгосрочную скорость построения и ясность программы.

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

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

Есть две причины отсутствия предупреждений. Во-первых, если это стоит жалобы, это стоит исправить в коде. (А если нет стоит исправить, не стоит упоминать.) Во-вторых, наличие компилятора генерировать предупреждения побуждает реализацию предупреждать о слабых случаи, которые могут сделать компиляцию зашумленной, маскируя реальные ошибки, которые следует исправить .

Однако исправить ситуацию несложно. Используйте пустой идентификатор чтобы неиспользуемые вещи сохранялись во время разработки.

импортировать "неиспользованный"

// Это объявление помечает импорт как используемый, ссылаясь на
// элемент из пакета.
var _ = unused.Item // TODO: Удалить перед фиксацией!

основная функция () {
    отладочные данные: = отладка.Профиль()
    _ = debugData // Используется только во время отладки.
    ....
}
 

В настоящее время большинство программистов Go используют инструмент, гоимпорт, который автоматически перезаписывает исходный файл Go, чтобы иметь правильный импорт, устранение проблемы неиспользованного импорта на практике. Эта программа легко подключается к большинству редакторов для автоматического запуска при записи исходного файла Go.

Почему мое программное обеспечение для сканирования на вирусы считает, что мой дистрибутив Go или скомпилированный двоичный файл заражены?

Это обычное явление, особенно на компьютерах с Windows, и почти всегда ложное срабатывание. Коммерческие программы сканирования на вирусы часто путают со структурой двоичных файлов Go, которые они встречаются не так часто, как скомпилированные из других языков.

Если вы только что установили дистрибутив Go и система сообщает, что он заражен, это, безусловно, ошибка.Чтобы быть действительно тщательным, вы можете проверить загрузку, сравнив контрольную сумму с контрольной суммой на страница загрузок.

В любом случае, если вы считаете, что отчет ошибочен, сообщите об ошибке поставщику антивирусного сканера. Возможно, со временем сканеры вирусов научатся понимать программы Go.

Производительность

Почему Go плохо работает в тесте X?

Одна из целей разработки Go — приблизиться к производительности C для сопоставимых программ, но на некоторых бенчмарках показывает себя довольно плохо, в том числе на нескольких в голанге.org/x/exp/shootout. Самые медленные зависят от библиотек, для которых версии сопоставимы по производительности недоступны в Go. Например, pidigits.go зависит от математического пакета с повышенной точностью, а язык C версии, в отличие от Go, используют GMP (то есть написан на оптимизированном ассемблере). Контрольные показатели, зависящие от регулярных выражений (regex-dna.go, например) по существу сравнивают собственный пакет регулярных выражений Go с зрелые, оптимизированные библиотеки регулярных выражений, такие как PCRE.

Тестовые игры выигрываются благодаря тщательной настройке и версиям Go большинства показателей требуют внимания.Если вы измерите сопоставимое C и программы Go (reverse-complement.go является одним из примеров), вы увидите, что два языка намного ближе по производительности. чем этот набор будет указывать.

Тем не менее, есть возможности для улучшения. Компиляторы хороши, но могут быть лучше, многие библиотеки нуждаются в серьезной работе над производительностью, а сборщик мусора еще недостаточно быстро. (Даже если бы это было так, стараясь не создавать ненужных мусор может иметь огромное влияние.)

В любом случае Go часто может быть очень конкурентоспособным.Произошло значительное улучшение производительности многих программ. по мере развития языка и инструментов. Смотрите сообщение в блоге о профилирование Программы Go для информативного примера.

Отличия от C

Почему синтаксис так отличается от C?

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

Почему объявления задом наперёд?

Они обратные, только если вы привыкли к C. В C понятие состоит в том, что переменная объявляется как выражение, обозначающее ее тип, т.е. хорошая идея, но грамматики типов и выражений не очень хорошо сочетаются и результаты могут сбивать с толку; рассмотрим указатели на функции.Перейти в основном разделяет синтаксис выражений и типов, что упрощает работу (используя префикс * для указателей является исключением, подтверждающим правило). В С, декларация

    интервал* а, б;
 

объявляет a указателем, но не b ; в Го

    вар а, б *инт
 

объявляет оба указателями. Это более четко и регулярно. Кроме того, форма краткого объявления := утверждает, что полная переменная объявление должно представлять тот же порядок, что и := , поэтому

    переменная uint64 = 1
 

имеет тот же эффект, что и

    а := uint64(1)
 

Синтаксический анализ также упрощается за счет наличия отдельной грамматики для типов, которые это не просто грамматика выражений; ключевые слова, такие как func и чан держите вещи в чистоте.

Смотрите статью о Синтаксис объявления Go Больше подробностей.

Почему нет арифметики указателей?

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

Почему

++ и -- являются операторами, а не выражениями? А почему постфикс, а не префикс?

Без арифметики указателей удобство использования префикса и постфикса операторы приращения отбрасываются. Удалив их из выражения иерархия, синтаксис выражений упрощен, а беспорядок вопросы порядка оценки ++ и -- (рассмотрите f(i++) и p[i] = q[++i] ) также устраняются.Упрощение значительный. Что касается постфикса и префикса, любой из них будет работать нормально, но постфиксная версия более традиционна; возникла потребность в префиксе с STL, библиотекой для языка, имя которого, по иронии судьбы, содержит постфиксный приращение.

Почему фигурные скобки есть, а точки с запятой нет? И почему я не могу поставить открытие скобка на следующей строке?

Go использует фигурные скобки для группировки операторов, синтаксис, знакомый программисты, работавшие с любым языком семейства C.Однако точки с запятой предназначены для парсеров, а не для людей, и мы хотели максимально их устранить. Для достижения этой цели Go заимствует трюк из BCPL: точки с запятой, разделяющие операторы, находятся в формальная грамматика, но вводятся автоматически, без просмотра вперед, лексер в конце любой строки, которая может быть концом инструкции. Это очень хорошо работает на практике, но приводит к тому, что стиль подтяжки. Например, открывающая фигурная скобка функции не может появляются в строке сами по себе.

Некоторые утверждали, что лексер должен делать предварительный просмотр, чтобы разрешить готовьтесь жить на следующей линии. Мы не согласны. Так как код Go подразумевается автоматически форматироваться гофмт , должен быть выбран какой-то стиль . Этот стиль может отличаться от того, что вы использовали в C или Java, но Go — это другой язык и Стиль gofmt так же хорош, как и любой другой. Более важны — гораздо важнее — преимущества единого, программно обязательный формат для всех программ Go значительно перевешивает любые предполагаемые недостатки конкретного стиля.Заметьте также, что стиль Go означает, что интерактивная реализация Go может использовать стандартный синтаксис построчно без особых правил.

Зачем заниматься вывозом мусора? Не будет ли это слишком дорого?

Одним из крупнейших источников бухгалтерского учета в системных программах является управление временем жизни выделенных объектов. В таких языках, как C, в которых это делается вручную, это может занять значительное количество времени программиста и часто является причиной вредоносных жуков. Даже в таких языках, как C++ или Rust, которые предоставляют механизмы чтобы помочь, эти механизмы могут оказать существенное влияние на дизайн программного обеспечения, часто добавляющий накладные расходы на программирование своего собственного.Мы считали крайне важным устранить такие накладные расходы программиста и достижения в сборке мусора технологии за последние несколько лет вселили в нас уверенность, что она может быть реализовано достаточно дешево и с достаточно низким задержки, что это может быть жизнеспособным подходом для сетевых системы.

Большая часть сложности параллельного программирования имеет свои корни в проблеме времени жизни объекта: поскольку объекты передаются между потоками, это становится громоздким чтобы гарантировать их безопасное освобождение. Автоматическая сборка мусора значительно упрощает написание параллельного кода.Конечно, реализация сборки мусора в параллельной среде сам по себе вызов, но встречая его один раз, а не каждый программа помогает всем.

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

Это не означает, что последние работы в области языков как Rust, которые привносят новые идеи в проблему управления ресурсы вводят в заблуждение; мы поощряем эту работу и рады видеть как оно развивается.Но Go использует более традиционный подход, обращаясь к срок службы объекта через сборка мусора, и только сборка мусора.

Текущая реализация представляет собой сборщик пометки и очистки. Если машина многопроцессорная, сборщик работает на отдельном процессоре. core параллельно с основной программой. Основные работы на коллекторе в последние годы позволили сократить время пауз. часто до субмиллисекундного диапазона, даже для больших куч, все, кроме устранения одного из основных возражений против сборки мусора на сетевых серверах.Продолжается работа по совершенствованию алгоритма, снижению накладных расходов и латентность и исследовать новые подходы. 2018 Основной доклад ISMM Рик Хадсон из команды Go описывает достигнутый прогресс и предлагает некоторые будущие подходы.

Говоря о производительности, имейте в виду, что Go дает программисту значительный контроль над расположением и распределением памяти, гораздо больше, чем типично для языков со сборкой мусора. Внимательный программист может уменьшить значительные накладные расходы на сборку мусора при правильном использовании языка; смотрите статью о профилирование Программы Go для рабочего примера, включая демонстрацию инструменты профилирования.

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

Ваш адрес email не будет опубликован.