Реляционные базы данных. Основы.

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

  • Candidate key – ключ, однозначно идентифицирующий строку в таблице и который может быть использован в качестве primary key.
  • Primary key – ключ, используемый DBMS (СУБД) для идентификации строки в таблице. Может быть только один на одну таблицу.
  • Surrogate key – дополнительный столбец, создаваемый для использования в качестве primary key. Значение surrogate key назначает сама СУБД и оно уникально для каждой создаваемой в БД строки.
  • Foreigner key – столбец или комбинация столбцов, являющихся primary key для другой таблицы. Путем foreigner key создаются relations. Referential integrity constraint – ограничение на значения foreigner key при котором каждое значение foreigner key соответствует primary key. Целостность ссылочных данных – функция в реляционных БД – не позволяющая удалять информацию, пока в БД есть данные, ссылающиеся на неё. Например, из таблицы поставщиков нельзя убрать вендора, если на него есть ссылка из действующего заказа. В общем случае – это состояние БД, когда все её таблицы не противоречат друг другу.

Entity-Relationship model (E-R) – моделирование БД. Где entity – тот предмет, который описывается, attributes – его свойства, identifiers – индивидуальные атрибут(ы) каждого entity, relationships – отношения между entities. E-R модель вводит понятие cardinality – мощность множества, которое бывает двух типов:

  • maximum cardinality – максимальное количество entity instances (экземпляров сущности), которые могут участвовать в relationship instance (отношении инстанции).
    • 1:1 отношение – отношение между одним экземпляром сущности одного типа и одним экземпляром сущности другого типа.
    • 1:N отношение – отношение между одной сущностью (родителем) и множественными сущностями (детьми).
    • N:M отношение – отношение между множествами сущностей.
  • minimum cardinality – минимальное количество экземпляров сущности, которые должны участвовать в экземпляре отношения.
    • optional – количество обязательных сущностей в отношении равно 0.
    • mandatory – количество обязательных сущностей в отношении равно 1.

    Соответственно минимальная мощность отношения может быть: M-M, O-M, M-O, O-O.

Сущности бывают двух типов:

  • strong entity – сильная сущность, может существовать сама по себе.
  • weak entity – слабая сущность, зависит от существования другой сущности.

При преобразовании из E-R модели в database design происходит следующее:

  1. сущности становятся таблицами
  2. атрибуты сущности становятся столбцами таблицы
  3. идентификатор становится первичным ключом

Митинг 10.12.11 на Болотной площади, Москва. Мнение.

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

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

14 декабря в ВШЭ состоится общероссийская конференция по проекту закона о ФКС – новой системе гос. закупок, против принятия которой активно выступал Навальный. Она пришла на смену федеральному закону № 94. Во время прошлого обсуждения ФКС, которое также проходило в ВШЭ, Алексей Навальный был главным оппонентом чиновников, настаивающих на ее принятии. Одной из особенностей новой системы гос. закупок, которая увеличит коррумпированность власти, является понятие «добросовестности чиновника».

Возвращаясь к митингу. Не смотря на огромное количество участников (как протестующих, так и представителей правоохранительных органов) митинг прошел мирно и массовых задержаний, которые были при митинге на Чистых прудах, удалось избежать. Стоит отметить, что оба митинга были согласованы со столичным управлением. Прошедший митинг состоялся днем позже подписания протокола, признающего выборы в Госдуму, прошедшие 4 декабря,  состоявшимися членами ЦИК РФ и главой комиссии Владимиром Чуровым.

Проблема с печатью EasyPrint на терминальном сервере

С момента выхода Windows Server 2008 Microsoft внесла некоторые изменения в систему печати, призванные облегчить работу системных администраторов. Появился универсальный драйвер печати EasyPrint. До момента выхода EasyPrint при подключении к удаленному рабочему столу (терминалу) проброс принтеров с локального компьютера осуществлялся только в том случае, если на сервере терминалов был установлен драйвер принтера той же версии, что и на локальном компьютере.

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

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

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

