Friday, 24 January 2014

Date часовой пояс linux

Школа Программирования



Для кого



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



Компонент панели управления "Дата и время" в Windows 7



В операционной системе Windows, начиная с версии Windows 95, для просмотра и изменения даты и системного времени существует компонент панели управления «Дата и время» . Обычно текущая дата и время отображаются справа на панели задач между областью уведомлений и кнопкой «Свернуть все окна» . Для того чтобы открыть диалог просмотра даты и времени, нажмите на кнопку часов в области уведомлений. В отобразившемся диалоге вы можете увидеть время в цифровом формате, а также в виде обыкновенных часов. Помимо времени, в этом диалоге отображается календарь, в котором подсвечивается текущая дата. При нажатии на кнопки со стрелками, расположенными по обе стороны от названия месяца в диалоге будет отображаться предыдущий или следующий месяц, в зависимости от того на какую кнопку вы нажимали. Для перехода к выбору месяца текущего года нажмите на названии месяца. При нажатии на названии года отображается последнее десятилетие, еще одним нажатием можно отобразить года за 100 лет. Диалог даты и времени можно увидеть на следующем скриншоте:



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



Нажмите на кнопку часов в области уведомлений и в появившемся диалоге перейдите по ссылке «Изменение настроек даты и времени» ;



Нажмите на кнопку «Пуск» для открытия меню, откройте «Панель управления» . из списка компонентов панели управления выберите «Дата и время» ;



Воспользуйтесь комбинацией клавиш +R для открытия диалога «Выполнить» . В диалоговом окне «Выполнить» . в поле «Открыть» введите timedate. cpl и нажмите на кнопку «ОК» .



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



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



Из этого диалогового окна вы также можете перейти к диалоговому окну изменений параметров календаря, щелкнув левой кнопкой мыши по ссылке «Изменение параметров календаря» . При нажатии на эту ссылку откроется вкладка «Дата» диалогового окна «Настройка формата» . где вы можете выбрать краткий и полный формат даты, первый день недели и прочие настройки. После внесения изменений нажмите на кнопку «ОК» . Диалоговое окно «Настройка времени и даты» можно увидеть на следующем скриншоте:



Дату и время также можно изменять при помощи командной строки и командной оболочки Windows PowerShell. Для изменения даты и времени при помощи командной строки существуют команды TIME и DATE .



Команда Time предназначена для вывода и установки нового системного времени. После ввода команды без параметров командная строка отобразит текущее время и запрос на ввод нового значения. Для изменения времени введите новое значение и нажмите на кнопку Enter . Команда Time также поддерживает ключ /T . который позволяет ввести текущее значение времени без запроса. Пример использования:



Команда Date предназначена для вывода и установки новой даты. Синтаксис команды идентичен команде Time . Пример использования:



При помощи командной оболочки Windows PowerShell просматривать системную дату и время можно командлетом Get-Date . а для изменения существует командлет Set-Date . Этот командлет изменяет системные дату и время, заменяя их указанными значениями. Указать новую дату и время можно в виде строки, или передав командлету Set-Date объект DateTime или TimeSpan . Для указания новой даты или времени используйте параметр –Date . Этот параметр устанавливает указанные значения даты и времени. Можно ввести новую дату в кратком формате даты, а время в стандартном формате времени для используемой локали. Если задана только дата (без времени), то командлет Set-Date устанавливает время на полночь указанной даты. Если указано только время, дата не изменяется. Пример использования:



На вкладке «Дата и время» вы также можете изменить часовой пояс. Для того чтобы изменить часовой пояс, нажмите на кнопку «Изменить часовой пояс» . В диалоговом окне «Выбор часового пояса» выберите текущий часовой пояс в раскрывающемся списке и нажмите на кнопку «ОК» . Также в этом диалоговом окне вы можете включить или отключить функцию перехода на летнее время. Для этого существует опция с флажком «Автоматически переходить на летнее время и обратно» . Если флажок установлен, то при наступлении даты перехода на летнее или зимнее время, операционная система автоматически изменит время.



Для установки автоматического перехода на летнее время вы также можно воспользоваться следующим твиком реестра:



