id rawvalue что это значит
Id rawvalue что это значит
Итак, S.M.A.R.T. — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.
Много пользователей знает что такое S.M.A.R.T., немного меньше даже знают как его получить. Но когда встает вопрос проанализировать полученную таблицу, обычно дело стопорится. В этой статье я приведу основные значения и их расшифровку
SMART производит наблюдение за основными характеристиками накопителя, каждая из которых получает оценку. Характеристики можно разбить на две группы:
параметры, отражающие процесс естественного старения жёсткого диска (число оборотов шпинделя, число премещений головок, количество циклов включения-выключения);
текущие параметры накопителя (высота головок над поверхностью диска, число переназначенных секторов, время поиска дорожки и количество ошибок поиска).
Данные хранятся в шестнадцатеричном виде, называемом «raw value», а потом пересчитываются в «value» — значение, символизирующее надёжность относительно некоторого эталонного значения. Обычно «value» располагается в диапазоне от 0 до 100 (некоторые атрибуты имеют значения от 0 до 200 и от 0 до 253).
Высокая оценка говорит об отсутствии изменений данного параметра или медленном его ухудшении. Низкая говорит о возможном скором сбое.
Значение, меньшее, чем минимальное, при котором производителем гарантируется безотказная работа накопителя, означает выход узла из строя.
Технология SMART позволяет осуществлять:
мониторинг параметров состояния;
сканирование поверхности;
сканирование поверхности с автоматической заменой сомнительных секторов на надёжные.
Следует заметить, что технология SMART позволяет предсказывать выход устройства из строя в результате механических неисправностей, что составляет около 60 % причин, по которым винчестеры выходят из строя. Предсказать последствия скачка напряжения или повреждения накопителя в результате удара SMART не способна.
Следует отметить, что накопители НЕ МОГУТ сами сообщать о своём состоянии посредством технологии SMART, для этого существуют специальные программы.
ID ( Number ) — собственно, сам индикатор атрибута. Номера стандартны для значений атрибутов, но например,из-за кривизны перевода один и тот же атрибут может называться по-разному, проще орентироваться по ID, логично?
Worst — наихудшее значение, которого достигало значение Value за всю жизнь винчестера. Измеряется тоже в уе. В процессе работы оно может уменьшаться либо оставаться неизменным. По нему тоже нельзя однозначно судить о здоровье атрибута, нужно сравнивать его с Threshold.
Threshold — значение в (сюрприз. ) уе, которого должен достигнуть Value этого же атрибута, чтобы состояние атрибута было признано критическим. Проще говоря, Threshold — это порог: если Value больше Threshold — атрибут в порядке; если меньше либо равен — с атрибутом проблемы. Именно по такому критерию утилиты, читающие S.M.A.R.T., выдают отчёт о состоянии диска либо отдельного атрибута вроде «Good» или «Bad». При этом они не учитывают, что даже при Value, большем Threshold, диск на самом деле уже может быть умирающим с точки зрения пользователя, а то и вовсе ходячим мертвецом, поэтому при оценке здоровья диска смотреть стоит всё-таки на другой класс атрибута, а именно — RAW. Однако именно значение Value, опустившееся ниже Threshold, может стать легитимным поводом для замены диска по гарантии (для самих гарантийщиков, конечно же) — кто же яснее скажет о здоровье диска, как не он сам, демонстрируя текущее значение атрибута хуже критического порога? Т.?е. при значении Value, большем Threshold, сам диск считает, что атрибут здоров, а при меньшем либо равном — что болен. Очевидно, что при Threshold=0 состояние атрибута не будет признано критическим никогда. Threshold — постоянный параметр, зашитый производителем в диске.
RAW ( Data ) — самый интересный, важный и нужный для оценки показатель. В большинстве случаев он содержит в себе не уе, а реальные значения, выражаемые в различных единицах измерения, напрямую говорящие о текущем состоянии диска. Основываясь именно на этом показателе, формируется значение Value (а вот по какому алгоритму оно формируется — это уже тайна производителя, покрытая мраком). Именно умение читать и анализировать поле RAW даёт возможность объективно оценить состояние винчестера.
Теперь перейдем непосредственно к самим атрибутам.
185 (B9) Head Stability Стабильность головок (Western Digital).
Учитываются как успешные, так и неуспешные попытки операций переназначения секторов.
197 (C5) Current Pending Sector Count— содержит количество секторов-кандидатов на переназначение в резервную область.
Натыкаясь в процессе работы на «нехороший» сектор (например, контрольная сумма сектора не соответствует данным в нём), диск помечает его, как кандидата на переназначение, заносит его в специальный внутренний список и увеличивает параметр 197. Из этого следует, что на диске могут быть повреждённые секторы, о которых он ещё не знает, ведь на пластинах вполне могут быть области, которые винчестер какое–то время не использует.
При попытке записи в сектор диск сначала проверяет, не находится ли этот сектор в списке кандидатов. Если сектор там не найден, запись проходит обычным порядком. Если же найден, проводится тестирование этого сектора записью-чтением. Если все тестовые операции проходят нормально, то диск считает, что сектор исправен (т.е. был т.н. «софт-бэд» – ошибочный сектор возник не по вине диска, а по иным причинам: например, в момент записи информации отключилось электричество, и диск прервал запись, запарковав БМГ. В итоге данные в секторе окажутся недописанными, а контрольная сумма сектора, зависящая от данных в нём, вообще останется старой. Налицо будет расхождение между нею и данными в секторе), проводит изначально запрошенную запись и удаляет сектор из списка кандидатов. При этом атрибут 197 уменьшается, также возможно увеличение атрибута 196.
Если же тестирование заканчивается неудачей, диск выполняет операцию переназначения, уменьшая атрибут 197, увеличивая 196 и 05, а также делает пометки в G-list.
Итак, ненулевое значение параметра говорит о неполадках (правда, не может сказать о том, проблема ли в самом диске).
При ненулевом значении нужно обязательно запустить в программах Victoria или MHDD последовательное чтение всей поверхности с опцией remap. Тогда при сканировании диск обязательно наткнётся на плохой сектор и попытается произвести запись в него (в случае Victoria 3.5 и опции Advanced remap диск будет пытаться записать сектор до 10 раз). Таким образом, программа спровоцирует «лечение» сектора, и в итоге сектор либо будет исправлен, либо переназначен.
В случае неудач как remap, так и Advanced remap, стоит попробовать запустить последовательную запись в тех же Victoria или MHDD. Учитывайте, что операция записи стирает данные, поэтому перед её применением обязательно делайте бэкап!
Иногда от невыполнения ремапа могут помочь следующие манипуляции: снимите плату электроники диска и почистите контакты гермоблока винчестера, соединяющие его с платой, – они могут быть окислены. Будьте аккуратны при выполнении этой процедуры – из–за неё можно лишиться гарантии!