EasyPrint для компьютеров в домене отключается средствами групповой политики. Для этого необходимо перейти в Computer Configuration -> Administrative templates -Windows Components -> Remote Desktop Services > Remote Desktop Session Host -> Printer Redirection для Windows Server 2008 R2 или Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Printer Redirection для Windows Server 2008. В нем необходимо отключить опцию Use Remote Desktop Easy Print printer driver first для Server 2008 R2 или Use Terminal Services Easy Print Driver First Server 2008 соответственно.

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

В заключении хотел бы привести общие требования для работы печати по удаленке:

Последовательность действий для смены драйвера с EasyPrint на родной

  1. Добавляем себя в локальную группу “Print Operators” терминального сервера
  2. Устанавливаем роль “Print Services”
  3. Заходим в консоль “Print Services”. По умолчанию операторы печати могут только просматривать принтеры других пользователей, для изменения их настроек нужно выбрать необходимый принтер, зайти в Свойства –> Безопасность -> Дополнительно -> Владелец. Добавляем операторов печати. Закрываем окна. Открываем снова Свойства –> Безопасность и для группы “Print Operators” назначаем права на редактирование.
  4. Заходим в Свойства принтера -> Дополнительно и меняем драйвер принтера с EasyPrint на родной драйвер принтера.

    Стоит отметить, что смена драйвера для конкретного принтера будет действовать лишь на период сессии в которой доступен этот драйвер для того, что бы для принтера устанавливался родной драйвер каждый раз при подключении к серверу удаленного рабочего стола необходимо средствами групповой политики отключить EasyPrint.
  5. Создаем групповую политику на OU в котором находятся учетные записи подключающихся компьютеров. Переходим в раздел Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Printer Redirection и отключаем опцию Use Terminal Services Easy Print Driver First

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

Список поддерживаемых принтеров компании HP.

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

Источник 1

Источник 2

Служба активации KMS в Windows

C момента появления Windows Vista и Server 2008 в ОС компании Microsoft для активации ОС предлагается использовать один из двух типов ключей MAK и KMS.

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

Служба KMS придерживается клиент-серверной модели. Существует KMS-сервер лицензий (т.н. KMS host) к которому KMS-клиенты обращаются за обновлением лицензий раз в 180 дней.

KMS-ключи делятся на два типа для KMS-клиента и KMS-сервера (т. н. KMS host key). От того какой ключ будет введен в ОС и зависит какую роль будет она выполнять – серверную или клиентскую. KMS-ключи клиента общедоступны в Интернете. KMS-сервер активируется через Интернет.

Клиенты узнают о KMS-сервере через запрос к DNS-серверу, на котором хранятся записи о KMS-серверах. Параметры записи

Service: _VLMCS
Protocol: _TCP
Port number: 1688
Host offering the service: <FQDN_KMS-сервера>

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

nslookup -type=all _vlmcs._tcp

Ключ вводится и активируется командами

slmgr.vbs /ipk <ключ_активации>
slmgr.vbs /ato

К слову стоит заметить, что в случае введения KMS-ключа сервера система запрашивает дополнительное подтверждение от пользователя.

Источник 1

Источник 2

Создание iSCSI LUN на СХД NetApp

Фирма NetApp знаменита своим подходом в области хранения данных названным unified storage. Это СХД совмещающее как блочный доступ (FC, FCoE, iSCSI), так и файловый (NFS, CIFS). В данной статье будет рассмотрена процедура создания логического дискового устройства (LUN) и презентации его определенным хостам.

При создании LUN на NetApp необходимо руководствоваться несколькими понятиями:

  • Один LUN – один инициатор-сервер. Если на LUN будет установлена стандартная файловая система (например, ext3), то доступ к этому LUN будет только у одного сервера. Для доступа с нескольких серверов необходимо его форматировать в кластерной файловой системе (например, OCFS, GlusterFS).
  • Один volume – один LUN. В отличие от предыдущего пункта это не требование, а рекомендация. Т.е. можно создавать несколько LUN на одном volume, но для удобства в этом случае их разнести по разным qtree.
  • Для volume на которых будут храниться LUN’ы рекомендуется отключить механизм snapshot’ов.
  • Презентование LUN инициаторам осуществляется через механизм igroup.