Вкладка «Дополнительные часы» компонента панели управления «Дата и время» предназначена для отображения времени других часовых поясов наряду с вашим. В операционной системе Windows 7 для установки дополнительных часов других часовых поясов, установите флажок «Показать эти часы» . в раскрывающемся списке выберите нужный для вас часовой пояс и в текстовом поле «Отображаемое имя» введите название нового часового пояса. Для примера на следующем скриншоте видно, что добавлены двое дополнительных часовых пояса для Москвы и Нью-Йорка.



Добавлять дополнительные часы также можно при помощи реестра. В следующем примере, добавим дополнительные часы для часового пояса UTC +03:00 с названием «Москва» :



Где:



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



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



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



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



Увеличить рисунок



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



В диалоговом окне «Настройка времени по Интернету» установите флажок на опции «Синхронизировать с сервером времени в Интернете» . выберите нужный сервер времени или введите имя домена, и нажмите на кнопку «ОК» .



Помимо этого, синхронизацию времени можно настроить при помощи команды W32tm командной строки или с помощью некоторых параметров системного реестра, расположенных в следующем разделе: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\



Статья опубликована в рамках конкурса "Наш выбор - Windows 7!". Оригинальный стиль автора сохранен.



Реализации [ править | править вики-текст ]



Использование [ править | править вики-текст ]



При вызове команды без параметров выводит текущее время:



При вызове с параметром, который начинается с цифры, устанавливает системное время. Поскольку стандарт Single Unix Specification не описывает, как утилита date устанавливает время [1]. разные операционные системы используют разные форматы для этого параметра: например, MMDDhhmm[[CC]YY][.ss] в Linux. [[[[[CC]YY]MM]DD]hh]mm[.ss] в FreeBSD и [[MMDD]hhmm|MMDDhhmm[CC]YY][.ss] в Solaris (где CC. YY. MM. DD. hh. mm. и ss означают столетие, год столетия, месяц, число, час, минуту и секунду). Следовательно,



Ключи [ править | править вики-текст ]



блог любителя всё записать



Про АйТи и около айтишные темы



Не ставятся драйвера на Arduino Nano



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



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



[Arduino] Ошибка stk500_recv (): programmer is not responding



Подключил Arduino UNO v.3 к Mac, запустил Arduino IDE, взял из примеров скетч Blink, заливаю… БАЦ! Ошибка avrdude: stk500_recv (): programmer is not responding .



Проблема  точно не в Arduino, т. к. еще вчера все прекрасно работало, но на другом ПК. Потраблшутил немного:



1. Проверил кабель, подключил через другой, заведомо рабочий;



2. Проверил, какая модель Arduino указана в программе Arduino IDE;



3. Проверил порт, который выставлен в Arduino IDE с тем, чтобы совпадал с портом Arduino в системе.



Мне помог второй пункт, забыл переставить флажок с Arduino Nano на UNO. Поправил, все заработала, светодиод замигал.



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



NTP Server на Linux (ntpd)



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



Протокол NTP



Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью (читай "шириной"/качеством канала).



NTP использует для своей работы протокол UDP и порт 123.



Текущая версия протокола — NTP 4 . NTP использует иерархическую систему «часовых уровней» (их так же называют Stratum ). Уровень 0 (или Stratum 0) - это, обычно, устройства представляющие собой атомные часы (молекулярные, квантовые), GPS часы или радиочасы. Данные устройства обычно не публикуются во всемирную сеть, а подключаются напрямую к серверам времени уровня 1 посредством протокола RS-232 (на иллюстрации обозначены желтыми стрелками). Уровень 1 синхронизирован с высокоточными часами уровня 0 . обычно работают в качестве источников для серверов уровня 2 . Уровень 2 синхронизируется с одной из машин уровня 1 . а так же возможна синхронизация с серверами своего уровня. Уровень 3 работает аналогично второму. Обычно в сеть публикуются сервера уровней от второго и ниже. Протокол NTP поддерживает до 256 уровней. Так же хочется отметить, что сервера уровней 1 и2, а иногда и 3 не всегда открыты для всеобщего доступа. Иногда, чтобы синхронизироваться с ними, необходимо послать запрос по почте - администраторам домена.



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



Назначение сервера NTP в локальной сети