Невозможность ремапа может быть обусловлена ещё одной причиной – диск исчерпал резервную область, и ему просто некуда переназначать секторы.
Если же значение атрибута 197 никакими манипуляциями не снижается до 0, это может свидетельствовать о физической деградации жёсткого диска и имеет смысл подумать о его замене.
(Drive’s seek performance during offline operations.)
One Response to Расшифровка параметров S.M.A.R.T HDD
Что такое ID пользователя
Многие пользователи сети не понимают разницы между ID и IP, отождествляя их с именем компьютера. В статье мы разберем понятие ID, его назначение. А также узнаем, как его найти во ВКонтакте и других соцсетях.
Что такое ID пользователя в сети
ID пользователя — это идентификатор, уникальный номер, имя или признак. Его можно сравнить с паспортом любого человека, который является уникальным. У каждого участника сети интернет тоже есть свой персональный идентификационный номер, по которому его определяют.
По этому номеру, например, можно быстро найти страницу в соцсетях.
На заметку! ID — это уникальная числовая/буквенная комбинация, которая присваивается каждому пользователю интернет пространства.
ID присваивается не только компьютеру, но и соцсетям, а также каждой публикации. Этот идентификатор отображается в ссылке на ту или иную группу или публикацию (находим в адресной строке). ID группы отличается от кода меньшим количеством символов, так как групп намного меньше.
Что такое ID пользователя ВКонтакте
С недавних пор разработчики соцсети ВКонтакте предоставили возможность замены символов ID по собственному желанию. Теперь можно самостоятельно выбрать свой код, который должен состоять из заглавных и строчных латинских букв.
Чтобы узнать идентификатор пользователя в сети с телефона, заходим на его страницу и нажимаем на три точки в верхнем углу экрана с правой стороны и копируем ссылку.
Затем эту ссылку вставляем в текстовый редактор (блокнот для записей) и сохраняем.
Для чего нужен идентификатор пользователя
Идентификатор ID используется при:
Этот уникальный номер позволяет идентифицировать компьютер/ноутбук при подключении к интернету, это адрес его сетевой карты. Также по этому номеру можно отличить один объект сети от другого.
На заметку! В отличие от идентификатора IP отличается динамичностью: после перезагрузки появляется новый код. Он состоит из четырех комбинаций цифр, разделенных точкой. Этот код используют для определения геолокации человека, в какой стране и городе он находится. Узнать его очень просто: достаточно ввести в поисковую строку запрос «мой IP «.
Можно ли узнать свой идентификатор ID, и где это сделать?
Чтобы узнать свой ID, сделайте следующее:
На форумах в качестве ID выступает почтовый адрес. Банковская карта — это тоже ID. Цифры телефона, адрес электронной почты, ФИО, дата рождения — это всё идентификаторы, уникальная числовая и буквенная комбинация.
Зачем знать свой ID в соцсетях:
Этот номер лучше записать в блокнот: он пригодится при взломе страницы.
ID пользователя в Instagram
Идентификатор пользователя нужен для раскрутки своей страницы в Инстаграм, это индивидуальный инструмент продвижения. Если свое имя можно сменить в любой момент, то ID остается прежним.
В данной соцсети можно узнать ID:
ID пользователя в Facebook
В данной сети цифровой идентификатор был заменен комбинированным из цифр и букв. Чтобы узнать цифровой код, нужно поступить так.
С мобильной версии узнать свой ID можно так.
Ссылкой можно поделиться в соцсетях либо отправить своим друзьям.
ID пользователя в Одноклассниках
Чтобы узнать код своей странички в Одноклассниках, сделаем следующее:
Как посмотреть ID другого участника в Одноклассниках? Это сделать очень просто. Перейдите на страничку его профиля, в адресной строке будет зафиксирован его номер:
Также вы можете узнать идентификатор, наведя курсор мышки на имя человека.
Есть еще один способ, как узнать ID незнакомого человека или группы. Заходим на страничку, нажимаем на «Другие действия» и «Скопировать ссылку» :
Затем просто вставляем ссылку в любое приложение или текстовый редактор и найти искомое — ID страницы.
Подведем итоги
Идентификатор пользователя — это имя, личный номер каждого участника сети интернет, каждой группы и каждой публикации. Он позволяет различать объекты и быстро находить нужную информацию в интернете.
ID в соцсетях — это виртуальное свидетельство о рождении нового сообщества, пользователя или статьи в интернет пространстве. Обычно ID состоит из комбинации цифр, но в последнее время появилась возможность замены цифр латинскими буквами. Однако цифровая комбинация остается постоянной, несмотря на замену.
Чтобы не забыть свой цифровой идентификатор, его стоит записать в блокнот. При взломе страницы буквенный айди мало чем поможет.
Performance Counter. Raw Value Свойство
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает начальное или не рассчитанное значение этого счетчика.
Значение свойства
Начальное значение счетчика.
Исключения
Попытка установить начальное значение счетчика, но счетчик доступен только для чтения.
-или- Экземпляр класса, неправильно связанный со счетчиком производительности.
-или- При использовании глобальной общей памяти свойству InstanceLifetime присваивается значение Process.
Произошла ошибка при обращении к API-интерфейсу системы.
Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.
Примеры
В следующем примере класс используется CounterSample для вывода значения RawValue свойства для счетчика.
Комментарии
Если тип счетчика имеет размер 32 бит и вы пытаетесь задать для этого свойства слишком большое значение, свойство усекает значение до 32 бит. При чтении пользовательских счетчиков на локальном компьютере использование RawValue свойства вместо вычисляемого значения может значительно повысить производительность в сценариях, где необработанное значение достаточно.
Если счетчик, который вы читаете, доступен только для чтения, то при получении этого RawValue Свойства счетчик будет показан на момент вызова свойства. Это действие эквивалентно выполнению начального вызова NextSample метода. При последующем вызове NextSample можно выполнять вычисления для значений, возвращаемых обоими вызовами.
Поскольку системные счетчики доступны только для чтения, можно получить, но не задавать их необработанные значения.
IncrementМетоды, IncrementBy и Decrement используют для обновления значения счетчика взаимоблокировки. Это позволяет точно синхронизировать значение счетчика в многопоточных или многопроцессных сценариях, но также приводит к снижению производительности. Если точность, предоставляемая блокируемыми операциями, не нужна, можно обновить RawValue свойство напрямую в течение 5 раз, чтобы улучшить производительность. Однако в многопоточных сценариях некоторые обновления значения счетчика могут игнорироваться, что приводит к неточности данных.
для чтения счетчиков производительности в Windows Vista, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.
чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista, добавьте себя в группу «пользователи системного монитора».
Понимание lvalue и rvalue в C и С++
Привет, Хабр! Представляю вашему вниманию перевод статьи Eli Bendersky, Understanding of lvalues and rvalues in C and C++.
От переводчика: предлагаю Вашему вниманию перевод интересной статьи об lvalue и rvalue в языках C/C++. Тема не нова, но знать об этих понятиях никогда не поздно. Статья рассчитана на новичков, либо на программистов переходящих с C (или других языков) на C++. Поэтому будьте готовы к подробному разжёвыванию. Если вам интересно, добро пожаловать под кат
Термины lvalue и rvalue не являются чем-то таким, с чем часто приходится сталкиваться при программировании на C/C++, а при встрече не сразу становится ясным, что именно они означают. Наиболее вероятное место столкнуться с ними — это сообщения компилятора. Например, при компиляции следующего кода компилятором gcc :
Вы уведите нечто следующее:
Согласен, что этот код немного надуманный, и вряд ли Вы будете писать нечто подобное, однако сообщение об ошибке упоминает lvalue — термин, который не так часто увидишь в туториалах по C/C++. Другой пример нагляден при компиляции следующего кода при помощи g++ :
Вы увидите следующую ошибку:
Опять же, в сообщение об ошибке упоминается мистическое rvalue. Что же в C и C++ понимается под lvalue и rvalue? Это и есть тема данной статьи.
Простое определение
Для начала нарочито дадим определения lvalue и rvalue в упрощённой форме. В дальнейшем эти понятия будут рассмотрены под увеличительным стеклом.
lvalue (locator value) представляет собой объект, который занимает идентифицируемое место в памяти (например, имеет адрес).
rvalue определено путём исключения, говоря, что любое выражение является либо lvalue, либо rvalue. Таким образом из определения lvalue следует, что rvalue — это выражение, которое не представляет собой объект, который занимает идентифицируемое место в памяти.
Элементарные примеры
Термины, определённые выше, могут показаться немного нечёткими. Поэтому стоит сразу рассмотреть несколько простых поясняющих примеров. Предположим, мы имеем дело с переменной целого типа:
Оператор присваивания ожидает lvalue с левой стороны, и var является lvalue, потому что это объект с идентифицируемым местом в памяти. С другой стороны, следующие заклинания приведут к ошибкам:
Однако, не все присваивания результату вызова функции ошибочны. Например, использование ссылок в C++ делает это возможным:
Здесь foo возвращает ссылку, которая является lvalue, то есть ей можно придать значение. Вообще, в C++ возможность возвращать lvalue, как результат вызова функции, существенна для реализации некоторых перегруженных операторов. Как пример приведём перегрузку оператора [] в классах, которые реализуют доступ по результатам поиска. Например std::map :
Присваивание mymap[10] работает, потому что неконстантная перегрузка std::map::operator[] возвращает ссылку, которой может быть присвоено значение.
Изменяемые lvalue
Таким образом не всем lvalue можно присвоить значение. Те, которым можно, называются изменяемые lvalue (modifiable lvalues). Формально C99 стандарт определяет изменяемые lvalue как:
Преобразования между lvalue и rvalue
Образно говоря, конструкции языка, оперирующие значениями объектов, требуют rvalue в качестве аргументов. Например, бинарный оператор ‘+’ принимает два rvalue в качестве аргументов и возвращает также rvalue:
Как мы уже видели раньше, a и b оба lvalue. Поэтому в третьей строке они подвергаются неявному преобразованию lvalue-в-rvalue. Все lvalue, которые не являются массивом, функцией и не имеют неполный тип, могут быть преобразованы в rvalue.
Что насчёт преобразования в другую сторону? Можно ли преобразовать rvalue в lvalue? Конечно нет! Это бы нарушило суть lvalue, согласно его определению (Отсутствие неявного преобразования означает, что rvalue не могут быть использованы там, где ожидается lvalue).
Это не означает, что lvalue не могут быть получены из rvalue явным способом. Например, унарный оператор ‘*’ (разыменование) принимает rvalue в качестве аргумента, но возвращает lvalue в качестве результата. Рассмотрим следующий верный код:
Обратно, унарный оператор ‘&’ (адрес) принимает lvalue как аргумент и производит rvalue:
Символ «&» играет несколько другую роль в C++ — он позволяет определить ссылочный тип. Его называют «ссылкой на lvalue». Неконстантной ссылке на lvalue не может быть присвоено rvalue, так как это потребовало бы неверное rvalue-в-lvalue преобразование:
Константным ссылкам на lvalue можно присвоить rvalue. Так как они константы, значение не может быть изменено по ссылке и поэтому проблема модификации rvalue просто отсутствует. Это свойство делает возможным одну из основополагающих идиом C++ — допуск значений по константной ссылке в качестве аргументов функций, что позволяет избежать необязательного копирования и создания временных объектов.
CV-специфицированные rvalues
lvalue (3.10) на тип T, не являющимся функциональным, или массивом, может быть преобразован в rvalue. [. ] Если T не класс, типом rvalue является cv-неспецифицированная версия типа T. Иначе, типом rvalue является T.
Так что же значит «cv-неспецифицированный»? CV-спецификатор — это термин, используемый для описания const и volatile спецификаторов типа.
Каждый тип, который является cv-неспецифицированным полным или неполным объектным типом или типом void (3.9), имеет соответственно три cv-специфицированные версии: тип со спецификатором const, тип со спецификатором volatile и тип со спецификаторами const volatile. [. ] CV-специфицированные и cv-неспецифицированные типы являются различными, однако они имеют одинаковое представление и требования по выравниванию.
Ссылки на rvalue (C++11)
Ссылки на rvalue и сопутствующий концепт семантики переноса являются одним из наиболее мощным инструментом, добавленным в язык C++11. Подробная дискуссия на эту тему выходит за рамки этой скромной статьи (вы можете найти кучу материала, просто погуглив «rvalue references». Вот некоторые ресурсы, которые я нахожу полезными: этот, этот и особенно вот этот), но всё же я хотел бы привести простой пример, потому что считаю, что данная глава является наиболее подходящим место, чтобы продемонстрировать как понимание lvalue и rvalue расширяет наши возможности рассуждать о нетривиальных концепциях языка.
Добрая половина статьи была потрачена на объяснение того, что одним из самых главных различий между lvalue и rvalue является тот факт, что lvalue можно изменять, в то время как rvalue — нет. Что же, C++11 добавляет одну важнейшую характерную особенность в этом различии, разрешая нам иметь ссылки на rvalue и тем самым изменять их в некоторых случаях.
Как пример рассмотрим наипростейшую реализацию динамического массива целых чисел. Давайте посмотрим лишь на методы относящиесе к теме данной главы:
Давайте запустим простой код, который копирует содержимое v1 в v2 :
И вот, что мы увидим:
Что совершенно логично, так как это точно отражает, что происходит внутри оператора присваивания. Но давайте предположим, что мы хотим присвоить v2 некоторое rvalue:
Хотя здесь я только присваиваю значение свеже созданному вектору, это является одной из демонстраций общего случая, когда некоторое временное rvalue создаётся и присваивается v2 (это может случится например, если функция возвращает вектор). Вот что мы увидим на экране:
Ого! Выглядит очень хлопотно. В частности, здесь потребовалась дополнительная пара вызовов конструктора с деструктором, чтобы создать, а потом удалить временный объект. И это печально, так как внутри копирующего оператора присваивания другой временный объект создаётся и удаляется. Дополнительная работа за зря.
Но, нет! C++11 даёт нам ссылки на rvalue, с помощью которых можно реализовать «семантику переноса», а в частности «переносящий оператор присваивания» (теперь понятно почему я всё время называл operator= копирующим оператором присваивания. В C++11 эта разница становится важной). Давайте добавим другой operator= в IntVec :
Двойной асперсанд — это ссылка на rvalue. Он означает как раз то, что и обещает — даёт ссылку на rvalue, который будет уничтожен после вызова. Мы можем использовать этот факт, чтобы просто «стащить» внутренности rvalue — они ему всё равно не нужны! Вот, что выведется на экран:
Хочу только отметить ещё раз, что этот пример только вершина айсберга семантики переноса и ссылок на rvalue. Как вы можете догадаться, это сложная тема с множеством частных случаев и загадок. Я пытался лишь продемонстрировать очень интересное применение различий между lvalue и rvalue в C++. Компилятор очевидно может их различать и позаботится о вызове правильного конструктора во время компиляции.
Заключение
Можно написать много C++ кода, не задумываясь о разногласиях rvalue и lvalue, опуская их как непонятный жаргон компилятора в сообщениях об ошибках. Однако, как я пытался показать в этой статье, лучшее владение этой темы обеспечит более глубокое понимание определённых конструкций C++, и сделает части стандарта C++ и дискуссии между экспертами языка для вас более доступными.
В стандарте C++11 эта тема является ещё более важной, так как C++11 вводит понятия ссылок на rvalue и семантики переноса. Чтобы действительно понять новые особенности языка, строгое понимание rvalue и lvalue просто необходимо.