Последовательность действий:

  1. Первым делом нужно ознакомиться со статусом работы службы iscsi
    iscsi status

    Если она не запущена, то нужно запустить

    iscsi start

    Но перед этим, возможно, придется ее лицензировать

    license add ******
  2. Просмотр разрешенных для iSCSI интерфейсов
    iscsi interface show

    По-умолчанию всем интерфейсам разрешено передавать iSCSI. При желании можно отключить некоторые интерфейсы для iSCSI.

    iscsi interface disable <имя_интерфейса>
  3. Создаем агрегат
    aggr create <имя> -t <тип_RAID> -r <размер_RAID> -T <тип_дисков> <кол-во дисков>
    • тип_RAID – raid0 |raid4 |raid_dp
    • размер_RAID – кол-во дисков в одной RAID группе, для наименьшего overhead рекомендуется ставить равным или более кол-ву дисков, добавляемых в агрегат
    • тип_дисков – ATA, SATA, SAS, BSAS, FCAL. Удобно использовать, когда к контроллеру подлечено несколько полок с разными типами дисков и необходимо создать агрегат с одним типом дисков
  4. Создаем volume
    vol create <имя_volume> -s <тип_резервации_места>  <имя_агрегата> <размер_volume>
    • тип_резервации_места – бывает volume|file|none . Рекомендуется volume.
    • размер – кол-во k|m|g|t
  5. Отключаем механизм snapshots
    snap reserver <имя_volume> 0
    vol options <имя_volume> nosnap on
    vol options <имя_volume> nosnapdir on
    snap ched <имя_volume> 0 0 0
  6. Создаем lun
    lun create –s <размер_lun> -t <тип_ос> <путь_хранения>
    • тип_ос – тип операционной системы планируемой под хранение на LUN – solaris, vld, windows, hpux, aix, linux, netware, vmware, windows_gpt, windows_2008, openvms, xen, hyper_v, solaris_efi
    • путь_хранения – для LUN он выглядит /vol/<имя_volume>/<имя_LUN>
  7. Просматриваем подключенных инициаторов
    iscsi initiators show
  8. Создаем igroup и добавляем туда инициаторов
    igroup create –i –t <тип_ос> <имя_группы>
    igroup add <имя_группы> <имя_инициатора>
    • парамет -i – создание iSCSI группы. Для создания FC группы нужно использовать -f.
    • тип_ос – solaris, windows, hpux, aix, linux, netware, vmware, hyper_v, xen
    • имя_инициатора – для iSCSI это WWNN, для FC – WWPN. Имя инициатора на Red Hat задается в файле /etc/iscsi/initiatorname.iscsi
  9. Привязываем созданный LUN к созданной igroup
    lun map <путь_до_LUN> <igroup> <id>
    • id – число больше нуля, используется инициатором, когда LUN к нему примаплен
    • При подключении контроллера с использованием нескольких сетевых адаптеров, будет возникать эффект, т.к. multipath, когда один презентованный для инициатора LUN будет виден столько раз сколько путей существует между инициатором и таргетом NetApp. Для ограничения multipath возможно использовать решение как на стороне инициатора, так и на стороне NetApp.

      • На стороне инициатора – установка специального ПО, в Линуксе – это демон названный multipathd.
      • На стороне таргета NetApp – создание списков доступа для доступа определенных инициаторов к определенным интерфейсам.
        Привязать инициаторов к определенным интерфейсам можно следующими командами:

        iscsi interface accesslist add <имя_инициатора> <имя_интерфейса>

        Просмотреть текущий список доступа

        iscsi interface accesslist show
      • На стороне NetApp – ограничение iSCSI трафика определенными интерфейсами.(см. выше)

Пример настройки iSCSI LUN на NetApp

vol create iscsivol aggr1 1500g
snap reserve iscsivol 0
vol options iscsivol nosnap on
vol options iscsivol nosnapdir on
snap ched iscsivol 0 0 0
lun create –s 1000g –t linux /vol/iscsivol/lun1
igroup create –I –t linux iscsigrp
igroup add iscsigrp iqn.1994-05.com.redhat:server1
lun map /vol/iscsivol/lun1 iscsigrp 5