Для чего нам может понадобиться NTP server? Например, существуют службы в операционных системах, которые могут зависеть от синхронизированного времени. Наиболее ярким примером таких служб является протокол аутентификации Kerberos. Для его работы необходимо, чтобы на компьютерах, доступ к которым осуществляется с использованием этого протокола, системное время различалось не более чем на 5 минут. Кроме того, точное время на всех компьютерах значительно облегчает анализ журналов безопасности при расследовании инцидентов в локальной сети.



Режимы работы NTP сервера/клиента



Клиент/сервер



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



Симметричный активный/пассивный режим



Этот режим используется в том случае, если производится синхронизация времени между большим количеством равноправных машин. Помимо того, что каждая машина синхронизируется с внешним источником, она также осуществляет синхронизацию со своими соседями (peer), выступая для них в качестве клиента и сервера времени. Поэтому даже если машина «потеряет» внешний источник, она все еще сможет получить точное время от своих соседей. Соседи могут работать в двух режимах – активном и пассивном. Работая в активном режиме, машина сама передает свое время всем машинам-соседям, перечисленным в секции peers конфигурационного файла ntp. conf. Если же в этой секции соседи не указаны, то считается, что машина работает в пассивном режиме. Для того чтобы злоумышленник не смог скомпрометировать другие машины, представившись в качестве активного источника, необходимо использовать аутентификацию.



Режим Broadcast



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



Режим Multicast



Данный режим во многом похож на broadcast. Отличие заключается в том, что для доставки пакетов используются multicast-адреса сетей класса D адресного пространства IP-адресов. Для клиентов и серверов задается адрес multicast-группы, которую они используют для синхронизации времени. Это делает возможным синхронизацию групп машин, расположенных в различных подсетях, при условии, что соединяющие их маршрутизаторы поддерживают протокол IGMP и настроены на передачу группового трафика.



Режим Manycast



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



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



Время в Linux



Кратко расскажу, какое время существует в Linux и как его задать. В Linux, как и в другой ОС, существует 2 времени. Первые - аппаратные . иногда называемые Real Time Clock . сокращенно ( RTC ) (они же - часы BIOS) обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы — внутренние программные часы . которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы.



Дата и время операционной системы устанавливается при загрузке на основании значения аппаратных часов . а так же настроек часового пояса . Настройки часового пояса берутся из файла /etc/localtime . Данный файл - есть ссылка (но чаще - копия) одного из файлов в структуре каталога /usr/share/zoneinfo/ .



Аппаратные часы Linux могут хранить время в формате UTC (аналог GMT), либо текущее территориальное время. Общая рекомендация в том, какое время устанавливать (?) следующая: если на компьютере установлено несколько ОС и одна из них - Windows, то необходимо использовать текущее время (т. к. Windows берет время из BIOS/CMOS и считает его локальным). Если используются только операционные системы UNIX семейства, то желательно хранить время в BIOS в UTC формате.



После загрузки операционной системы, часы операционной системы и BIOS полностью независимы. Ядро системы раз в 11 секунд синхронизирует системные часы с аппаратными.



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



Ядро Linux'а всегда хранит и вычисляет время, как число секунд прошедших с полночи 1-го января 1970 года . в независимости от того, установлены ваши часы на локальное или всемирное время. Преобразование в локальное время производится в процессе запроса.



Поскольку количество секунд с 1-го января 1970 года всемирного времени сохраняется как знаковое 32-битное целое (это справедливо для Linux/Intel систем), ваши часы перестанут работать где-то в 2038 году. Linux не имеет проблемы 2000-го года, но имеет проблему 2038 года. К счастью, к тому времени все linux'ы будут запущены на 64-х разрядных системах. 64-х битное целое будет содержать наши часы приблизительно до 292271-миллионного года.



NTP Server Linux



Введение



Существует масса реализаций для синхронизации времени для ОС Linux. Наиболее известными являются Xntpd (NTP версия 3), ntpd (NTP версия 4), Crony и ClockSpeed. В нашем примере мы будем использовать ntp-сервер ntpd.