В примере был создан агрегат размером 1,5 Тб, отключен механизм snapshots, создан LUN размером 1 Тб, создана igroup’а, добавлен хост в нее и примаплен LUN к igroup.

Базовая настройка сетевых интерфейсов в RedHat и Ubuntu

Базовая настройка сетевых интерфейсов в RedHat и Ubuntu.

В семье операционных систем Linux существует несколько подходов к настройке сетевых интерфейсов. Здесь будет рассмотрен способ ручной правки конфигурационных файлов в двух популярных дистрибутивах Red Hat/CentOS и Debian/Ubuntu.

В рассматриваемых системах файлы ответственные за сетевую конфигурацию располагаются в разных местах и имеют разный синтаксис.

В Red Hat/CentOS

Файл Назначение
/etc/sysconfig/network-scripts/ifcfg-<интерфейс> IP-адрес, тип, маска
/etc/sysconfig/network Имя машины, домен, шлюз

В Debian/Ubuntu

Файл Назначение
/etc/network/interfaces Интерфейс, IP-адрес, тип, маска, шлюз
/etc/hostname Имя машины

Настройка DNS-клиента у рассматриваемых систем одинакова

Файл Назначение
/etc/resolv.conf Домен и DNS-суффикс

Пример сетевой конфигурации Red Hat/CentOS
Файл /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:30:48:56:A6:2E
IPADDR=10.10.29.66
NETMASK=255.255.255.192
ONBOOT=yes

Файл /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=fileserver
DOMAINNAME=domain.com
GATEWAY=10.10.29.65

Пример сетевой конфигурации для Debian/Ubuntu
Файл /etc/network/interfaces

iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

Файл /etc/hostname содержит одну строку с именем машины

Примет DNS-конфигурации – файл /etc/resolv.conf

search domain.com
nameserver 10.0.80.11
nameserver 10.0.80.12
nameserver 202.67.222.222

Опция search указывает домен, используемый для разрешения неполных имен, т.е. вместо fileserver будет вестись поиск fileserver.domain.com.

В заключении несколько наиболее часто используемых сетевых команд

Команда Операция
ifconfig Информация об интерфейсах
route –n Информация о маршрутах
netstat –tulpan Информация об открытых портах и соединениях
ethtool <имя_интерфейса> Информация о физических параметрах интерфейса

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

  • Для интерфейсов
    Назначение ip-адреса интерфейсу

    ifconfig <eth*> <ip_адрес> netmask <маска_подсети> up

    Например, ifconfig eth0 192.168.99.14 netmask 255.255.255.0 up

  • Для маршрутов
    Назначение маршрута(шлюза) по-умолчанию

    route add default gw <ip_адрес_шлюза>

    Например, route add default gw 192.168.99.254

    Добавление маршрута

    route add [-net|-host] <IP/Net> netmask <маска_подсети> gw <ip_адрес_шлюза> dev <eth*>

Удаленный доступ на Ubuntu с Windows машины

В данной статье будет описано как организовать удаленный доступ к машине под Ubuntu с машины под Windows при этом будут использоваться такие утилиты как SSH, Putty, Tight VNC и Vino. Общий принцип работы: с компьютера под Windows создается защищенный SSH-туннель до Ubuntu и через него создается VNC-подключение (удаленный рабочий стол).

Статья делится на четыре части:

Читать далее

Удаленное подключение и использование BGInfo

В корпоративных сетях для технической поддержки рабочих станций часто используется подключение к удаленному рабочему столу. Однако для этого нужно знать либо имя машины (hostname), либо ее адрес. В данной статье будет рассказано про использования подключения по удаленному рабочему столу (RDP), а также использования утилиты BGInfo для вычисления ip-адреса машины.

Статья делится на две части:

  1. Требования для успешного подключения к удаленному рабочему столу:
    • Учетная запись должна состоять в группе Remote Desktop Users
    • Открыт порт RDP – 3389
    • Включена возможность удаленного администрирования

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

  2. Открываем порт 3389 в брандмауэре для подключения по RDPComputer Configuration -> Polices -> Administrative Templates -> Network -> Network Connections -> Windows Firewall -> Domain Profile -> Windows Firewall: Allow inbound Remote Desktop exceptions (для Windows XP SP2 и выше). Включить и указать диапазон ip-адресов с которых возможно подключение.
  3. Computer configuration -> Polices -> Windows settings -> Security settings -> Windows firewall with advanced security -> Inbound rules -> New Rule -> Predefined: Remote Desktop -> Allow the connection (для Vista, 7 и выше)

  4. Включаем возможность удаленного помощника и удаленного администрированияComputer Configuration -> Polices -> Administrative Templates -> System -> Offer Remote Assistance -> Allow helpers to remotely control the computer

    Computer Configuration -> Polices -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Allow users to connect remotely using Remote Desktop Services

  5. Установка программы BGInfo на удаленных компьютерахПрограмма BgInfo написана Марком Руссиновичем и (Mark Russinovich) и позволяет выводить на рабочий стол различие параметры компьютера включая имя машины, ip-адрес, текущего пользователя, версию ОС и т.д. Более подробно о программе можно почитать по адресу http://technet.microsoft.com/en-us/sysinternals/bb897557

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

    \BGInfo.exe профиль.bgi

    Алгоритм использование BGinfo в доменной сети:

    • настроить профиль и сохранить его в файл *.bgi
    • создать сетевую папку доступную пользователям для чтения и скопировать в нее файлы программы и настроенный профиль
      - открыть блокнот и в него прописать
    • \BGInfo.exe профиль.bgi /timer:0 /silent /nolicprompt

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

    • сохранить файл с расширением *.bat и скопировать его в созданную сетевую папку
    • создать новый объект групповой политики и указать в нем путь до загрузочного скрипта в User Configuration -> Polices -> Windows Settings -> Scripts (logon/logoff) -> logon

    • привязать созданную групповую политику к OU с пользователями

Обрезка белых полей в PDF

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

Существуют несколько программ (как бесплатных, так и не очень), которые позволяют обрезать лишние поля в PDF, оставив только текст (англ. crop margins). Одной из них является программа soPDF написанная участником форума mobileread . Ее недостаток (для кого-то), то, что она полностью консольная. Поэтому сразу после ее выхода начали появляться многочисленные графические интерфейсы к ней. Кому интересно самому лично ознакомиться предлагаю почитать соответствующую тему на форуме. Здесь же я приведу ссылку на приглянувшуюся именно мне связку soPDF + GUI.

Подводя итоги, всем кто искал программу для обрезки белых полей в PDF рекомендую воспользоваться soPDF+GUI by gdsense.
Программа написана на C# и для своей работы требует предустановленного .Net Framework 3.5.

GPO замыкания пользовательской политики / User Group Policy Loopback processing mode

Видно, что вы сами не до конца понимаете, как работает Loopback processing mode и Security Filtering.

Когда GPO линкуется к какому-то OU, то по умолчанию политики из раздела Computer Configuration данной GPO применяются ко всем компьютерным объектам внутри этого OU (и его подконтейнеров), а политики из раздела User Configuration применяются ко всем пользовательским объектам внутри этого OU (и его подконтейнеров).

Если вы прилинкуете GPO к OU, в котором лежат только компьютерные объекты, и в этом GPO укажете какие-то настройки в разделе User Configuration, то по умолчанию эти пользовательские настройки будут проигнорированы и никем не будут использоваться (т.к. я уже указал выше, что по умолчанию к компьютерным объектам применяются только настройки из Computer Configuration).

Так вот, чтобы к пользователям, которые логинятся на какие-то машины, применялись пользовательские настройки (раздел User Configuration) из GPO, которая прилинкована к компьютерному объекту, и включается «User Group Policy Loopback processing mode».

При этом в режиме Replace пользовательские настройки (User Configuration) из других GPO, назначенных на пользовательский объект, будут отменены и будут действовать только пользовательские настройки (User Configuration) из GPO, назначенного на компьютерный объект, куда логинится пользователь.
А в режиме Merge эти настройки совместятся (ранее назначенные сохранятся, новые добавятся, конфликтующие перезапишутся). Т.е. частично у пользователя останутся настройки, назначенные на самого пользователя через другие GPO, плюс добавятся пользовательские настройки (User Configuration) из GPO, назначенного на компьютер.

Читать далее