Демон ntpd является одновременно и сервером времени и клиентом, в зависимости от настроек конфигурационного файла /etc/ntpd. conf (иногда /etc/ntp. conf), демон может и "принимать" время с уделенных серверов и "раздавать" другим хостам время.



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



Установка ntpd



Собственно, установка демона сводится к установке следующих пакетов: ntp (пакет включающий самого демона), ntpdate (утилита для ручной синхронизации времени - устарела), ntp-doc (документация по пакету), в некоторых дистрибутивах нужно будет установить так же ntp-utils (утилиты для диагностики), в некоторых они включены в пакет ntp. Как производить установку программ в Linux. я описывал в управление ПО Linux. После установки пакета, в большинстве дистрибутивов, демон будет уже сконфигурирован как как ntp-клиент (например в Debian было так). Соответственно, автоматически были созданы основные конфигурационные файлы: /etc/ntp. conf и /var/lib/ntp/ntp. drift и автоматом запущен демон.



Перед настройкой демона на синхронизацию с внешним миром я бы посоветовал установить текущую системную дату на значение, максимально приближенное к реальному времени. Установка даты в Linux производится командой: date MMDDhhmmCCYY. ss, где MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды. При этом, значения CCYY. ss указывать не обязательно.



Как видно, указанная команда установит текущие дату и время на 27 декабря 2010года, 20:06:30. Команда date без параметров, выводить текущее системное время. У данной команды есть куча параметров, с которыми можно ознакомиться в man date.



Так же, необходимо правильно настроить аппаратные часы и часовой пояс. Как говорилось выше, часовой пояс настраивается копированием необходимого файла зоны из каталога /usr/share/zoneinfo/ в файл /etc/localtime :



Аппаратные часы я настроил на UTC :



В первом примере указан конфигурационный файл, определяющий использование UTC для RH, второй - для Deb-дистрибутивов.



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



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



Теперь, когда у нас все подготовлено и установлено, приступим к настройке .



Управление демоном ntpd



Управление демоном ntpd ничем не отличается от управления любыми другими демонами. Запуск или перезапуск службы ntpd:



Остановка:



Или:



Демон имеет следующие параметры запуска:



Как известно, что не измеряется, то нельзя улучшить. И если про замеры на бэкенде (сколько времени выполняются запросы к базе, как быстро генерируется страницы, сколько запросов в секунду может обрабатывать веб-сервер) знают и выполняют их почти все разработчики, то client side производительности незаслуженно уделяется значительно меньше внимания. Быстрый ли DNS, хороший ли канал у хостера, закэширована ли статика, не перегружен ли сайт javascript'ом - все это помогает оценить Navigation timing API.



В докладе мы расскажем о том, как делали систему аналитики, основанную на Navigation timing API, для десятков тысяч сайтов:



- Как сделать подобную систему за 1 месяц и $1000, используя в Amazon Web Services (AWS) Kinesis и DynamoDB.



- Как быстро (очень быстро!) принимать миллионы хитов с помощью Nginx+Lua.



- Как в реальном времени обрабатывать миллионы хитов, постоянно агрегируя данные (потоковая обработка BigData. без хранения BigData).



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



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



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



Что делать, если объект вашего исследования это весь веб-граф Рунета, граф Твиттера, дорожная сеть Европейского союза или граф знаний Google? Как корректно и быстро вычислить диаметр графа, найти компоненты связности, кратчайшее расстояние между всеми парами вершин или разрушить минимальное остовное дерево?



Многие без оглядки бросаются в омут Neo4j и других графовых баз данных, кто-то изобретает свои способы компактного хранения графа в оперативной памяти, а некоторые прибегают к мощи парадигмы MapReduce.



Традиционная MapReduce парадигма не оправдывает себя при выполнении расчетов на больших графах. Большая часть современных фреймворков обработки графов построено на основе модели Bulk Synchronous Parallel, в том числе и знаменитые Pregel и Apache Giraph.



Дивный мир Graph Mining и Large-Scale Graph Processing приковывает к себе взгляды многих исследовательских компаний и увлеченных теорией графов программистов, вовлекая в процесс создания новых алгоритмов и открытых инструментов. Это увлекательная, но тернистая тропа. А дорогу, как известно, осилит идущий.

No comments:

Post a Comment