<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1195429440083065918</id><updated>2011-11-30T18:44:53.546-08:00</updated><category term='lissyara.su'/><category term='lock flash drive'/><category term='мысли'/><category term='SQL'/><category term='eee-pc'/><category term='fuse'/><category term='wimax'/><category term='9.10'/><category term='socks'/><category term='smb'/><category term='ram'/><category term='NAS'/><category term='оптимизация'/><category term='LFS'/><category term='hot-keys'/><category term='s10-2'/><category term='смерть'/><category term='Pert'/><category term='Linux From Scratch'/><category term='md5sum'/><category term='DNS-323'/><category term='opennet.ru'/><category term='torrent'/><category term='увеличение &quot;жизни&quot; диска'/><category term='NortonAntivirus'/><category term='Scaling'/><category term='kdevelop'/><category term='дубликаты'/><category term='cpu'/><category term='запретить'/><category term='gconf-editor'/><category term='ускорение'/><category term='ActiveDirectory'/><category term='linux'/><category term='xml'/><category term='MSSQL'/><category term='Информационная безопасность'/><category term='ssd'/><category term='basic'/><category term='usb'/><category term='wifi'/><category term='mandriva'/><category term='lenovo'/><category term='mount'/><category term='Itsecure'/><category term='fdupes'/><category term='FreeBSD'/><category term='transmission'/><category term='pcbsd'/><category term='kde'/><category term='LDAP'/><category term='editor'/><category term='s10'/><category term='jobs'/><category term='xml editor'/><category term='анекдоты'/><category term='InfoWatch'/><category term='файлы'/><category term='gconf'/><category term='desktopbsd'/><category term='друзья'/><category term='грусть'/><category term='Frequency'/><category term='ubuntu'/><category term='md5'/><category term='AD'/><category term='ftp'/><category term='Рабочий стол'/><category term='ссылки'/><category term='Приколы'/><title type='text'>Компьютерные записки</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-358229425154979173</id><published>2011-09-29T21:41:00.000-07:00</published><updated>2011-09-29T22:32:48.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AD'/><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveDirectory'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>MS SQL и LDAP запрос.</title><content type='html'>Всем добрый день.&lt;br /&gt;Рано или поздно вам возможно придется столкнуться с запросом к ActiveDirectory.&lt;br /&gt;Собственно сам рецепт запроса прост:&lt;br /&gt;&lt;br /&gt;Либо так:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; primaryGroupID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupToken,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeid,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sAMAccountName,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[name],&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adspath,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGUID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;FROM   OPENQUERY&lt;/font&gt; (ADSI, &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''LDAP://DC=MYDOMAIN,DC=RU''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''Group''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;); &lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Либо так:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; primaryGroupID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupToken,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeid,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sAMAccountName,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[name],&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adspath,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGUID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;FROM   OPENQUERY&lt;/font&gt; (ADSI, N&lt;font color="#A31515"&gt;'&amp;lt;LDAP://DC=MORTON,DC=RU&amp;gt;;(&amp;amp;(objectClass=User)(objectCategory=Person)(|(sAMAccountName=a*)(sAMAccountName=b*)(sAMAccountName=c*)));primaryGroupID,&amp;nbsp;primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName,&amp;nbsp;name,&amp;nbsp;adspath,&amp;nbsp;objectGUID,&amp;nbsp;info'&lt;/font&gt;);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Но что делать если у вас в каталоге количество записей много? Хотя бы пара тысяч. Вот тут поможет мой рецептик, до нельзя простой.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; @samAccountname &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(64)&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; @query &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(4000)&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; @rc &lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (object_id(&lt;font color="#A31515"&gt;'tempdb..#usersgrps'&lt;/font&gt;) &lt;font color="#0000ff"&gt;is not null&lt;/font&gt;) &lt;font color="#0000ff"&gt;drop table&lt;/font&gt; #usersgrps&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;CREATE TABLE&lt;/font&gt; #usersgrps (&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id                &lt;font color="#0000ff"&gt;INT            IDENTITY&lt;/font&gt;,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupID    &lt;font color="#0000ff"&gt;INT&lt;/font&gt;           ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupToken &lt;font color="#0000ff"&gt;INT&lt;/font&gt;           ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeid        &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt; (15)  ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sAMAccountName    &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt; (64)  ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;username          &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt; (1000),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adspath           &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt; (1000),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isprocessed       &lt;font color="#0000ff"&gt;INT&lt;/font&gt;           ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sid               VARBINARY (50),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info              &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt; (200) ,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isgroup           &lt;font color="#0000ff"&gt;BIT&lt;/font&gt;           &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt; #usersgrps (primaryGroupID, primaryGroupToken, employeeid, sAMAccountName, username, adspath, isprocessed, sid, info, isgroup)&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;SELECT TOP&lt;/font&gt; 900 primaryGroupID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupToken,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeid,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sAMAccountName,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGUID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear](info),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;FROM OPENQUERY&lt;/font&gt;(ADSI,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''LDAP://DC=MYDOMAIN,DC=RU''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''User''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt; @rc = &lt;font color="#cc6633"&gt;@@rowcount&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @samAccountname = &lt;font color="#0000ff"&gt;max&lt;/font&gt;(sAMAccountName) &lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt; #usersgrps&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt; isgroup = 0&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''''LDAP://DC=MYDOMAIN,DC=RU''''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''''User''''&amp;nbsp;and&amp;nbsp;samAccountname&amp;nbsp;&amp;gt;&amp;nbsp;'''''&lt;/font&gt;+@samAccountname+&lt;font color="#A31515"&gt;'''''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;TOP&amp;nbsp;900&amp;nbsp;primaryGroupID,&amp;nbsp;primaryGroupToken,&amp;nbsp;employeeid,&amp;nbsp;sAMAccountName,&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&amp;nbsp;0,&amp;nbsp;objectGUID,&amp;nbsp;[dbo].[f_string_ad_clear](info),&amp;nbsp;0&amp;nbsp;FROM&amp;nbsp;OPENQUERY(ADSI,&amp;nbsp;'''&lt;/font&gt; + @query + &lt;font color="#A31515"&gt;''')'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;while&lt;/font&gt; @rc &amp;gt; 0&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;begin&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt; #usersgrps (primaryGroupID, primaryGroupToken, employeeid, sAMAccountName, username, adspath, isprocessed, sid, info, isgroup)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;exec&lt;/font&gt; (@query )&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;set&lt;/font&gt; @rc = &lt;font color="#cc6633"&gt;@@rowcount&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @samAccountname = &lt;font color="#0000ff"&gt;max&lt;/font&gt;(sAMAccountName) &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;from&lt;/font&gt; #usersgrps&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;where&lt;/font&gt; isgroup = 0&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''''LDAP://DC=MYDOMAIN,DC=RU''''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''''User''''&amp;nbsp;and&amp;nbsp;samAccountname&amp;nbsp;&amp;gt;&amp;nbsp;'''''&lt;/font&gt;+@samAccountname+&lt;font color="#A31515"&gt;'''''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;TOP&amp;nbsp;900&amp;nbsp;primaryGroupID,&amp;nbsp;primaryGroupToken,&amp;nbsp;employeeid,&amp;nbsp;sAMAccountName,&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&amp;nbsp;0,&amp;nbsp;objectGUID,&amp;nbsp;[dbo].[f_string_ad_clear](info),&amp;nbsp;0&amp;nbsp;FROM&amp;nbsp;OPENQUERY(ADSI,&amp;nbsp;'''&lt;/font&gt; + @query + &lt;font color="#A31515"&gt;''')'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt; #usersgrps (primaryGroupID, primaryGroupToken, employeeid, sAMAccountName, username, adspath, isprocessed, sid, info, isgroup)&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;SELECT TOP&lt;/font&gt; 900 primaryGroupID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryGroupToken,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeid,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sAMAccountName,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGUID,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[dbo].[f_string_ad_clear](info),&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;FROM OPENQUERY&lt;/font&gt;(ADSI,&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''LDAP://DC=MYDOMAIN,DC=RU''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''Group''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt; @rc = &lt;font color="#cc6633"&gt;@@rowcount&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @samAccountname = &lt;font color="#0000ff"&gt;max&lt;/font&gt;(sAMAccountName) &lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt; #usersgrps&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt; isgroup = 1&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''''LDAP://DC=MYDOMAIN,DC=RU''''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''''Group''''&amp;nbsp;and&amp;nbsp;samAccountname&amp;nbsp;&amp;gt;&amp;nbsp;'''''&lt;/font&gt;+@samAccountname+&lt;font color="#A31515"&gt;'''''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;TOP&amp;nbsp;900&amp;nbsp;primaryGroupID,&amp;nbsp;primaryGroupToken,&amp;nbsp;employeeid,&amp;nbsp;sAMAccountName,&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&amp;nbsp;0,&amp;nbsp;objectGUID,&amp;nbsp;[dbo].[f_string_ad_clear](info),&amp;nbsp;1&amp;nbsp;FROM&amp;nbsp;OPENQUERY(ADSI,&amp;nbsp;'''&lt;/font&gt; + @query + &lt;font color="#A31515"&gt;''')'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;while&lt;/font&gt; @rc &amp;gt; 0&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;begin&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt; #usersgrps (primaryGroupID, primaryGroupToken, employeeid, sAMAccountName, username, adspath, isprocessed, sid, info, isgroup)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;exec&lt;/font&gt; (@query )&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;set&lt;/font&gt; @rc = &lt;font color="#cc6633"&gt;@@rowcount&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @samAccountname = &lt;font color="#0000ff"&gt;max&lt;/font&gt;(sAMAccountName) &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;from&lt;/font&gt; #usersgrps&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;where&lt;/font&gt; isgroup = 1&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;name,adspath,objectGUID,info,primaryGroupID,primaryGroupToken,employeeid,&amp;nbsp;sAMAccountName&amp;nbsp;FROM&amp;nbsp;''''LDAP://DC=MYDOMAIN,DC=RU''''&amp;nbsp;WHERE&amp;nbsp;objectCategory=''''Group''''&amp;nbsp;and&amp;nbsp;samAccountname&amp;nbsp;&amp;gt;&amp;nbsp;'''''&lt;/font&gt;+@samAccountname+&lt;font color="#A31515"&gt;'''''&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;samAccountname'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @query = &lt;font color="#A31515"&gt;'SELECT&amp;nbsp;TOP&amp;nbsp;900&amp;nbsp;primaryGroupID,&amp;nbsp;primaryGroupToken,&amp;nbsp;employeeid,&amp;nbsp;sAMAccountName,&amp;nbsp;[dbo].[f_string_ad_clear]([name]),&amp;nbsp;[dbo].[f_string_ad_clear](adspath),&amp;nbsp;0,&amp;nbsp;objectGUID,&amp;nbsp;[dbo].[f_string_ad_clear](info),&amp;nbsp;1&amp;nbsp;FROM&amp;nbsp;OPENQUERY(ADSI,&amp;nbsp;'''&lt;/font&gt; + @query + &lt;font color="#A31515"&gt;''')'&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;print&lt;/font&gt; @query &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; * &lt;font color="#0000ff"&gt;from&lt;/font&gt; #usersgrps &lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-358229425154979173?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/358229425154979173/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=358229425154979173' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/358229425154979173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/358229425154979173'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/09/ms-sql-ldap.html' title='MS SQL и LDAP запрос.'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8865624788782009645</id><published>2011-08-24T21:52:00.000-07:00</published><updated>2011-08-24T22:58:39.835-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hot-keys'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Hot keys SQL Server Management Studio</title><content type='html'>Еще одна вещь которая облегчает жизь, оригинал тут : http://msdn.microsoft.com/ru-ru/library/ms174205.aspx или http://msdn.microsoft.com/en-us/library/ms174205.aspx&lt;br /&gt;тут нет никакой отсебятины, только копия полезной статьи.&lt;br /&gt;Среда Среда SQL Server Management Studio предоставляет пользователям две схемы сочетаний клавиш. По умолчанию используется стандартная схема, при этом сочетания клавиш аналогичны применяемым в среде Microsoft Visual Studio. Вторая схема, называемая схемой SQL Server 2000, напоминает средства SQL Server 2000, в частности сочетания клавиш в программе Query Analyzer. Среда Среда SQL Server Management Studio поддерживает не все сочетания клавиш программы Query Analyzer. Чтобы изменить клавиатурную схему или добавить новые сочетания клавиш, выберите в меню Сервис пункт Параметры. Выберите предпочтительную клавиатурную схему на вкладке Среда страницы Клавиатура.&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для активации элементов меню&lt;/b&gt;&lt;/thead&gt;&lt;tr align="center"&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Активировать строку меню среды Среда SQL Server Management Studio&lt;/td&gt;&lt;td align="center"&gt;ALT&lt;/td&gt;&lt;td align="center"&gt;ALT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть меню компонента средства&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ДЕФИС&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ДЕФИС&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить контекстное меню&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F10&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Создать файл&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Создать проект для создания нового проекта&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Открыть файл для открытия существующего файла&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;O&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;INS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Открыть проект для открытия существующего проекта&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;O&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Добавить новый элемент для добавления нового файла в текущий проект&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;A&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Добавить существующий элемент для добавления существующего файла в текущий проект&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;A&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно конструктора запросов&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;Q&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;Q&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Закрыть меню &lt;br&gt;или&lt;br&gt; диалоговое окно, отменив выполнение действия&lt;/td&gt;&lt;td align="center"&gt;ESC&lt;/td&gt;&lt;td align="center"&gt;ESC&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для управления окнами и панелью инструментов&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Закрыть текущее дочернее окно MDI-приложения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Печать&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выход&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключиться в полноэкранный режим&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Закрыть окно текущего средства&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ESC&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ESC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к следующему дочернему окну MDI-приложения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к предыдущему дочернему окну MDI-приложения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Активировать панель инструментов окна текущего средства&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к окну следующего средства&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к окну, выбранному в предыдущий раз&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть новое окно редактора запросов&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;O&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно обозревателя объектов&lt;/td&gt;&lt;td align="center"&gt;F8&lt;/td&gt;&lt;td align="center"&gt;F8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно зарегистрированных серверов&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;G&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно обозревателя шаблонов&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно обозревателя решений&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно сводки&lt;/td&gt;&lt;td align="center"&gt;F7&lt;/td&gt;&lt;td align="center"&gt;F7&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно свойств&lt;/td&gt;&lt;td align="center"&gt;F4&lt;/td&gt;&lt;td align="center"&gt;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключение между представлением списка сведений обозревателя объектов и областью свойств обозревателя объектов.&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Управление разбивкой, которая разделяет представление списка сведений обозревателя объектов и область свойств обозревателя объектов, для настройки размера области отображения.&lt;/td&gt;&lt;td align="center"&gt;TAB&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;br&gt;или&lt;br&gt;TAB&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить область элементов&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;X&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;X&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно закладок&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;W&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно браузера&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно «Список ошибок» (только редактор Transact-SQL)&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;\, CTRL&amp;nbsp;+&amp;nbsp;E&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;\, CTRL&amp;nbsp;+&amp;nbsp;E&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для перемещения курсора&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одну позицию влево&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одну позицию вправо&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одну позицию вверх&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одну позицию вниз&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;td align="center"&gt;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор в начало строки&lt;/td&gt;&lt;td align="center"&gt;HOME&lt;/td&gt;&lt;td align="center"&gt;HOME&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор в конец строки&lt;/td&gt;&lt;td align="center"&gt;END&lt;/td&gt;&lt;td align="center"&gt;END&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор в начало документа&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор в конец документа&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на один экран вверх&lt;/td&gt;&lt;td align="center"&gt;PAGE UP&lt;/td&gt;&lt;td align="center"&gt;PAGE UP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на один экран вниз&lt;/td&gt;&lt;td align="center"&gt;PAGE DOWN&lt;/td&gt;&lt;td align="center"&gt;PAGE DOWN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одно слово вправо&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одно слово влево&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для выделения текста&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить текст от начала документа до курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить текст от позиции курсора до конца документа&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить текст от начала текущей строки до курсора&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;HOME&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить текст от курсора до конца текущей строки&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;END&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделять текст по одной строке вниз, начиная от курсора&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделять текст по одной строке вверх, начиная от курсора&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ВВЕРХ&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ВВЕРХ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одну строку вверх с расширением блока выделенного текста&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Расширить блок выделенного текста на одну страницу вверх&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;PAGE UP&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;PAGE UP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Расширить блок выделенного текста на одну страницу вниз&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;PAGE DOWN&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;PAGE DOWN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить весь документ&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;A&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить слово, на котором находится курсор, &lt;br&gt;или&lt;br&gt; ближайшее к курсору слово&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;W&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;W&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выделить в редакторе блок текста от текущей до предыдущей позиций курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;=&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;=&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Расширить блок выделенного текста до верха текущего окна&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;PAGE UP&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;PAGE UP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор в последнюю видимую на экране строку с расширением выделенного блока текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;PAGE DOWN&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;PAGE DOWN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Расширить блок выделенного текста на одно слово вправо&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Расширить блок выделенного текста на одно слово влево&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одно слово вправо с расширением блока выделенного текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить курсор на одно слово влево с расширением блока выделенного текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВЛЕВО&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для закладок&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Установить закладку на текущей строке &lt;br&gt;или&lt;br&gt; удалить ее&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;K&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к следующей закладке&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;td align="center"&gt;F2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к предыдущей закладке&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Очистить закладки&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F2&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для управления деревьями&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Свернуть узлы дерева&lt;/td&gt;&lt;td align="center"&gt;— (на цифровой клавишной панели)&lt;/td&gt;&lt;td align="center"&gt;— (на цифровой клавишной панели)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Развернуть все узлы дерева&lt;/td&gt;&lt;td align="center"&gt;* (на цифровой клавишной панели)&lt;/td&gt;&lt;td align="center"&gt;* (на цифровой клавишной панели)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Прокрутить дерево вверх&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Прокрутить дерево вниз&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш редактора кода&lt;/b&gt;&lt;br&gt;Отдельные редакторы кода могут поддерживать не все сочетания клавиш.&lt;/thead&gt;&lt;tr&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключиться в полноэкранный режим &lt;br&gt;или&lt;br&gt; выйти из него&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Прокрутить текст вверх на одну строку&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВВЕРХ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Прокрутить текст вниз на одну строку&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;СТРЕЛКА ВНИЗ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отменить последнее действие по изменению кода&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;Z&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;Z&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Восстановить отмененное действие&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;Z &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;Y &lt;br&gt;или&lt;br&gt; ALT&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;Z &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;Y &lt;br&gt;или&lt;br&gt; ALT&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить текст указанного файла в текущее окно&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;/tr&gt;&lt;!--&lt;tr&gt;&lt;td align="left"&gt;Примечание&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;При вставке файла в окно название окна остается прежним.&lt;/td&gt;&lt;/tr&gt; --&gt;&lt;tr&gt;&lt;td align="left"&gt;Сохранить выбранный элемент&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Сохранить все&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Закрыть&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Печать&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выход&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить весь текст из текущего файла&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;DEL&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;DEL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Переход к строке&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;G&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;G&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Увеличить отступ перед строкой&lt;/td&gt;&lt;td align="center"&gt;TAB&lt;/td&gt;&lt;td align="center"&gt;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Уменьшить отступ перед строкой&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Преобразовать выделенный текст в верхний регистр.&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;U&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;U&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Преобразовать выделенный текст в нижний регистр&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Сделать выделенный текст примечанием&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;C&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;C&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Снять комментарий с выделенного текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K, CTRL&amp;nbsp;+&amp;nbsp;U&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть новый запрос в контексте текущего соединения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;Q&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть базу данных в обозревателе объектов&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F8&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Указать значения параметров шаблона&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;M&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;M&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выполнить фрагмент кода, выделенный в редакторе запросов, &lt;br&gt;или&lt;br&gt; весь код, находящийся в редакторе запросов, если ничего не выделено&lt;/td&gt;&lt;td align="center"&gt;F5 &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;E &lt;br&gt;или&lt;br&gt; ALT&amp;nbsp;+&amp;nbsp;X&lt;/td&gt;&lt;td align="center"&gt;F5 &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;E &lt;br&gt;или&lt;br&gt; ALT&amp;nbsp;+&amp;nbsp;X&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выполнить синтаксический анализ фрагмента кода, выделенного в редакторе запросов, &lt;br&gt;или&lt;br&gt; всего кода, находящегося в редакторе запросов, если ничего не выделено&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F5&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить предполагаемый план выполнения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отменить выполняемый запрос&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;BREAK&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;BREAK&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Включить действительный план выполнения в данные, выведенные запросом&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;M&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть диалоговое окно Параметр запроса&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;O&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вывести результаты в сетку&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;D&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;D&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вывести результаты в текстовом формате&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вывести результаты в файл&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить &lt;br&gt;или&lt;br&gt; скрыть панель результатов выполнения запроса&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключение между панелями запроса и результатов выполнения запроса&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к следующему активному окну в Management Studio &lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Скрыть все автоматически&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Окна&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;W&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть приложение Приложение SQL Server Profiler&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;P&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для работы с текстом в редакторе кода&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить символ переноса строки&lt;/td&gt;&lt;td align="center"&gt;ВВОД &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;ВВОД &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Поменять местами два символа, расположенные слева и справа от курсора (неприменимо в редакторе SQL)&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить символ, расположенный справа от курсора&lt;/td&gt;&lt;td align="center"&gt;DELETE&lt;/td&gt;&lt;td align="center"&gt;DELETE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить символ, расположенный слева от курсора&lt;/td&gt;&lt;td align="center"&gt;BACKSPACE &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;td align="center"&gt;BACKSPACE &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить в текст последовательность пробелов, длина которой указана в настройках редактора&lt;/td&gt;&lt;td align="center"&gt;TAB&lt;/td&gt;&lt;td align="center"&gt;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить в текст пустую строку выше курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить в текст пустую строку ниже курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Преобразовать выделенный текст в нижний регистр&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Преобразовать выделенный текст в верхний регистр&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;U&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;U&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключение между режимами вставки и замены текста&lt;/td&gt;&lt;td align="center"&gt;INSERT&lt;/td&gt;&lt;td align="center"&gt;INSERT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переместить выделенные строки к левой позиции табуляции&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить слово, расположенное справа от курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;DELETE&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;DELETE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить слово, расположенное слева от курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;BACKSPACE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Поменять местами слова, расположенные слева и справа от курсора (неприменимо в редакторе SQL)&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;T&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш отладчика Transact-SQL&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;td align="left"&gt;Действие&lt;/td&gt;&lt;td align="center"&gt;Standard&lt;/td&gt;&lt;td align="center"&gt;SQL Server 2000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Начать &lt;br&gt;или&lt;br&gt; продолжить отладку&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F5&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Остановить отладку&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F5&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Шаг с заходом&lt;/td&gt;&lt;td align="center"&gt;F11&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Шаг с обходом&lt;/td&gt;&lt;td align="center"&gt;F10&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Шаг с выходом&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F11&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Реализация команды Выполнить до курсора&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F10&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Контрольное значениеQuickWatch.&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;Q&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключить точку останова&lt;/td&gt;&lt;td align="center"&gt;F9&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Удалить все точки останова&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F9&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Точки останова&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;B&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Приостановить все&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;BREAK&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Просмотр значений 1&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;W, 1&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Просмотр значений 2&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;W, 2&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Просмотр значений 3&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;W, 3&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Просмотр значений 4&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;W, 4&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Автоматические значения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;V, A&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Локальные значения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;V, L&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Интерпретация&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;I&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Стек вызова&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;C&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно Потоки&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;H&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для технологии Microsoft IntelliSense&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Показать список элементов&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ПРОБЕЛ &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;J&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;J&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Дополнить слово&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Сведения о параметрах&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;ПРОБЕЛ&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Обновление локального кэша&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти между синтаксическими парами&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;]&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для окна документов и браузера&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключиться в полноэкранный режим &lt;br&gt;или&lt;br&gt; выйти из него&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к следующей панели представления документа с разделенными панелями&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к предыдущему документу в редакторе &lt;br&gt;или&lt;br&gt; конструкторе&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F6 CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F6 CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;TAB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти к предыдущей панели документа в представлении с разделенными панелями&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно браузера&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить предыдущую страницу в журнале просмотра страниц&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВЛЕВО&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВЛЕВО&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить следующую страницу в журнале просмотра страниц&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВПРАВО&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;ВПРАВО&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш обозревателя решений&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить окно обозревателя решений&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Создать файл&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;INS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Создать проект для создания нового проекта&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Открыть файл для открытия существующего файла&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;O&lt;/td&gt;&lt;td align="center"&gt;Нет эквивалента&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для работы со справкой и электронной документацией&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Справка&lt;/td&gt;&lt;td align="center"&gt;F1&lt;/td&gt;&lt;td align="center"&gt;F1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Справка по разделу «Инструкции»&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F1&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выбрать в электронной документации вкладку «Оглавление»&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F1&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Выбрать в электронной документации вкладку «Указатель»&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F2&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть в справочной системе окно поиска&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Динамическая справка&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Избранные разделы справки&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;ALT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для поиска&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Найти&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Заменить&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;H&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;H&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Начать последовательный поиск. Введите последовательность символов, которую нужно найти, &lt;br&gt;или&lt;br&gt; нажмите CTRL&amp;nbsp;+&amp;nbsp;I для поиска тех же символов, что и в предыдущий раз.&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;I&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Найти следующее вхождение искомой последовательности символов в текст&lt;/td&gt;&lt;td align="center"&gt;F3&lt;/td&gt;&lt;td align="center"&gt;F3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Найти предыдущее вхождение искомого текста&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;td align="center"&gt;SHIFT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Найти следующее вхождение выделенного текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Найти предыдущее вхождение выделенного текста&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отобразить диалоговое окно Заменить в файлах&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;H&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;H&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Изменить направление поиска с уточнением критериев, чтобы он выполнялся от конца файла к началу&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;I&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;I&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Установить &lt;br&gt;или&lt;br&gt; снять флажок Искать вверх в диалоговом окне Найти и заменить&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, B&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Остановить выполнение операции Найти в файлах&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, S&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Установить &lt;br&gt;или&lt;br&gt; снять флажок Искать слово в диалоговом окне Найти и заменить&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, W&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, W&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Установить &lt;br&gt;или&lt;br&gt; снять флажок Шаблон в диалоговом окне Найти и заменить.&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, P&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;F3, P&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш для вырезания и вставки текста&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вырезать (удалить выделенный элемент и поместить его в буфер обмена)&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;X &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;DELETE&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;X &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;DELETE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Скопировать данные в буфер обмена&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;C &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;INSERT&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;C &lt;br&gt;или&lt;br&gt; CTRL&amp;nbsp;+&amp;nbsp;INSERT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Вставить данные из буфера обмена в позицию вставки&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;V &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;INSERT&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;V &lt;br&gt;или&lt;br&gt; SHIFT&amp;nbsp;+&amp;nbsp;INSERT&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш средства просмотра журналов&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Обновить&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Переключаться между панелями Выбор журналов и Сведения журнала&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Перейти на панель Сведения журнала&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;td align="center"&gt;ALT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Загрузить новый журнал&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Экспортировать журнал&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;E&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;E&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отфильтровать журнал&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Поиск в журнале&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;S&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш монитора активности&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Обновить&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Отфильтровать отображаемые монитором сведения&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;td align="center"&gt;CTRL&amp;nbsp;+&amp;nbsp;SHIFT&amp;nbsp;+&amp;nbsp;F&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш монитора репликации&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Обновить&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;td align="center"&gt;F5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Открыть окно сведений из сетки&lt;/td&gt;&lt;td align="center"&gt;ВВОД&lt;/td&gt;&lt;td align="center"&gt;ВВОД&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;thead align="right"&gt;&lt;b&gt;Сочетания клавиш средства просмотра конфликтов репликации&lt;/b&gt;&lt;/thead&gt;&lt;tr&gt;&lt;th&gt;Действие&lt;/th&gt;&lt;th&gt;Стандартная схема&lt;/th&gt;&lt;th&gt;Схема SQL Server 2000&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Определить фильтр&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;td align="center"&gt;F6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Применить фильтр&lt;/td&gt;&lt;td align="center"&gt;F7&lt;/td&gt;&lt;td align="center"&gt;F7&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Показать все столбцы&lt;/td&gt;&lt;td align="center"&gt;F8&lt;/td&gt;&lt;td align="center"&gt;F8&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8865624788782009645?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8865624788782009645/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8865624788782009645' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8865624788782009645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8865624788782009645'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/08/hot-keys-sql-server-management-studio.html' title='Hot keys SQL Server Management Studio'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-261340917371645133</id><published>2011-07-22T03:58:00.000-07:00</published><updated>2011-07-22T05:41:30.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='оптимизация'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Оптимизация запросов - убираем корреляцию в запросах.</title><content type='html'>Собственно нашел давно картинку, которая очень помогает в решении задач по оптимизации.&lt;br /&gt;Например когда надо проверить (не)существование значений в другой таблице по заданным параметрам.&lt;br /&gt;&lt;br /&gt;Самый простой вариант НЕ ПРАВИЛЬНЫХ запросов выглядит следующим образом&lt;br /&gt;Вывести строки из t1, на которые есть ссылки в таблице t2&lt;br /&gt;&lt;blockquote&gt;select * from t1&lt;br /&gt;where exists(select * from t2 where t2.t1id = t1.id)&lt;/blockquote&gt;&lt;br /&gt;или на оборот, &lt;br /&gt;&lt;blockquote&gt;select * from t1&lt;br /&gt;where not exists(select * from t2 where t2.t1id = t1.id)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;некоторые программисты начали пытаться ускорить код следующиими вариантами&lt;br /&gt;&lt;blockquote&gt;select * from t1&lt;br /&gt;where exists(select top 1 1 from t2 where t2.t1id = t1.id)&lt;/blockquote&gt;&lt;br /&gt;или на оборот, &lt;br /&gt;&lt;blockquote&gt;select * from t1&lt;br /&gt;where not exists(select top 1 1 from t2 where t2.t1id = t1.id)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Честно говоря я понимаю что есть ситуации когда без таких конструкций не обойтись, и в моей практике такое тоже встречалось. Но все же лучше пользоваться "умножения" таблиц&lt;br /&gt;Получение строк, на которые есть ссылки в подчиненной таблице&lt;br /&gt;&lt;blockquote&gt;select distinct t1.*&lt;br /&gt;from t1 &lt;blockquote&gt;inner join t2 on t2.t1id = t1.id&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;И получение строк, на которые нет ссылок в подчиненной таблице&lt;br /&gt;&lt;blockquote&gt;select distinct t1.*&lt;br /&gt;from t1 &lt;br /&gt;&lt;blockquote&gt;left join t2 on t2.t1id = t1.id&lt;/blockquote&gt;where t2.id is null&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Вобщем пользуйтесь на здоровье, и избегайте не нужной работы серверов&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-mj4KbBBjM9g/Tila8DzMfoI/AAAAAAAAAEM/mOdU_31eg4I/s1600/Visual_SQL_JOINS_orig.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-mj4KbBBjM9g/Tila8DzMfoI/AAAAAAAAAEM/mOdU_31eg4I/s400/Visual_SQL_JOINS_orig.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5632132796862201474" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-261340917371645133?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/261340917371645133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=261340917371645133' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/261340917371645133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/261340917371645133'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/07/blog-post_22.html' title='Оптимизация запросов - убираем корреляцию в запросах.'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-mj4KbBBjM9g/Tila8DzMfoI/AAAAAAAAAEM/mOdU_31eg4I/s72-c/Visual_SQL_JOINS_orig.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-1295145606043127915</id><published>2011-07-22T01:46:00.000-07:00</published><updated>2011-07-22T05:39:45.986-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='оптимизация'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Оптимизация запросов - убираем TOP 1</title><content type='html'>Иногда бывает необходимо получить только некие "верхние" записи из подчиненной таблицы&lt;br /&gt;Кто-то делает так:&lt;br /&gt;&lt;blockquote&gt;select *&lt;br /&gt;&lt;blockquote&gt;, (select top 1 t2.id from t2 where t1Id = t1.id)&lt;br /&gt;, (select top 1 t2.someData from t2 where t1Id = t1.id)&lt;br /&gt;&lt;/blockquote&gt;from t1&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Чем плох такой вариант? А плох он следующим.&lt;br /&gt;Мы ориентируемся на некое "верхнее" значение, которое может не относиться в нужной нам последовательности в итоге.&lt;br /&gt;Кроме этого, у нас может возникнуть ситуация когда вызовы "верхнего" значения будут относиться к разным строкам таблицы.&lt;br /&gt;Что тогда будете делать?&lt;br /&gt;Поэтому я предлагаю использовать агрегирующий подзапрос&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;select *&lt;br /&gt;from t1&lt;br /&gt;&lt;blockquote&gt;inner join (select max(id) id, t1Id from t2 group by t1Id) T2i on t1.id = T2i.t1Id&lt;br /&gt;inner join t2 on t2.id = T2i.id&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;В большинстве своем мы получим более лучший план запроса, эффективность во времени, предсказуемость (точность) результата.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-1295145606043127915?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/1295145606043127915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=1295145606043127915' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1295145606043127915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1295145606043127915'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/07/top-1.html' title='Оптимизация запросов - убираем TOP 1'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-3244983573135234335</id><published>2011-07-05T03:33:00.000-07:00</published><updated>2011-07-22T13:13:26.448-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Уровни изоляции в MS SQL - READ UNCOMMITTED</title><content type='html'>&lt;div&gt;&lt;b&gt;READ UNCOMMITTED&lt;/b&gt;&lt;br /&gt;Уровень изоляции READ UNCOMMITTED позволяет читать данные, измененные другими транзакциями, но еще не зафиксированными. Транзакции, запущенные с таким уровнем изоляции, не блокируют строки/объекты с которыми оперируют. Чтение в таком режиме также носит название "грязное чтение".&lt;br /&gt;Так как READ UNCOMMITTED не блокирует доступ к своим объектам и может работать с заблокированными объектами, то может возникнуть ситуация, когда данные будут то появляться, то исчезать.&lt;br /&gt;&lt;br /&gt;Откроем теперь 3 окна запроса&lt;br /&gt;в 1-м окне введем:&lt;br /&gt;&lt;blockquote&gt;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED&lt;br /&gt;GO&lt;br /&gt;BEGIN TRANSACTION&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;&lt;br /&gt;update t1&lt;br /&gt;set textdata = 'thread 1'&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;GO&lt;/blockquote&gt;во 2-м окне&lt;blockquote&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITED&lt;br /&gt;GO&lt;br /&gt;BEGIN TRANSACTION&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;&lt;br /&gt;update t1&lt;br /&gt;set textdata = 'thread 2'&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;&lt;br /&gt;COMMIT TRANSACTION&lt;br /&gt;GO&lt;/blockquote&gt;&lt;br /&gt;в 3-м окне:&lt;blockquote&gt;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED&lt;br /&gt;GO&lt;br /&gt;BEGIN TRANSACTION&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;&lt;br /&gt;update t1&lt;br /&gt;set textdata = 'thread 3'&lt;br /&gt;&lt;br /&gt;select * from t1&lt;br /&gt;&lt;br /&gt;COMMIT TRANSACTION&lt;br /&gt;GO&lt;/blockquote&gt;Запустите первый пакет, потом 2-й и 3-й.&lt;br /&gt;Мы увидим, что если в 1-м пакете не закрыта транзакция, то 2-й и 3-й пакеты будут ожидать закрытия, но ожидать они будут в разных точках.&lt;br /&gt;2-й пакет будет ожидать чтения (1-й select)&lt;br /&gt;3-й пакет будет ожидать записи/обновления&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-3244983573135234335?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/3244983573135234335/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=3244983573135234335' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3244983573135234335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3244983573135234335'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/07/ms-sql-read-uncommitted.html' title='Уровни изоляции в MS SQL - READ UNCOMMITTED'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-3487199739968607031</id><published>2011-07-05T00:35:00.000-07:00</published><updated>2011-07-07T22:41:41.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Уровни изоляции в MS SQL - READ COMMITTED</title><content type='html'>Все существует 5 уровней изоляции транзакций&lt;br /&gt;&lt;blockquote&gt;READ UNCOMMITTED&lt;br /&gt;READ COMMITTED&lt;br /&gt;REPEATABLE READ&lt;br /&gt;SNAPSHOT&lt;br /&gt;SERIALIZABLE&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;READ COMMITTED&lt;/b&gt;&lt;br /&gt;В режиме READ COMMITTED инструкции sql запроса будут читать только те данные, которые были зафиксированы предыдущими/параллельными транзакциями. Если же на читаемы данные была наложена блокировка, то текущий пакет инструкций будет ожидать высвобождения ресурса. Например, есть два пакета инструкций, запущенных одновременно, рассмотрим пример, в Microsoft SQL Manegment Studio откроем 2 окна запроса, в первом запустите следующий код&lt;br /&gt;&lt;blockquote&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITTED&lt;br /&gt;GO&lt;br /&gt;BEGIN TRANSACTION&lt;br /&gt;SELECT * FROM t1&lt;br /&gt;&lt;br /&gt;UPDATE t1&lt;br /&gt;SET textdata = 'Thread_1'&lt;br /&gt;WHERE row = 1&lt;br /&gt;&lt;br /&gt;-- !!!Важно!!! - не фиксируем транзакцию&lt;br /&gt;GO&lt;/blockquote&gt;во втором запускаем аналогичный код&lt;blockquote&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITTED&lt;br /&gt;GO&lt;br /&gt;BEGIN TRANSACTION&lt;br /&gt;SELECT * FROM t1&lt;br /&gt;&lt;br /&gt;UPDATE t1&lt;br /&gt;SET textdata = 'Thread_2'&lt;br /&gt;WHERE row = 1&lt;br /&gt;&lt;br /&gt;SELECT * FROM t1&lt;br /&gt;&lt;br /&gt;COMMIT TRANSACTION&lt;br /&gt;GO&lt;/blockquote&gt;В результате, если запустить 1-й код а следом запустить 2-й, мы получим во 2-м коде ожидание завершения транзакции в первом окне.&lt;br /&gt;Добавьте в первое окно следующую строку:&lt;br /&gt;&lt;blockquote&gt;COMMIT TRANSACTION&lt;/blockquote&gt;&lt;br /&gt;И исполните только ее. Переключившись во 2-е окно мы увидим результат выполнения 2-го пакета , две выборки до изменения и после внесения изменений в таблицу t1.&lt;br /&gt;Принцип работы этих пакетов можно отобразить на временной оси.&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;момент времени&lt;/b&gt;&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;2&lt;/td&gt;&lt;td align="center"&gt;3&lt;/td&gt;&lt;td align="center"&gt;4&lt;/td&gt;&lt;td align="center"&gt;5&lt;/td&gt;&lt;td align="center"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;запрос 1&lt;/b&gt;&lt;/td&gt;&lt;td align="center"&gt;начало транзакции&lt;/td&gt;&lt;td align="center"&gt;внесение изменений&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;td align="center"&gt;фиксация изменений&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;запрос 1&lt;/b&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;td align="center"&gt;начало транзакции&lt;/td&gt;&lt;td align="center"&gt;ожидание запроса 1&lt;/td&gt;&lt;td align="center"&gt;внесение изменений&lt;/td&gt;&lt;td align="center"&gt;фиксация транзакции&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-3487199739968607031?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/3487199739968607031/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=3487199739968607031' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3487199739968607031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3487199739968607031'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/07/ms-sql.html' title='Уровни изоляции в MS SQL - READ COMMITTED'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-6736812821508209619</id><published>2011-07-05T00:30:00.000-07:00</published><updated>2011-07-05T00:35:48.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Базы Данных</title><content type='html'>Думаю придтся начать "цикл" статей по моему основному профилю - базы данных.&lt;br /&gt;Причина - надоело постоянно искать ответы на уже не однократно заданные мною вопросы.&lt;br /&gt;С одной стороны это будет handbook за моим авторством, с другой - BookOnLine, третей - перевод понравившихся статей.&lt;br /&gt;Да!!! Я не люблю редмоновского гиганта, но в большинстве своем работаю именно с ним, таковы реалии.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-6736812821508209619?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/6736812821508209619/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=6736812821508209619' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6736812821508209619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6736812821508209619'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/07/blog-post.html' title='Базы Данных'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7360892977830046594</id><published>2011-03-02T21:59:00.000-08:00</published><updated>2011-03-02T22:00:23.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='анекдоты'/><title type='text'>История дня по итогам голосования за 26 января 2011 от Анекдоты из России - Anekdot.ru</title><content type='html'>В одном из российских медицинских институтов был жутко принципиальный препод, но при этом мужик правильный и никого специально не валил, да к тому же ещё имел какой-то бизнес и как следствие взяток практически не брал. Попался ему как-то студент оболтус, ну никак не хотевший учить его предмет, соответственно этот студиозус экзамен не сдал ни с первого раза, ни со второго, ни с третьего.&lt;br /&gt;&lt;br /&gt;И вот перед четвёртой и последней пересдачей (за ней как правило следует отчисление) в кабинет к преподу заходит папаша этого студента и кладёт ему на стол ключи от чудного произведения отечественного автопрома 15-й модели со словами:&lt;br /&gt;&lt;br /&gt;- Если он сдаст, то она твоя!&lt;br /&gt;&lt;br /&gt;Препод некоторое время смотрит на папашу, потом из нагрудного кармана достает ключи от BMW Х-5 и кладёт на стол рядом с его ключами со словами:&lt;br /&gt;&lt;br /&gt;- ЕСЛИ твой сын сдаст, то она твоя!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7360892977830046594?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7360892977830046594/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7360892977830046594' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7360892977830046594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7360892977830046594'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2011/03/26-2011-anekdotru.html' title='История дня по итогам голосования за 26 января 2011 от Анекдоты из России - Anekdot.ru'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-4029833976567098184</id><published>2010-11-22T04:18:00.000-08:00</published><updated>2011-07-26T01:16:03.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pert'/><category scheme='http://www.blogger.com/atom/ns#' term='socks'/><title type='text'>Perl vs прокси Socks</title><content type='html'>&lt;div&gt;Работа с socks прокси из Perla&lt;br /&gt;&lt;br /&gt;Понядобятся следующие пакеты&lt;br /&gt;&lt;code&gt;sudo apt-get install libnet-ssleay-perl&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo cpan LWP::Protocol::socks&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Вот пример:&lt;br /&gt;&lt;code&gt;#!/usr/bin/perl&lt;br /&gt;use strict;&lt;br /&gt;use LWP::UserAgent;&lt;br /&gt; &lt;br /&gt;my $ua = LWP::UserAgent-&gt;new(&lt;br /&gt;  agent =&gt; q{Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322)},&lt;br /&gt;);&lt;br /&gt;$ua-&gt;proxy([qw/ http https /] =&gt; 'socks://localhost:9050'); # Tor proxy&lt;br /&gt;$ua-&gt;cookie_jar({});&lt;br /&gt;my $rsp = $ua-&gt;get('http://www.yahoo.com/');&lt;br /&gt;print $rsp-&gt;content;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-4029833976567098184?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/4029833976567098184/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=4029833976567098184' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/4029833976567098184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/4029833976567098184'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/11/perl-vs-socks.html' title='Perl vs прокси Socks'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-5749458760850497380</id><published>2010-11-11T01:13:00.000-08:00</published><updated>2010-11-11T05:53:23.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wimax'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Wimax 1.5 + Ubuntu 10.10</title><content type='html'>Как многие из вас знают не так давно вышла новая версия Ubuntu 10.10 и вышли драйвера драйвера под WiMAX версии 1.5, так же несколько дней назад было выпущено обновление до версии 1.5.1. Долго не подходил к этому вопросу, но сейчас задался им.&lt;br /&gt;&lt;br /&gt;И так для установки новых драйверов wimax нам понадобится&lt;br /&gt;1. Создадим каталог для наших «экспериментов»&lt;br /&gt; &lt;blockquote&gt;&lt;code&gt;mkdir ~/wimax&lt;br /&gt; cd ~/wimax&lt;/code&gt;&lt;/blockquote&gt;2. Установить несколько пакетов из репозитариев&lt;br /&gt; &lt;blockquote&gt;&lt;code&gt;sudo apt-get install libnl-dev libssl-dev patch libglib2.0-dev&lt;/code&gt;&lt;/blockquote&gt;* Если что-то пропустил не обессудьте &lt;br /&gt;3. Качаем исходники&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wget 'http://www.linuxwimax.org/Download?action=AttachFile&amp;do=get&amp;target=i2400m-fw-1.5.0.tar.bz2' -O 'i2400m-fw-1.5.0.tar.bz2'&lt;br /&gt;wget 'http://www.linuxwimax.org/Download?action=AttachFile&amp;do=get&amp;target=wimax-tools-1.4.3.tar.gz' -O 'wimax-tools-1.4.3.tar.gz'&lt;br /&gt;wget 'http://www.linuxwimax.org/Download?action=AttachFile&amp;do=get&amp;target=wimax-1.5.tar.gz' -O 'wimax-1.5.tar.gz'&lt;br /&gt;wget 'http://www.linuxwimax.org/Download?action=AttachFile&amp;do=get&amp;target=wpa_supplicant-0.6.10-generate-libeap-peer.patch' -O 'wpa_supplicant-0.6.10-generate-libeap-peer.patch'&lt;br /&gt;wget 'http://hostap.epitest.fi/releases/wpa_supplicant-0.6.10.tar.gz' -O 'wpa_supplicant-0.6.10.tar.gz'&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;4. Распаковываем&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;tar xf i2400m-fw-1.5.0.tar.bz2&lt;br /&gt;tar xf wimax-tools-1.4.3.tar.gz&lt;br /&gt;tar xf wimax-1.5.tar.gz&lt;br /&gt;tar xf wpa_supplicant-0.6.10.tar.gz&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;5. Установим i2400m firmware &lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd  i2400m-fw-1.5.0&lt;br /&gt;sudo install -o root -g root -m -644 *.sbcf /lib/firmware&lt;br /&gt;cd ..&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;6. Компилим wimax-toos&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd wimax-tools-1.4.3&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/code&gt;&lt;/blockquote&gt;* Следите внимательно за ./configure он укажет если каких-то библиотек не хватает&lt;br /&gt;7. Теперь нужно установить кусочек wpa_suplicant&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd wpa_supplicant-0.6.10&lt;br /&gt;patch -p1 &lt; PATH/wpa_supplicant-0.6.10-generate-libeap-peer.patch &lt;br /&gt;make -C src/eap_peer&lt;br /&gt;&lt;br /&gt;sudo make -C src/eap_peer install&lt;br /&gt;sudo ldconfig&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;8. Теперь приступим к WiMAX Network Service&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd wimax-1.5&lt;br /&gt;./configure --sysconfdir=/etc —with-libwimaxll=../wimax-tools-1.4.3 —prefix=/usr&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/code&gt;&lt;/blockquote&gt;* если на этапе компиляции (make) выдает ошибку вида&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;make[2]: *** [wimaxd-GenericConsole.o]&lt;/code&gt;&lt;/blockquote&gt;попробуйте этот патч&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wget 'http://excalibur.homelinux.com/wimax/wimax-1.5.patch'&lt;br /&gt;patch -p0 -i  wimax-1.5.patch&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;9. Если wimaxcu не будет стартовать, то проверьте расположение библиотек. Их могло занести в /usr/local/lib, тогда скопируйте их в /usr/lib&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo cp -r /usr/local/lib/* /usr/lib/&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;10. Список команд&lt;br /&gt;* сканирование&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wimaxcu scan&lt;/code&gt;&lt;/blockquote&gt;* коннект к Yota&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wimaxcu connect network 21&lt;/code&gt;&lt;/blockquote&gt;* коннект к Comstar&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wimaxcu connect network 41&lt;/code&gt;&lt;/blockquote&gt;IP должен быть получен автоматически.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-5749458760850497380?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/5749458760850497380/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=5749458760850497380' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5749458760850497380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5749458760850497380'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/11/wimax-15-ubuntu-1010.html' title='Wimax 1.5 + Ubuntu 10.10'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-425907808437094069</id><published>2010-11-07T22:34:00.000-08:00</published><updated>2010-11-07T22:45:43.699-08:00</updated><title type='text'>Востановление One Key Recovery</title><content type='html'>По сути, у меня была сохранена фабричная установка OKR, только не получалось ее запустить по кнопке NOVO. Размер раздела также был сохранен. Только был изменен тип ФС с 0x12 (Compaq Diagnostic) на 0x07 (HPFS/NTFS) во время установки бубна. В итоге для полного востановления необходимо было все разделы вернуть на свои места. &lt;br /&gt;Разделы я вернул на место при помощи Acronis Disk Director.&lt;br /&gt;Тип ФС вернул с помощью live-CD/USB Ubuntu, а именно fdisk.&lt;br /&gt;т.о. кнопка NOVO работает, и у меня на выходе фабричная установка Windows XP&lt;br /&gt;&lt;br /&gt;как бы пока все...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-425907808437094069?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/425907808437094069/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=425907808437094069' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/425907808437094069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/425907808437094069'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/11/one-key-recovery.html' title='Востановление One Key Recovery'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7843921678592435397</id><published>2010-04-29T21:20:00.000-07:00</published><updated>2010-04-29T22:27:21.750-07:00</updated><title type='text'>Ubuntu Lucid, первые впечатление</title><content type='html'>Вчера к шести вечера докопировал релиз Lucid'a.&lt;br /&gt;Вечером перепроверил с официальным релизом все совпало :)&lt;br /&gt;&lt;br /&gt;Ставил пока на отдельный раздел.&lt;br /&gt;Т.о. у меня сейчас XP (Ну куда уж без нее), ubuntu 8.04.4 и ubuntu 10.04.&lt;br /&gt;Баг про который все кричали на нашем форуме успешно починен. С грубом проблем нет.&lt;br /&gt;При установке не увиделись профили из других систем (. Оно и не особо нужно, но всеже для новичком будет печально. Допускаю что могло не увидиться еще потому что у меня профили в XP и 8.04 девственны пока.&lt;br /&gt;Все завелось без проблем. Не ставил только модем, за не надобностью&lt;br /&gt;Локализация внешне вся нормальная. Артефактов не замечено.&lt;br /&gt;&lt;!-- begin hidden container name=specifification --&gt;&lt;a href="#specifification" onclick="switchDiv('specifification')"&gt;Спецификация&lt;/a&gt;&lt;div id="specifification" style="display:none;"&gt;&lt;table class="spectable" cellpadding="0" cellspacing="0"&gt;&lt;colgroup class="item_col"&gt;&lt;col&gt;&lt;/colgroup&gt;&lt;colgroup class="content_col"&gt;&lt;col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Processor&lt;/td&gt;&lt;td&gt;Intel® Core™2 Duo Processor 5300&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Operating System&lt;/td&gt;&lt;td&gt;&lt;a title="" xtitle="" class="showtooltip" href="http://www.blogger.com/post-create.g?blogID=1195429440083065918#" onclick="return false;"&gt;Genuine&lt;/a&gt; Windows® XP™ Professional&lt;br /&gt;Ubuntu 8.04.4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Chipset_test&lt;/td&gt;&lt;td&gt;Intel® 945PM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Main Memory&lt;/td&gt;&lt;td&gt;DDR2- DRAM 1024MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Display&lt;/td&gt;&lt;td&gt;15.4" WXGA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Video Graphics &amp;amp; Memory&lt;/td&gt;&lt;td&gt;ATI Mobility Radeon X2300 External 128MB VRAM (DDRII VRAM*4)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hard Drive&lt;/td&gt;&lt;td&gt;SATA  120Gb&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Optical Drive&lt;/td&gt;&lt;td&gt;24/10/8/24X Combo CD-RW+DVD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Card Reader&lt;/td&gt;&lt;td&gt;One built-in 7 in one card reader support (MMC/ SD/ Mini-SD/ Memory Stick/ MS Pro/ MS-Duo/MS-Pro-Duo)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LAN&lt;/td&gt;&lt;td&gt;RTL8111 PCI Express Gigabit Ethernet&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WLAN&lt;/td&gt;&lt;td&gt;Integrated Intel® Golan 802.11a/b/g&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bluetooch&lt;/td&gt;&lt;td&gt;Bluetooth module v2.0+EDR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Video Camera&lt;/td&gt;&lt;td&gt;1.3 Camera (Optional)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;!-- end hidden container name=first --&gt;&lt;br /&gt;&lt;!-- begin hidden container name=lspci --&gt;&lt;a href="#lspci" onclick="switchDiv('lspci')"&gt;lspci&lt;/a&gt;&lt;div id="lspci" style="display:none;"&gt;&lt;code&gt;00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)&lt;br /&gt;00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03)&lt;br /&gt;00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)&lt;br /&gt;00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)&lt;br /&gt;00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02)&lt;br /&gt;00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02)&lt;br /&gt;00:1d.0 USB Controller: Intel Corporation N10/ICH7 Family USB UHCI Controller #1 (rev 02)&lt;br /&gt;00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)&lt;br /&gt;00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)&lt;br /&gt;00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)&lt;br /&gt;00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)&lt;br /&gt;00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)&lt;br /&gt;00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)&lt;br /&gt;00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)&lt;br /&gt;00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 02)&lt;br /&gt;01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon X2300&lt;br /&gt;02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)&lt;br /&gt;03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)&lt;br /&gt;06:01.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller&lt;br /&gt;06:01.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)&lt;br /&gt;06:01.2 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev 01)&lt;br /&gt;06:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 0a)&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;!-- end hidden container name=lspci --&gt;&lt;br /&gt;&lt;!-- begin hidden container name=lsusb --&gt;&lt;a href="#lsusb" onclick="switchDiv('lsusb')"&gt;lsusb&lt;/a&gt;&lt;div id="lsusb" style="display:none;"&gt;&lt;code&gt;Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 001 Device 004: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive&lt;br /&gt;Bus 001 Device 002: ID 05e1:0501 Syntek Semiconductor Co., Ltd DC-1125 Webcam&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/code&gt;&lt;/div&gt;&lt;!-- end hidden container name=lsusb --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7843921678592435397?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7843921678592435397/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7843921678592435397' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7843921678592435397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7843921678592435397'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/04/ubuntu-lucid.html' title='Ubuntu Lucid, первые впечатление'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7036690823604126155</id><published>2010-04-21T11:43:00.001-07:00</published><updated>2010-04-21T11:55:33.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='грусть'/><category scheme='http://www.blogger.com/atom/ns#' term='мысли'/><category scheme='http://www.blogger.com/atom/ns#' term='друзья'/><category scheme='http://www.blogger.com/atom/ns#' term='смерть'/><title type='text'>О грустном...</title><content type='html'>Хронология:&lt;br /&gt;Неделю назад, я видел хорошего человека. Смеялся в месте с ним. &lt;br /&gt;В субботу его не стало. &lt;br /&gt;В понедельник, когда мне сказали об этом, я не поверил.&lt;br /&gt;Сегодня его хоронили.&lt;br /&gt;&lt;br /&gt;Мысли:&lt;br /&gt;Друзья, те кто читает этот текст. Посмотрите вокруг. Рядом с вами есть друзья, коллеги, матери, жены, дети... Любите и цените их, заботьтесь о них. Встречайтесь... Общайтесь... Иначе может быть поздно.&lt;br /&gt;&lt;br /&gt;Вчера хорошему человеку, моему однокашнику исполнилось бы 28 лет. Тебе не хватило 4 дня до своего дня рождения. Нам всем будет не хватать твоей доброты и открытости. Я верю что сейчас ты в лучшем из миров. Верю что ты все равно отпраздновал свой праздник там... в Раю. Ведь такие как ты должны быть именно там.&lt;br /&gt;&lt;br /&gt;Как мне сказали, ты сделал все 3 вещи. Построил дом (пусть даже скворечник). Посадил дерево, нашу русскую березу. Родил 2-х детей. Мне было известно только о детях: сын - 5 лет и дочь - 1,5 года.&lt;br /&gt;Я не люблю давать пустых обещаний, но постараюсь сделать все что возможно для тех кого ты покинул.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7036690823604126155?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7036690823604126155/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7036690823604126155' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7036690823604126155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7036690823604126155'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/04/blog-post.html' title='О грустном...'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-6649330917042798635</id><published>2010-04-13T21:58:00.000-07:00</published><updated>2010-04-13T22:46:59.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><title type='text'>jobs - основы управления заданиями</title><content type='html'>Источник: &lt;a href="http://linuxreviews.org/beginner/jobs/"&gt;Jobs - the basics of job control&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Каждая команда, которую вы запускаете это задание (job), которое выполняется. Задание может быть приостановлено, размещено в фоновом режиме, вернуться на передний план или завершено.&lt;br /&gt;Большинство команд, например ls выполняются быстро, но такие вещи, как перемещение больших файлов занимают довольно долгое время, и используют ваш терминал.&lt;br /&gt;В этих случаях задание может быть помещено в фоновый режим, что позволяет выполнять другие команды в это время.&lt;br /&gt;При выполнении задания (job), вы можете приостановить его нажатием Ctrl+Z и убить ее нажав Ctrl+C.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;При выполнении работы вы можете&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;комбинация&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;приостановить работу&lt;/td&gt;&lt;td&gt;Ctrl+Z&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;прекратить работу&lt;/td&gt;&lt;td&gt;Ctrl+C&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Если задание прерывается оно может быть перемещено обратно на первый план с помощью команды &lt;span style="font-weight: bold;"&gt;fg&lt;/span&gt; и помещена в фоновый режим (где она будет продолжать высполнятся) с помощью &lt;span style="font-weight: bold;"&gt;bg&lt;/span&gt;.&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;Функция&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;Команда&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Move a suspended job to the foreground&lt;br /&gt;Перемещение приостановленого задания на первый план&lt;/td&gt;&lt;td&gt;fg&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Continue a suspended job in the background&lt;br /&gt;Продолжить приостановленную работу в фоновом режиме&lt;/td&gt;&lt;td&gt;bg&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;List all jobs&lt;br /&gt;Список всех заданий&lt;/td&gt;&lt;td&gt;jobs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Kill a job (%N where N is the job number)&lt;br /&gt;Убить задание (%N, где N это номер задания)&lt;/td&gt;&lt;td&gt;kill %N &amp;amp;&amp;amp; fg&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Start a job directly in the background&lt;br /&gt;Запуск задания в фоновом режиме&lt;/td&gt;&lt;td&gt;command &amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Как запускать, приостанавливать и продолжать команду в фоновом режиме&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Примеры того, как выполнить работу в фоновом режиме:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cp video.avi /pub/videos&lt;br /&gt;Ctrl-z&lt;br /&gt;[1]+  Stopped  cp video.avi /pub/videos&lt;br /&gt;$&lt;br /&gt;[1]+  cp video.avi /pub/videos&lt;br /&gt;$ bg&lt;br /&gt;$&lt;br /&gt;[1]+  Done  cp video.avi /pub/videos&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Запуск задание в фоновом режиме при выполнении&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cp video.avi /pub/videos &amp;amp;&lt;br /&gt;[1] 6510&lt;br /&gt;$ jobs&lt;br /&gt;[1]+  cp video.avi /pub/videos &amp;amp;&lt;br /&gt;$&lt;br /&gt;[1]+  Done cp video.avi /pub/videos &amp;amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Убить запущенное задание&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cp video.avi /pub/videos&lt;br /&gt;Ctrl-z&lt;br /&gt;$  kill %1 &amp;amp;&amp;amp; fg&lt;br /&gt;cp video.avi /pub/videos&lt;br /&gt;Terminated&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Обратите внимание, что команда jobs покажет задания запущенные в данном сеансе, используйте `top` или `ps -aux` чтобы просмотреть список всех запущенных заданий на компьютере.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Данная заметка - приближенный перевод статьи Øyvind Sæther, размещенной на &lt;a href="http://linuxreviews.org/beginner/jobs/"&gt;http://linuxreviews.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-6649330917042798635?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/6649330917042798635/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=6649330917042798635' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6649330917042798635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6649330917042798635'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/04/jobs.html' title='jobs - основы управления заданиями'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-2586795039442919058</id><published>2010-03-15T00:46:00.000-07:00</published><updated>2010-03-15T00:48:13.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='анекдоты'/><title type='text'>[Анекдоты] Узрел на forum.ubuntu.ru</title><content type='html'>Dr.Strangelove: Ну как, Фей тебя с теми девками познакомил?&lt;br /&gt;MindChanger: Угу. Правда я при знакомстве чуть не помер со смеху :-)&lt;br /&gt;Dr.Strangelove: Хе, чего так?&lt;br /&gt;MindChanger: Понимаешь, они сестры, близняшки. Так вот. Одну зовут Арина, а вторую Карина&lt;br /&gt;MindChanger: Обе - линуксоидши. И самое интересное заключается в том, что на компе Арины стоит Ubuntu, на у Карины...&lt;br /&gt;Dr.Strangelove: КUbuntu? :-D&lt;br /&gt;MindChanger: Ага :-)                                           &lt;table style="table-layout: fixed;" border="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" class="smalltext" width="100%"&gt;         &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-2586795039442919058?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/2586795039442919058/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=2586795039442919058' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2586795039442919058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2586795039442919058'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2010/03/forumubunturu.html' title='[Анекдоты] Узрел на forum.ubuntu.ru'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7389002070302599865</id><published>2009-12-24T02:10:00.000-08:00</published><updated>2009-12-24T02:11:07.960-08:00</updated><title type='text'>Прикладная некромантия в линукс или возвращаем из небытия удаленные файлы</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;a href="http://habrahabr.ru/blogs/linux/77271/"&gt;Источник&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;       &lt;div class="content"&gt; Думаю, каждый из нас с вами сталкивался с проблемой, когда из-за глюка прошивки фотоаппарата, камеры, кпк, смартфона или просто из-за особого устройства /dev/hands карточка была отформатирована, данные были удалены. В свое время данную проблему я решал достаточно просто, используя Portable версию Ontrack Easy Recovery, но так как уже несколько лет являюсь пользователем linux систем, то использование данного нелицензионнного приложения через wine показалось не совсем кошерным, к тому же жажда исследований и приключений требовала найти бесплатный родной аналог для linux систем. Исследования закончились, даже не успев начаться, так как первая строчка в поиске Google привела к набору утилит TestDisk, о которых я расскажу далее подробнее.&lt;br /&gt;&lt;a name="habracut"&gt;&lt;/a&gt;&lt;br /&gt;И так, TestDist состоит из двух утилит:&lt;br /&gt;testdisk и photorec; &lt;a href="http://www.cgsecurity.org/wiki/TestDisk" title="Официальный сайт"&gt;Официальный сайт утилит&lt;/a&gt;.&lt;br /&gt;Краткое описание:&lt;br /&gt;&lt;strong&gt;testdisk&lt;/strong&gt; – мощная утилита, разработанная для восстановления удаленных разделов и для восстановления загрузочных записей mbr после программных ошибок, действий некоторых вирусов, человеческих ошибок (например, когда раздел был просто удален).&lt;br /&gt;&lt;strong&gt;Возможности testdisk&lt;/strong&gt;:&lt;br /&gt;Исправление таблицы разделов; восстановление удаленных разделов Восстановление FAT32 загрузочного сектора из бэкапа Перестроение FAT12/FAT16/FAT32 загрузочного сектора Исправление FAT tables&lt;br /&gt;Перестроение NTFS загрузочного сектора Восстановление NTFS загрузочного сектора из бэкапа Исправление MFT используя MFT зеркало Нахождение ext2/ext3 Backup SuperBlock&lt;br /&gt;Восстановление удаленных файлов в FAT, NTFS and ext2 файловых системах&lt;br /&gt;Копирование файлов из FAT, NTFS and ext2/ext3 удаленных разделов.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;photorec&lt;/strong&gt; – утилита восстановления данных таких, как файлы видео, документы, архивы с жестких дисков и cdrom дисков, а также фото (поэтому название программы Photo Recovery) со встроенной памяти камер. Список типов файлов для восстановления весьма внушителен и с ним можно ознакомиться &lt;a href="http://www.cgsecurity.org/wiki/File_Formats_Recovered_By_PhotoRec"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Обе утилиты open source, распространяются под лицензией GNU General Public License (GPL). Имеются в наличие версии для linux, unix, а также для windows платформ.&lt;br /&gt;&lt;br /&gt;В большинстве линукс дистрибутивов уже включены в состав стандартного репозитория. Для debian-based дистрибутивов установка командой:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="color:black;"&gt;&lt;ol&gt;&lt;li&gt;sudo aptitude install testdisk&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;В моем случае требовалось восстановить фотографии с карточки фотоаппарата после того, как фотоаппарат случайно отформатировал карточку. Вставив флешку в card reader и запустив с правами рута photorec в консоли, утилита предложила мне выбрать диск, на котором требуется восстановить данные.&lt;br /&gt;&lt;img src="http://img200.imageshack.us/img200/6596/screenshotexceptionexce.png" alt="выбор диска" /&gt;&lt;br /&gt;В моем случае это будет &lt;em&gt;/dev/sdb&lt;/em&gt;.&lt;br /&gt;Далее выбираем тип таблицы разделов на диске, для большинства пользователей это будет Intel/PC.&lt;br /&gt;&lt;img src="http://img209.imageshack.us/img209/6596/screenshotexceptionexce.png" alt="выбор типа разделов" /&gt;&lt;br /&gt;И далее выбираем раздел или диск целиком для поиска удаленных файлов. Так как мне нужно было восстановить все удаленные файлы после форматирования, то я выбрал поиск по всему диску.&lt;br /&gt;После этого photorec требуется указать тип файловой системы, в которой хранились удаленные файлы. В данном случае все просто, выбираем второй пункт.&lt;br /&gt;&lt;img src="http://img249.imageshack.us/img249/6596/screenshotexceptionexce.png" /&gt;&lt;br /&gt;А затем на другом диске выбираем директорию, куда утилита сохранит восстановленные файлы.&lt;br /&gt;&lt;img src="http://img249.imageshack.us/img249/4801/screenshotexceptionexceo.png" /&gt;&lt;br /&gt;Далее нажимаем Y и программа начинает свою работу. Для 32Мб карточки ей потребовалось меньше минуты.&lt;br /&gt;Теперь о результатах работы:&lt;br /&gt;Честно говоря, по началу я весьма сомневался в способностях программы. Но открыв директорию с результатами работы утилиты, я с удивлением обнаружил, что были восстановлены не только нужные недавно сделанные 10 фотографий, но и еще 110 других, самая ранняя из которых была сделана 3 года назад и не была перезаписана при дальнейшем использовании карточки, хотя форматировалась карта неоднократно.&lt;br /&gt;В итоге имеем очередную победу добра над злом, счастливую улыбку обладателя фотоаппарата, еще один факт доказательства того, что существует море полезных и качественных opensource утилит.&lt;br /&gt;______________________&lt;br /&gt;&lt;br /&gt;         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7389002070302599865?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7389002070302599865/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7389002070302599865' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7389002070302599865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7389002070302599865'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/12/blog-post.html' title='Прикладная некромантия в линукс или возвращаем из небытия удаленные файлы'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8560694969240880175</id><published>2009-12-06T10:55:00.000-08:00</published><updated>2009-12-06T11:04:59.833-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gconf-editor'/><category scheme='http://www.blogger.com/atom/ns#' term='gconf'/><title type='text'>Ubuntu - Редактор конфигурации</title><content type='html'>Задася целью убрать иконки подключенных дисков с "Рабочего стола" и вот нашел такую штуку.&lt;br /&gt;&lt;br /&gt;Редактор конфигурации gconf-editor&lt;br /&gt;&lt;br /&gt;Вот пример параметров "Рабочего стола"&lt;br /&gt;gconf-editor&gt;apps&gt;nautilus&gt;desktop&lt;br /&gt;volumes_visible - Показывать подключенные носители на рабочем столе&lt;br /&gt;trash_icon_visible - Отображать на рабочем столе значок «Корзина»&lt;br /&gt;trash_icon_name - Имя значка «Корзина» на рабочем столе&lt;br /&gt;text_ellipsis_limit - Предел многоточия&lt;br /&gt;network_icon_visible - Значок «Сетевые серверы» присутствует на рабочем столе&lt;br /&gt;network_icon_name - Имя значка сетевых серверов&lt;br /&gt;home_icon_visible - Отображать на рабочем столе значок домашней папки&lt;br /&gt;/home_icon_name - Имя значка «Домашняя папка» на рабочем столе&lt;br /&gt;computer_icon_visible - Показывать значок «Компьютер» на рабочем столе&lt;br /&gt;computer_icon_name - Имя значка «Компьютер» на рабочем столе&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8560694969240880175?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8560694969240880175/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8560694969240880175' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8560694969240880175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8560694969240880175'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/12/ubuntu.html' title='Ubuntu - Редактор конфигурации'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-1410727488714827989</id><published>2009-12-06T08:57:00.000-08:00</published><updated>2011-07-23T11:27:00.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAS'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS-323'/><category scheme='http://www.blogger.com/atom/ns#' term='transmission'/><category scheme='http://www.blogger.com/atom/ns#' term='torrent'/><title type='text'>D-Link DNS-323 - transmission</title><content type='html'>&lt;div&gt;Итак приступим.&lt;br /&gt;Что такое D-Link DNS-323? Это NAS - сетевое хранилище. &lt;a href="http://www.dlink.ru/ru/products/120/644.html"&gt;описание&lt;/a&gt;&lt;br /&gt;Примечательно что к нему существуют хаки. Одним из таких хаков является transmission торрент-клиент.&lt;br /&gt;&lt;br /&gt;Для его установки надо:&lt;br /&gt;1. скачать funplug&lt;br /&gt;&lt;code&gt;http://www.inreto.de/dns323/fun-plug/0.5/fun_plug &lt;br /&gt;http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz&lt;/code&gt;&lt;br /&gt;2. Зайти по шаре на диски&lt;br /&gt;&lt;code&gt;smb://dlinknas/volume_1/&lt;br /&gt;smb://dlinknas/volume_2/&lt;/code&gt;&lt;br /&gt;3. Скопировать на оба диска фалы fun_plug и fun_plug.tgz&lt;br /&gt;  на оба диска потому что мы не знаем как они определятся системой.&lt;br /&gt;4. Перезагрузиться.&lt;br /&gt;  После перезагрузки нам будет доступен телнет и еще куча плюшек.&lt;br /&gt;5. Заходим удаленно на наш D-Link.&lt;br /&gt;&lt;code&gt;telnet 192.168.1.100&lt;/code&gt;&lt;br /&gt;6. Далее готовим каталог для установочных файлов&lt;br /&gt;&lt;code&gt;cd /mnt/HD_a2/&lt;br /&gt;mkdir transmission.setup&lt;br /&gt;cd transmission.setup&lt;/code&gt;&lt;br /&gt;7. Загружаем необходимые файлы&lt;br /&gt;wget к сожалению не все смог загрузить :( поэтому грузим с большого брата на шару следующие файлики в smb://dlinknas/volume_1(2)/transmission.setup&lt;br /&gt;&lt;a href="http://kylek.is-a-geek.org:31337/files/curl-7.18.1.tgz"&gt;curl-7.18.1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://kylek.is-a-geek.org:31337/files/Transmission-1.76-1.tgz"&gt;Transmission-1.76-1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.inreto.de/dns323/fun-plug/0.5/packages/uclibc-0.9.29-7.tgz"&gt;uclibc-0.9.29-7&lt;/a&gt;&lt;br /&gt;8. Возвращаемся в telnet&lt;br /&gt;если все нормально то файлики можно будет найти тут&lt;br /&gt;&lt;code&gt;cd /mnt/HD_a2/transmission.setup&lt;/code&gt;&lt;br /&gt;или тут&lt;br /&gt;&lt;code&gt;cd /mnt/HD_b2/transmission.setup&lt;/code&gt;&lt;br /&gt;команда &lt;code&gt;ls&lt;/code&gt; покажет содержимое каталога&lt;br /&gt;9. Установка самого битторрент клиента&lt;br /&gt;&lt;code&gt;funpkg -i curl-7.18.1.tgz&lt;br /&gt;funpkg -i Transmission-1.76-1.tgz&lt;br /&gt;funpkg -i uclibc-0.9.29-7.tgz&lt;/code&gt;&lt;br /&gt;10. В терминале (telnet) Стартуем/Останавливаем клиента чтобы появились файлы настроек&lt;br /&gt;&lt;code&gt;# /ffp/start/transmission.sh start&lt;br /&gt;# /ffp/start/transmission.sh stop&lt;/code&gt;&lt;br /&gt;11. Редактируем файл настроек.&lt;br /&gt;а) либо из терминала (telnet'a)&lt;br /&gt;&lt;code&gt;vi /mnt/HD_a2/.transmission-daemon/settings.json&lt;/code&gt;&lt;br /&gt;б) либо через шару&lt;br /&gt;&lt;code&gt;smb://dlinknas/volume_1/.transmission-daemon/settings.json&lt;/code&gt;&lt;br /&gt;&lt;code&gt;smb://dlinknas/volume_2/.transmission-daemon/settings.json&lt;/code&gt;&lt;br /&gt;12. У себя я поставил следующие строки.&lt;br /&gt;&lt;code&gt;"rpc-whitelist-enabled": true, &lt;/code&gt;&lt;br /&gt;на&lt;br /&gt;&lt;code&gt;"rpc-whitelist-enabled": false, &lt;/code&gt;&lt;br /&gt;и&lt;br /&gt;&lt;code&gt;"download-dir": "\/home\/torrent\/download",&lt;/code&gt;&lt;br /&gt;на&lt;br /&gt;&lt;code&gt;"download-dir": "\/mnt\/HD_a2\/transmission",&lt;/code&gt;&lt;br /&gt;13. В терминале (telnet) окончательно Стартуем клиента&lt;br /&gt;&lt;code&gt;# /ffp/start/transmission.sh start&lt;/code&gt;&lt;br /&gt;14. Проверяем доступность через веб.&lt;br /&gt;В браузере в строке адреса вбиваем&lt;br /&gt;&lt;code&gt;http://192.168.1.100:9091&lt;/code&gt;&lt;br /&gt;Мы должны увидеть веб интерфейс для нашего transmission&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;источники&lt;br /&gt;http://forum.dsmg600.info/t2719-%5BREL%5D-Transmission.html&lt;br /&gt;http://forum.dsmg600.info/viewtopic.php?pid=15546&lt;br /&gt;http://wiki.dns323.info/&lt;br /&gt;http://www.inreto.de/dns323/&lt;br /&gt;&lt;br /&gt;з.ы. Честно говоря у веб интерфейса есть недостатки, например нужно постоянно менять папку, куда класть закачку. По этой причине я у себя поставил "удаленный" интерфейс (&lt;a href="http://code.google.com/p/transmisson-remote-gui/"&gt;transmisson-remote-gui&lt;/a&gt;)&lt;br /&gt;Найти его можно &lt;a href="http://code.google.com/p/transmisson-remote-gui/"&gt;тут&lt;/a&gt;. Есть клиенты для Windows, Linux и MacOS.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-1410727488714827989?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/1410727488714827989/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=1410727488714827989' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1410727488714827989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1410727488714827989'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/12/d-link-dns-323-transmission.html' title='D-Link DNS-323 - transmission'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-5033952824363024777</id><published>2009-12-06T01:57:00.000-08:00</published><updated>2009-12-06T10:11:56.758-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='md5'/><category scheme='http://www.blogger.com/atom/ns#' term='md5sum'/><title type='text'>MD5SUM</title><content type='html'>Рекурентный расчет md5sum для всей/всех папок&lt;br /&gt;&lt;code&gt;find  .  -type f   2&gt;/dev/null  -exec md5sum {} \; &gt;md5sum.txt&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-5033952824363024777?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/5033952824363024777/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=5033952824363024777' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5033952824363024777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5033952824363024777'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/12/md5sum.html' title='MD5SUM'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-6524650892219002957</id><published>2009-11-27T11:56:00.000-08:00</published><updated>2009-11-27T12:20:41.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lock flash drive'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='запретить'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><title type='text'>Как запретить доступ к USB носителям</title><content type='html'>Просматривал форум российского ЛоКо ubuntu (&lt;a href="http://forum.ubuntu.ru"&gt;forum.ubuntu.ru&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;И зацепила меня тема &lt;a href="http://forum.ubuntu.ru/index.php?topic=76165.0"&gt;&lt;br /&gt;Запретить доступ к usb носителям [решено]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Там разобрался, сюда как шпаргалку положить надо. В развернутом виде.&lt;br /&gt;&lt;br /&gt;И так. До 9.04 включительно была тулза policykit-gnome.&lt;br /&gt;Это графический фронтенд для настройки политик.&lt;br /&gt;В 9.10 эта утилита есть. НО она обращается по старому местоположению файлов. И поэтому видит только одну единственную ветку.&lt;br /&gt;&lt;br /&gt;По этой причине пришлось расковырять где же собака порылась.&lt;br /&gt;&lt;br /&gt;Оказывается политики это просто xml файлики. В которых просто указывается правило доступа к тому или иному объекту.&lt;br /&gt;&lt;br /&gt;В результате разбирательства были найдены файлики&lt;br /&gt;для 9.04 и ниже&lt;br /&gt;/usr/share/PolicyKit/&lt;br /&gt;для 9.10&lt;br /&gt;/usr/share/polkit-1/actions/&lt;br /&gt;&lt;br /&gt;В этих каталогах штук 15 файликов, нас же интересует вот этот файл : org.freedesktop.devicekit.disks.policy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;идем на http://hal.freedesktop.org/docs/polkit/&lt;br /&gt;И там выясняется, что за сам доступ отвечают 3 параметра (тега)&lt;br /&gt;allow_any&lt;br /&gt;allow_inactive&lt;br /&gt;allow_active&lt;br /&gt;&lt;br /&gt;которые могут принимать значения (&lt;a href="http://hal.freedesktop.org/docs/polkit/polkit.8.html"&gt;тут оригинал&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;no - Not authorized.&lt;br /&gt;yes - Authorized.&lt;br /&gt;auth_self - Authentication by the owner of the session that the client originates from is required.&lt;br /&gt;auth_admin - Authentication by an administrative user is required.&lt;br /&gt;auth_self_keep - Like auth_self but the authorization is kept for a brief period.&lt;br /&gt;auth_admin_keep - Like auth_admin but the authorization is kept for a brief period.&lt;br /&gt;&lt;br /&gt;Играя с этими параметрами, мы установим ограничения на подключение флешек, дисков и т.д.&lt;br /&gt;&lt;br /&gt;з.ы. еще будем править&lt;br /&gt;з.ы.ы. Проверить к моему сожалению мне особо не где, НО если мы говорим о безопасности корпоративной системы, то еще рекомендую убрать пользователей из групп wheel, sudoers и т.п.&lt;br /&gt;&lt;br /&gt;з.ы.ы.ы. В последнем посту Dfg предложил пойти еще дальше. Дойдя до dbus&lt;br /&gt;http://forum.ubuntu.ru/index.php?topic=76165.msg572550#msg572550&lt;br /&gt;Что в свою очередь тоже любопытно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-6524650892219002957?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/6524650892219002957/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=6524650892219002957' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6524650892219002957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6524650892219002957'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/11/usb.html' title='Как запретить доступ к USB носителям'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8667173897062916385</id><published>2009-11-27T11:50:00.000-08:00</published><updated>2009-11-27T11:55:00.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='editor'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='xml editor'/><title type='text'>XML editor for Linux</title><content type='html'>Решил поискать на досуге легковестный opensource XML редактор.&lt;br /&gt;Нашел XML Copy Editor (&lt;a href="http://xml-copy-editor.sourceforge.net/"&gt;ссылка&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Простой и &lt;span style="font-style:italic;"&gt;Ф&lt;/span&gt;полне функциональный.&lt;br /&gt;&lt;br /&gt;Как альтернатива - использовать eclipse... Не монстр... Хотя местами и его буду ипользовать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8667173897062916385?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8667173897062916385/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8667173897062916385' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8667173897062916385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8667173897062916385'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/11/xml-editor-for-linux.html' title='XML editor for Linux'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-5308987233290137646</id><published>2009-11-17T00:46:00.000-08:00</published><updated>2010-01-10T23:36:24.090-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wimax'/><category scheme='http://www.blogger.com/atom/ns#' term='9.10'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.10 + Yota (wimax) vs Я</title><content type='html'>&lt;a href="http://comnote.blogspot.com/2009/08/lenovo-s10-2-vs-ubuntu-904-yota.html"&gt;В продолжении этой темы&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;У меня были предположения что рецептура не меняется, так и получилось.&lt;br /&gt;# для работы драйверов нам также понадобится пакет libnl-dev&lt;br /&gt;&lt;code&gt;apt-get install libnl-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;# cтавим управляющую обвязку для драйвера&lt;br /&gt;&lt;code&gt;cd /usr/src/WiMAX-Network-Service-1.4.0&lt;br /&gt;make clean&lt;br /&gt;./configure --prefix=/usr/ --with-i2400m=/usr/src/linux-headers-$(uname -r) --localstatedir=/var&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;# Cтавим Supplicant&lt;br /&gt;&lt;code&gt;cd /usr/src/Intel-WiMAX-Binary-Supplicant-1.4.0&lt;br /&gt;sudo ./install_supplicant.sh install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;# Супликант у меня ставится в /usr/local/lib, я его сразу скопирую в /usr/lib&lt;br /&gt;&lt;code&gt;cp -r /usr/local/lib/wimax/*.* /usr/lib/wimax/ &lt;/code&gt;&lt;br /&gt;Либо исправляем путь в ./install_supplicant.sh на нужный&lt;br /&gt;&lt;br /&gt;# Загружаем yot'овские конфиги, спасибо icelord&lt;br /&gt;&lt;code&gt;wget http://icelord.net/images/wimax/NDnSAgentConfig_forDriver.xml&lt;br /&gt;wget http://icelord.net/images/wimax/NDnSAgentDefaultConfig.xml&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;# копируем по назначению /usr/share/wimax/&lt;br /&gt;&lt;code&gt;sudo cp NDnSAgentConfig_forDriver.xml /usr/share/wimax/NDnSAgentConfig_forDriver.xml&lt;br /&gt;sudo cp NDnSAgentDefaultConfig.xml /usr/share/wimax/NDnSAgentDefaultConfig.xml&lt;/code&gt;&lt;br /&gt;И всю последовательность загнать в файл скрипта&lt;br /&gt;Даст упрощение при последующей перекомпиляции&lt;br /&gt;&lt;br /&gt;Вот еще один гик, от icelord'а&lt;br /&gt;http://icelord.net/wordpress/archives/1151&lt;br /&gt;Там есть интересный скрипт, для переключения между режимами.&lt;br /&gt;Добрался наконец до этого скрипта и переделал.&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;STATE_WIMAXCU=`sudo wimaxcu status link`&lt;br /&gt;#STATE=`sudo /etc/init.d/wimax status| awk '{print $4}'`&lt;br /&gt;if [ "$STATE_WIMAXCU" = "Operation Failed." ]&lt;br /&gt;then&lt;br /&gt;echo "$STATE_WIMAXCU"&lt;br /&gt;echo "WiMAX Network Service: Stoping"&lt;br /&gt; sudo /etc/init.d/wimax stop&lt;br /&gt;echo "WiMAX Network Service: Starting"&lt;br /&gt;sudo /etc/init.d/wimax start&lt;br /&gt;else&lt;br /&gt;echo "$STATE_WIMAXCU"&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;STATE_WIMAXD=`sudo /etc/init.d/wimax status`&lt;br /&gt;#Operation Failed.&lt;br /&gt;&lt;br /&gt;if [ "$STATE_WIMAXD" = "WiMAX Network Service: Running" ]&lt;br /&gt;then&lt;br /&gt;echo "$STATE_WIMAXD"&lt;br /&gt;else&lt;br /&gt;echo "$STATE_WIMAXD"&lt;br /&gt;echo "WiMAX Network Service: Stoping"&lt;br /&gt; sudo /etc/init.d/wimax stop&lt;br /&gt;echo "WiMAX Network Service: Starting"&lt;br /&gt;sudo /etc/init.d/wimax start&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;STATE_LINK=`sudo wimaxcu status system`&lt;br /&gt;#Connected.&lt;br /&gt;#Link Status: Network is not connected.&lt;br /&gt;#SW Radio is OFF.&lt;br /&gt;if [ "$STATE_LINK" = "Connected." ]&lt;br /&gt;then&lt;br /&gt;echo "$STATE_LINK"&lt;br /&gt; sudo ifconfig wmx0 down&lt;br /&gt;sleep 0.1s&lt;br /&gt; sudo wimaxcu roff&lt;br /&gt; sleep 2s&lt;br /&gt; sudo iwconfig wlan0 tx on&lt;br /&gt; sleep 0.5s&lt;br /&gt; sudo ifconfig wlan0 up&lt;br /&gt;else&lt;br /&gt;if [ "$STATE_LINK" = "Link Status: Network is not connected." ]&lt;br /&gt;then&lt;br /&gt; echo "$STATE_LINK"&lt;br /&gt; sudo wimaxcu connect network 15&lt;br /&gt; sudo dhclient wmx0&lt;br /&gt;else&lt;br /&gt; if [ "$STATE_LINK" = "SW Radio is OFF." ]&lt;br /&gt; then&lt;br /&gt;  echo "$STATE_LINK"&lt;br /&gt;   sudo iwconfig wlan0 tx off&lt;br /&gt;   sudo ifconfig wmx0 up&lt;br /&gt;   sleep 0.1s&lt;br /&gt;   sudo wimaxcu ron&lt;br /&gt;   sleep 2s&lt;br /&gt;   sudo wimaxcu connect network 15&lt;br /&gt;   sudo dhclient wmx0&lt;br /&gt;  echo ""&lt;br /&gt; else&lt;br /&gt;   if [ "$STATE_LINK" = "Scanning..." ]&lt;br /&gt;   then&lt;br /&gt;    echo "$STATE_LINK"&lt;br /&gt;    STATE_SCAN=`sudo wimaxcu scan| grep Yota | awk '{print $3}'`&lt;br /&gt;    if [ "$STATE_SCAN" = "Yota" ]&lt;br /&gt;    then&lt;br /&gt;     sudo wimaxcu connect network 15&lt;br /&gt;     sudo dhclient wmx0&lt;br /&gt;    fi&lt;br /&gt;   &lt;br /&gt;   fi&lt;br /&gt;&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;fi&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;В своем варианте я этот скрипт сохранил в /usr/share/wimax/wifiwimax.sh и на табе создал кнопку запуска.&lt;br /&gt;&lt;br /&gt;и красивое решение на последок&lt;br /&gt;отсюда http://vonderer.blogspot.com/2006/10/initd-autorun-debian.html&lt;br /&gt;+&lt;br /&gt;http://translated.by/you/man-update-rc-d-8-install-and-remove-system-v-style-init-script-links/into-ru/&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /etc/init.d&lt;br /&gt;sudo update-rc.d wimax defaults&lt;/code&gt;&lt;br /&gt;Даст авто запуск службы wimax&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;з.ы. У меня работает а у вас?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-5308987233290137646?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/5308987233290137646/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=5308987233290137646' title='Комментарии: 62'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5308987233290137646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/5308987233290137646'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/11/ubuntu-910-yota-wimax-vs.html' title='Ubuntu 9.10 + Yota (wimax) vs Я'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>62</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-1128759400080565552</id><published>2009-10-26T02:05:00.000-07:00</published><updated>2009-10-26T02:14:47.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fdupes'/><category scheme='http://www.blogger.com/atom/ns#' term='файлы'/><category scheme='http://www.blogger.com/atom/ns#' term='дубликаты'/><title type='text'>Дубликаты файлов</title><content type='html'>Истановка&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install fdupes&lt;/code&gt;&lt;/blockquote&gt;Использование&lt;br /&gt;Поиск&lt;blockquote&gt;&lt;code&gt;fdupes -r .&lt;/code&gt;&lt;/blockquote&gt;Поиск и запрос на удаление&lt;blockquote&gt;&lt;code&gt;fdupes -rd .&lt;/code&gt;&lt;/blockquote&gt;Поиск и запрос на удаление игнорировать пустые&lt;blockquote&gt;&lt;code&gt;fdupes -rdn .&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Точка - текущий каталог&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;Usage: fdupes [options] DIRECTORY...&lt;br /&gt;&lt;br /&gt;-r --recurse         for every directory given follow subdirectories&lt;br /&gt;                    encountered within&lt;br /&gt;-R --recurse:        for each directory given after this option follow&lt;br /&gt;                    subdirectories encountered within&lt;br /&gt;-s --symlinks        follow symlinks&lt;br /&gt;-H --hardlinks       normally, when two or more files point to the same&lt;br /&gt;                    disk area they are treated as non-duplicates; this&lt;br /&gt;                    option will change this behavior&lt;br /&gt;-n --noempty         exclude zero-length files from consideration&lt;br /&gt;-f --omitfirst       omit the first file in each set of matches&lt;br /&gt;-1 --sameline        list each set of matches on a single line&lt;br /&gt;-S --size            show size of duplicate files&lt;br /&gt;-m --summarize       summarize dupe information&lt;br /&gt;-q --quiet           hide progress indicator&lt;br /&gt;-d --delete          prompt user for files to preserve and delete all&lt;br /&gt;                    others; important: under particular circumstances,&lt;br /&gt;                    data may be lost when using this option together&lt;br /&gt;                    with -s or --symlinks, or when specifying a&lt;br /&gt;                    particular directory more than once; refer to the&lt;br /&gt;                    fdupes documentation for additional information&lt;br /&gt;-N --noprompt        together with --delete, preserve the first file in&lt;br /&gt;                    each set of duplicates and delete the rest without&lt;br /&gt;                    without prompting the user&lt;br /&gt;-v --version         display fdupes version&lt;br /&gt;-h --help            display this help message&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;ссылки по теме:&lt;br /&gt;&lt;blockquote&gt;http://mydebianblog.blogspot.com/2006/10/blog-post_16.html&lt;br /&gt;http://mydebianblog.blogspot.com/2009/09/linux.html&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-1128759400080565552?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/1128759400080565552/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=1128759400080565552' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1128759400080565552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/1128759400080565552'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/blog-post_26.html' title='Дубликаты файлов'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-3534176927971600934</id><published>2009-10-21T06:55:00.000-07:00</published><updated>2009-12-06T10:12:32.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NortonAntivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='Приколы'/><title type='text'>Защитный член</title><content type='html'>&lt;h5&gt;Источник: &lt;a href="http://secureblog.info/articles/576.html"&gt;http://secureblog.info/&lt;/a&gt;&lt;br /&gt;&lt;/h5&gt;   В Россию начались поставки нового средства защиты от вирусов и других вредоносных программ с "противопихотными членами"...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://easycaptures.com/fs/uploaded/394/9420077265.png" /&gt;&lt;br /&gt;Пруф &lt;a href="http://store.norton.com/v2.0-img/operations/symantus/site/promo/pd/_10/023936/navnis10_n360v3_RU.html"&gt; линк &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я понятия не имею чем и как это было переведено, так как ни один онлайн переводчик слово "противопихотный" мне нормально не перевел + на вирусный маркетинг не смахивает... Единственное объяснение — переводили индусы, а лучше пакистанцы или Иракцы с англиского на свой родной, а потом на русский 8)&lt;br /&gt;Удивительно так же что с "противопихотными членами" антивирус от симантика стоит дешевле...&lt;br /&gt;Fail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-3534176927971600934?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/3534176927971600934/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=3534176927971600934' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3534176927971600934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3534176927971600934'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/blog-post_21.html' title='Защитный член'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-6922257862991236178</id><published>2009-10-20T23:43:00.000-07:00</published><updated>2009-10-20T23:46:39.330-07:00</updated><title type='text'>Расширительное толкование терминов «вредоносная программа» и «неправомерный доступ»</title><content type='html'>&lt;center&gt;&lt;div style="text-align: left;"&gt;Источник: &lt;a href="http://forensics.ru/ras_tolkovanie.html"&gt;http://forensics.ru/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;Середа С.А., к.э.н.;&lt;br /&gt;&lt;a href="mailto:fnn@fnn.ru"&gt;Федотов Н.Н.&lt;/a&gt;, к.ф-м.н.&lt;/i&gt; &lt;/center&gt;&lt;br /&gt;Впервые опубликовано в журнале &lt;a href="http://www.zakon.ru/cont.php?bc_tovar_id=16"&gt;"Закон"&lt;/a&gt;, N7, 2007.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;В статье рассматривается ошибочная практика квалификации по «компьютерным» статьям 272 и 273 УК правонарушений, связанных с авторским правом. В силу схожести терминов и игнорирования понятия объекта преступления работники правоохранительных органов неверно квалифицируют подобные деяния. Эксперты ошибочно признают некоторые программные средства для преодоления технических средств защиты авторских прав вредоносными программами. Сами деяния, имеющие целью подобное преодоление, квалифицируются как неправомерный доступ к компьютерной информации. В ряде случаев это переводит нарушение из административной или гражданской сферы в уголовную.&lt;/p&gt; &lt;p&gt;Авторы подробно анализируют соответствующие составы преступлений, уточняют толкование ключевых терминов, критикуют методы и приёмы экспертизы, а также  опровергают расхожие заблуждения, касающиеся вредоносных программ.&lt;/p&gt;  &lt;h2&gt;Тенденция к использованию статей 272 и 273 УК в отношении правонарушений, связанных с авторским правом&lt;/h2&gt;  &lt;p&gt;Примерно с 2001 года в практике правоохранительных органов России появилась странная тенденция: добавлять обвинение по статье 272 (неправомерный доступ) или 273 (вредоносные программы) ко всем обвинениям по ч. 2 и 3 статьи 146 (нарушение авторских прав), если только охраняемое произведение было представлено в цифровой форме. По информации авторов, инициатором подобной практики стал один крупный российский правообладатель при технической поддержке им же учреждённой некоммерческой организации.&lt;/p&gt;  &lt;p&gt;Причины появления такой «инициативы» достаточно ясны. Для привлечения нарушителя авторских прав по «целевой» статье 146 УК необходимо доказать, что стоимость контрафактных экземпляров была не менее 50 000 рублей. При единичной же установке программного продукта подобная сумма может фигурировать только, если этот продукт очень дорогой, такой, например, как AutoCAD компании AutoDesk (около 106 000 рублей). А большинство популярных отечественных программ существенно дешевле и, как правило, по стоимости не превышают 40 000 рублей. В то же время, львиная доля нарушений осуществляется именно посредством единичных инсталляций программных продуктов.&lt;/p&gt;  &lt;p&gt;Соответственно, возникла потребность «найти иные пути» привлечения нарушителей к уголовной ответственности. Именно к уголовной, потому что она оказывает максимальный психологический эффект на потенциальных нарушителей, а также даёт несравненно б&lt;b&gt;о&lt;/b&gt;льшие возможности для сбора доказательств. Доказывать нарушения авторских прав в гражданском порядке намного труднее и дороже; при этом невозможны такие действия, как проверочная закупка, обыск, допрос подозреваемого и свидетелей.&lt;/p&gt;  &lt;p&gt;Искомую возможность перевода нарушения из гражданской сферы в уголовную предоставили формулировки статей 272 и 273 УК. Речь в них идёт о неправомерном доступе к компьютерной информации и о создании вредоносных программ, заведомо приводящих к модификации, копированию, уничтожению либо блокированию компьютерной информации, нарушению работы ЭВМ, системы ЭВМ или сети. Объект авторского права, программа для ЭВМ, записанная на машинный носитель, очень похожа на «компьютерную информацию» в неюридическом, бытовом значении этого термина. А имущественные авторские права на программу для ЭВМ обозначаются терминами: «воспроизведение», «распространение» и «переработка», которые по своему значению похожи на термины «копирование» и «модификация», используемые в статьях 272 и 273.&lt;/p&gt;  &lt;p&gt;Соответственно, с этой точки зрения, «неправомерное воспроизведение объекта авторских прав» и «преодоление технических средств защиты авторских прав» похоже по звучанию на «неправомерный доступ к информации», который подпадает под действие статьи 272. А написание специализированных программ для преодоления технических средств защиты авторских прав похоже на «создание вредоносных программ», подпадающее под действие статьи 273 УК.&lt;/p&gt;  &lt;p&gt;Дополнительным запутывающим фактором здесь служит и непродуманное использование законодателем одного и того же термина «модификация», как в федеральном законе «О правовой охране программ для электронных вычислительных машин и баз данных» [&lt;a href="http://forensics.ru/ras_tolkovanie.html#Ref14" name="ret14"&gt;14&lt;/a&gt;], так и в указанных статьях Уголовного кодекса. Такое «совпадение» приводит к тому, что даже в правовых работах известных специалистов всерьёз исследуется вопрос, чем отличается  «модификация компьютерной информации» от её «адаптации». Хотя термин «адаптация» применяется лишь в отношении программ для ЭВМ как объектов авторского права и не приложим к информации.&lt;/p&gt;  &lt;p&gt;Со своей стороны, представители правоохранительных органов охотно приняли  «на вооружение» этот подход, так как он позволяет как наказать «виновных» лиц, неподсудных (из-за установленного  «порога» по стоимости) по статье 146, так и поднять показатели раскрываемости преступлений в области компьютерной информации. Практика вменения состава преступления по статьям 272 и 273 УК изначально  распространилась в регионах, в настоящее же время она начала внедряться и в столице.&lt;/p&gt;  &lt;p&gt;По мнению авторов настоящей статьи, во-первых, эта практика нарушает существующее законодательство Российской Федерации, криминализируя большинство пользователей ЭВМ в нашей стране (согласно данным международной организации  Business Software Alliance, 87% установленного программного обеспечения в России – контрафактное). Во-вторых, такая практика предоставляет правообладателям дополнительные, изначально не предусмотренные законом возможности для защиты их прав. И тем самым сильно перекашивает баланс между интересами авторов, пользователей и общества в целом, в то время как именно баланс прав и является целью законодательства об интеллектуальной собственности.&lt;/p&gt;  &lt;p&gt;Разумеется, утверждение о неправомерности применения статей 272 и 273 УК к случаям нарушения авторских прав на программы для ЭВМ нуждается в  доказательствах его верности. Ниже мы попробуем проанализировать указанные статьи и область их применения и сформулировать необходимые доказательства.&lt;/p&gt;  &lt;h2&gt;Преступления в сфере компьютерной информации&lt;/h2&gt;  &lt;p&gt;Указанная глава появилась, вместе с Уголовным кодексом Российской Федерации,  в 1996 году. Изначально, осуществить криминализацию «компьютерных преступлений» предполагалось посредством внесения ряда статей в Уголовный кодекс РСФСР [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161408601" name="ret1"&gt;1&lt;/a&gt;], в частности:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;статья 152-3. «Незаконное овладение программами для ЭВМ, файлами и базами данных»; &lt;/li&gt;&lt;li&gt;статья 152-4. «Фальсификация или уничтожение информации в автоматизированной системе»; &lt;/li&gt;&lt;li&gt;статья 152-5. «Незаконное проникновение в АИС, совершенное путем незаконного завладения парольно–ключевой информацией, нарушение порядка доступа или обхода механизмов программной защиты информации с целью ее несанкционированного копирования, изменения или уничтожения»; &lt;/li&gt;&lt;li&gt;статья 152-6. «Внесение или распространение «компьютерного вируса»; &lt;/li&gt;&lt;li&gt;статья 152-7. «Нарушение правил, обеспечивающих безопасность АИС»; &lt;/li&gt;&lt;li&gt;статья 152-8. «Промышленный шпионаж с использованием ЭВМ». &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Однако переход к совершенно новому Уголовному кодексу стал причиной переработки указанных статей и их сведению к нынешним трём статьям 28-й главы УК.&lt;/p&gt;  &lt;p&gt;По нашему мнению, указанное сокращение составов преступлений сказалось на «компьютерной» части уголовного закона отнюдь не лучшим образом. Первоначальный вариант, хотя и не идеальный, более соответствовал реальности и теоретическим положениям информационной безопасности, а также не давал возможности для смешения разных категорий правонарушений.&lt;/p&gt;  &lt;p&gt;Современная же формулировка статей 28-й главы УК, по сути, была морально устаревшей уже в момент её принятия. И, к большому сожалению, за прошедшие 10 лет она ни разу не подвергалась пересмотру и уточнению. В существующем же виде использование не раскрытых в уголовном законе терминов «информация», «санкционирование», «доступ» часто позволяют  необоснованно распространять действие указанных статей на области, явно не предусматривавшиеся законодателем.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Общий правовой анализ статей 272 и 273&lt;/h2&gt;  &lt;p&gt;&lt;b&gt;Статья 272&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Объект преступления&lt;/u&gt;. В комментариях [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161412487" name="ret3"&gt;3&lt;/a&gt;, &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452" name="ret4"&gt;4&lt;/a&gt;, &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900" name="ret5"&gt;5&lt;/a&gt;] в качестве объекта преступления для статьи 272 указываются соответственно: «охраняемая законом компьютерная информация»;  «права на информацию ее владельца и третьих лиц»; «право на неприкосновенность информации ее владельца и третьих лиц» и  «материальные интересы потерпевшего».&lt;/p&gt;  &lt;p&gt;Но сама по себе компьютерная информация не может считаться объектом преступления – из теории уголовного права известно, что объектом может быть только один из видов общественных отношений [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164404537" name="ret12"&gt;12&lt;/a&gt;].  Правильнее сказать, что объектом являются отношения, связанные с компьютерной информацией. А именно, следующие: право лица на безопасное пользование своим компьютером и сетевым соединением, право владельца на доступ к своей информации в её неизменном виде.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Объективная сторона&lt;/u&gt; «выражается в: а) неправомерном доступе к охраняемой законом информации на машинном носителе, в ЭВМ, системе ЭВМ или их сети; б) наступлении неблагоприятных последствий в виде уничтожения, блокирования, модификации, копирования информации, нарушения работы ЭВМ, их системы или сети; в) наличии причинной связи между неправомерным доступом и наступившими последствиями» [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Субъект преступления&lt;/u&gt; – «вменяемое физическое лицо, достигшее ко времени совершения преступления 16-летнего возраста»  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Субъективная сторона&lt;/u&gt;. В [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161412487" name="ret3"&gt;3&lt;/a&gt;] указывается, что преступления, подпадающие под действие статьи 272, могут совершаться только с прямым умыслом, однако в [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;] указывается и на возможность совершения подобных преступлений по неосторожности, а в  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;] говорится не только о прямом, но и о косвенном умысле.&lt;/p&gt;  &lt;p&gt;С учетом того, что информационные системы обладают высокой сложностью, и их функционирование зависит от огромного числа параметров, значение многих из которых пользователь не контролирует, следует признать, что неосторожность здесь неприменима. Сложность, слабая предсказуемость и фактическая  недетерминированность современных компьютерных систем приводит к тому, что доступ к чужой информации и воздействие на неё происходит не то чтобы часто, но регулярно – в силу ошибок в программах и случайных факторов. Каждый специалист знает об этом и вынужден допускать возможность возникновения таких ошибок, застраховаться от которых невозможно.&lt;a href="http://forensics.ru/ras_tolkovanie.html#_ftn1" name="_ftnref1"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; Поэтому включение в состав преступления варианта его совершения по неосторожности криминализировало бы всю повседневную работу любых ИТ-специалистов.&lt;/p&gt;  &lt;p&gt;Таким образом, неправомерный доступ к охраняемой законом компьютерной информации может совершаться с прямым или косвенным умыслом.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Состав преступления&lt;/u&gt; является материальным и предполагает обязательное наступление одного из следующих последствий: уничтожение информации;  блокирование информации; модификация информации; копирование информации; нарушение работы ЭВМ, системы ЭВМ или их сети.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Статья 273&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Объект преступления&lt;/u&gt;. В [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;] в качестве объекта преступления называется  «безопасность пользования интеллектуальными и вещественными средствами вычислительной техники», в [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;] –  «безопасность использования информационных ресурсов и электронно-вычислительной техники» и «материальные интересы потерпевших». Так как, с одной стороны, не вполне ясно, что такое «интеллектуальные и вещественные средства вычислительной техники», а, с другой стороны, в самой статье 273 ничего не говорится о «безопасности» и  «материальных интересах потерпевших», с формулировками из  вышеприведённых комментариев нельзя полностью согласиться. По нашему мнению, в данном контексте объектом преступления следует назвать общественные отношения по обеспечению корректной работы вычислительной техники  в виде единственной ЭВМ, системы ЭВМ или их сети, то есть, право пользователя на безопасное пользование своим компьютером и сетевым соединением.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Объективная сторона&lt;/u&gt; преступления заключается в создании либо модификации одной или более программ для ЭВМ так, чтобы полученные в итоге программы заведомо приводили к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети. Преступлением считается и виновное использование и/или  распространение подобных вредоносных программ.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Субъект преступления&lt;/u&gt; – «вменяемое физическое лицо, достигшее ко времени совершения преступления 16-летнего возраста»  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Субъективная сторона&lt;/u&gt; преступления характеризуется только прямым умыслом [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161412487" name="ret3a"&gt;3&lt;/a&gt;, &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452" name="ret4"&gt;4&lt;/a&gt;,  &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;], однако часть 2 статьи 273 предусматривает наступление тяжких последствий по неосторожности  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161412487"&gt;3&lt;/a&gt;]. На практике распространение и использование вредоносных программ не всегда считается преступлением – исключением является деятельность разработчиков антивирусных средств, средств обнаружения и предотвращения атак, а также академических исследователей вредоносных  программ. Все эти лица действуют, имея умысел на нечто противоположное –  на предотвращение распространения таких программ.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Состав преступления&lt;/u&gt; является формальным и не требует для квалификации наступления каких-либо последствий.&lt;/p&gt;  &lt;p&gt;Следует учитывать, что обсуждаемые комментарии [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161412487"&gt;3&lt;/a&gt;,  &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;, &lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;] создавались сразу после принятия нового УК. В то время не было никакой практики применения составов из 28 главы, которые отсутствовали в прежнем кодексе. Следовательно, комментарии писались, исходя из общих соображений, без учёта сомнений и неоднозначностей в толковании, которые появились лишь позже. И уж конечно, без  учёта такого явления, как технические средства защиты авторских прав, которые начали применяться лишь в последние годы.&lt;/p&gt;  &lt;a name="definition"&gt;&lt;h2&gt;Нечёткость определения вредоносной программы&lt;/h2&gt;&lt;/a&gt;  &lt;p&gt;В Уголовном кодексе РФ вредоносная программа определена как  «&lt;u&gt;заведомо&lt;/u&gt; приводящая к &lt;u&gt;несанкционированному&lt;/u&gt; уничтожению, блокированию, модификации либо копированию &lt;u&gt;информации&lt;/u&gt;, нарушению работы ЭВМ, системы ЭВМ или их сети»&lt;/p&gt;  &lt;p&gt;Три подчёркнутых термина в этом определении сразу обращают на себя внимание специалиста и вызывают ряд вопросов, чёткого ответа на которые в законе не содержится.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. «Заведомо»&lt;/b&gt; Для какого именно субъекта последствия применения программы должны быть «заведомые», то есть, заранее ведомые [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161408657" name="ret2"&gt;2&lt;/a&gt;]? Варианты такие: (а) для создателя этой программы; (б) для пользователя этой программы, то есть,  для запускающего её лица; (в) для владельца ЭВМ, на которой запускается эта программа; (г) для обладателя копируемой, модифицируемой, уничтожаемой информации; (д) для правообладателя соответствующего произведения.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. «Информация»&lt;/b&gt; Определение информации дано в законе «Об информации...» [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164406972" name="ret15"&gt;15&lt;/a&gt;]:  «информация – сведения (сообщения, данные) независимо от формы их представления». Должно ли здесь применяться именно это определение, либо  иное – более широкое или более узкое? Любая ли информация имеется в виду  или только «внешняя» по отношению к рассматриваемой программе? Охватываются ли временные технологические копии обрабатываемой информации, или  имеется в виду лишь информация, доступная для человека?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. «Несанкционированное»&lt;/b&gt; Кто именно должен санкционировать указанные действия над информацией, чтобы они не считались несанкционированными? Варианты: (а) пользователь программы; (б) владелец ЭВМ или носителя информации; (в) обладатель обрабатываемой информации; (г) обладатель исключительных прав на объекты интеллектуальной собственности, представляемые обрабатываемой информацией.&lt;a href="http://forensics.ru/ras_tolkovanie.html#_ftn2" name="_ftnref2"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Авторы предлагают следующее толкование спорных терминов.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. «Заведомо»&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Вредоносность, очевидно, есть свойство самой программы, не зависящее от знаний о ней каких-либо лиц. В противном случае получится, что действия лица квалифицируются в зависимости от свойства программы, которое, в свою очередь, зависит от действий этого же лица.&lt;/p&gt;  &lt;p&gt;То есть, вредоносность программы – это её объективное свойство. Следовательно, слово «заведомо» в обсуждаемом определении надо трактовать как «хорошо известно», «несомненно» [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161408739" name="ret6"&gt;6&lt;/a&gt;], «определённо»,  «неслучайно», «в силу свойств самой программы». То есть, вредные последствия применения такой программы должны неизбежно следовать из её устройства, а не быть случайным или побочным эффектом или результатом нецелевого использования.&lt;/p&gt;  &lt;p&gt;Все несанкционированные действия должны выполняться вредоносной программой только в автоматическом режиме (независимо от воли и действий оператора ЭВМ, но заведомо для автора). Только при этом условии можно отделить вредоносные от  обычных программ, выполняющих аналогичные действия с информацией, но по команде пользователя.&lt;/p&gt;  &lt;p&gt;В формулировке статьи 273 УК РФ слово «заведомо» совершенно четко и однозначно связано с процессом создания программ для ЭВМ или внесения изменений в существующие программы [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164336520" name="ret11"&gt;11&lt;/a&gt;], что полностью соответствует техническому пониманию сущности вредоносных программ. Многие некорректные трактовки статьи 273 УК РФ строятся так, будто она звучит  как «&lt;i&gt;распространение программ для ЭВМ&lt;/i&gt;, заведомо приводящих к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети…», а не  «&lt;i&gt;создание программ для ЭВМ или внесение изменений в существующие программы&lt;/i&gt;…». Подобные трактовки являются спекулятивными, но, к сожалению, остаются весьма популярными среди представителей правоохранительных органов.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. «Информация»&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Как в комментариях к Кодексу, так и в материалах судебных дел для  разъяснения не раскрытых в УК терминов принято обращаться к гражданскому законодательству или даже к нормативно-техническим документам. Полагая это общепринятой практикой, примем, что при трактовке статей 272 и 273 УК РФ необходимо пользоваться определениями ФЗ «Об информации...», так как именно этот закон «регулирует отношения, возникающие при… обеспечении защиты информации» (п. 3 части 1, ст. 1 ФЗ). Так как определение информации в этом законе носит весьма общий характер, следует сделать вывод, что определение вредоносной программы охватывает все  виды информации. Более того, в статье 273 говорится не о «компьютерной информации», как в статье 272, а об информации вообще. Таким образом, программа для ЭВМ, «заведомо приводящая к несанкционированному уничтожению, блокированию, модификации либо копированию информации», скажем, на бумажном носителе (например, вычеркивая часть слов при распечатке текста на принтере, как это делает система защиты документов формата PDF) также будет признана вредоносной.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. «Несанкционированное»&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Кто может санкционировать действия над информацией? Согласно закону  «Об информации…», право осуществлять различные действия над информацией и разрешать осуществление таких действий принадлежит обладателю этой информации (ч. 3 ст. 6). Следовательно, санкция на модификацию, копирование, уничтожение и блокирование информации должна исходить от  обладателя информации.&lt;/p&gt;  &lt;p&gt;Кроме этого, в статье УК говорится и о нарушении работы ЭВМ, системы ЭВМ или их сети. Не вполне понятно, относится ли слово  «несанкционированное» к далее перечисленным действиям  «нарушение работы ЭВМ...». Бывает ли нарушение работы санкционированным? В принципе, бывает. Тогда кто может санкционировать нарушение работы ЭВМ? В силу ч. 6 ст. 13  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164406972"&gt;15&lt;/a&gt;], такими правами наделён оператор  информационной системы (ибо ЭВМ, система ЭВМ, сеть ЭВМ – это всё информационная система в терминах указанного закона).&lt;/p&gt;  &lt;p&gt;Таким образом, уничтожение, блокирование, модификация либо копирование информации являются несанкционированными, если на их осуществление нет разрешения обладателя обрабатываемой информации, а нарушение работы ЭВМ, системы ЭВМ или их сети являются несанкционированными, если на их осуществление нет разрешения оператора информационной системы. Как ясно видно, в числе субъектов, санкционирующих действия с информацией, ЭВМ, системой ЭВМ или их сетью, никаких правообладателей объектов интеллектуальной собственности нет.&lt;/p&gt;  &lt;p&gt;Но давайте, всё-таки, предположим, что правообладатель находится в числе субъектов, могущих санкционировать действия над информацией. Из этого вытекает,  что вредоносность не есть имманентное свойство самой программы, а зависит от обстоятельств. Ведь действие без санкции со стороны обладателя информации или оператора информационной системы (пользователя) – это конструктивная особенность программы. Она не запрашивает в диалоговом режиме согласия на проводимые операции либо запускается скрытно от пользователя либо замаскирована под программу другого типа. Это всё признаки самой программы, выявляемые в ходе компьютерно-технической экспертизы. Отсутствие же санкции правообладателя – это не свойство программы, а часть отношений между ним и пользователем. Правообладатель может дать или не дать разрешение, программа же от этого не изменится. Программа «не знает» об условиях договора между пользователем и правообладателем.&lt;/p&gt;  &lt;p&gt;Более того, законодательством предусмотрены случаи, когда разрешения  (санкции) правообладателя не требуется для использования произведения. То есть, санкции нет, а действия правомерные. Например, исправление явных ошибок в компьютерной программе, или её адаптация. В отношении же обладателя информации или оператора информационной системы таких случаев не бывает. Там связь однозначная: есть санкция – правомерно, нет санкции – неправомерно.&lt;/p&gt;  &lt;p&gt;То есть, если предположить, что правообладатель входит в число дающих «санкцию» на действия с информацией, то одна и та же программа будет вредоносной и не вредоносной в разных случаях. Как же тогда эксперт сможет оценить её? Вредоносность – технический факт. А сделанное предположение превратило бы его в факт юридический, судить о котором эксперт не уполномочен [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164404663" name="ret8"&gt;8&lt;/a&gt;]. Мы пришли к  противоречию. В этих условиях следует признать, что правообладатель объекта интеллектуальной собственности не вправе санкционировать действия с информацией.&lt;/p&gt;  &lt;p&gt;Таким образом, авторы предлагают следующее разъяснение термина  «вредоносная программа».&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Вредоносной следует считать программу для ЭВМ, объективным свойством которой является её способность осуществлять неразрешённые обладателем информации уничтожение, блокирование, модификацию либо копирование этой информации или неразрешённые оператором информационной системы нарушения работы этой информационной системы (ЭВМ, системы ЭВМ или их сети), причём, те и другие действия – без участия и без предварительного уведомления  вышеуказанных субъектов.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Данное разъяснение ни в чём не противоречит формулировке УК и положениям закона «Об информации...» и в то же время снимает упомянутые выше неясности в толковании применяемых терминов.&lt;/p&gt;  &lt;p&gt;Примечательно, что самостоятельно выработанная авторами статьи позиция по трактовке вредоносности программ во многом совпала с мнением, высказанным в [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411452"&gt;4&lt;/a&gt;]: «Вредоносность или полезность соответствующих программ для ЭВМ определяется не в зависимости от их назначения, способности уничтожать, блокировать, модифицировать, копировать информацию (это – вполне типичные функции абсолютно легальных программ), а в связи с тем, предполагает ли их действие, во-первых, предварительное уведомление собственника компьютерной информации или другого добросовестного пользователя о характере действия программы, а во-вторых, получение его согласия (санкции) на реализацию программой своего назначения. Нарушение одного из этих требований делает  программу для ЭВМ вредоносной».&lt;/p&gt;  &lt;p&gt;Аналогичная позиция высказывается и в [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161411900"&gt;5&lt;/a&gt;]:  «В качестве наиболее важных особенностей подобных компьютерных программ принято выделять несанкционированность их действия и способность уничтожить, блокировать, копировать или модифицировать информацию… Несанкционированность вредоносной программы означает, что ее запись, хранение в ЭВМ или на машинном носителе и последующая активизация происходят помимо воли правомерного владельца информационного ресурса. Это проявляется в отсутствии предварительного  оповещения пользователя о появлении вредоносной программы и последующем  игнорировании его возможного запрета на действие такой программы».&lt;/p&gt;  &lt;h2&gt;Отделение защиты информации от охраны авторских прав&lt;/h2&gt;  &lt;p&gt;В законе «Об информации...» определяются термины  «информация» и «обладатель информации» («владелец информации» по старой редакции закона), но в этом законе ничего не  говорится о произведениях и правообладателях. Более того, здесь же прямо указывается, что положения закона «не распространяются на отношения, возникающие при правовой охране результатов интеллектуальной деятельности и приравненных к ним средств индивидуализации» (ч. 2 ст. 1)  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164406972"&gt;15&lt;/a&gt;]. Следовательно, определяемый этим законом термин «информация» не может применяться к отношениям с интеллектуальной собственностью.&lt;/p&gt;  &lt;p&gt;В законе «Об авторском праве...», напротив, не используются термины «информация» и «обладатель информации». Вместо этого там говорится о «произведении» и  «правообладателе». Также, в этом законе говорится, что авторское право не распространяется на «сообщения о событиях и фактах, имеющие информационный характер» [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164406078" name="ret13"&gt;13&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt;То есть, законодатель намеренно разделяет различные виды информационных отношений – разделяет их и при помощи терминологии, и иными способами. В одном случае объект регулирования именуется «информацией», а в  другом случае «произведением».&lt;/p&gt;  &lt;p&gt;Программа для ЭВМ является произведением. И одновременно она является  компьютерной информацией. Эти две характеристики применяются при разных общественных отношениях, которые, регулируются разными нормативными актами и,  как это указано, не пересекаются друг с другом. Программа-произведение  охраняется законом, и программа-информация охраняется законом, но другим. Но  при анализе одного вида охраны недопустимо переносить выводы на другой вид охраны. Одно и то же физическое лицо может являться автором и обладать  авторскими правами. Одновременно то же лицо может являться потребителем и  обладать соответствующими правами потребителя. Однако недопустимо при нарушении авторских прав применять санкции за нарушение прав потребителя и наоборот, хотя  лицо – одно и то же в обоих правоотношениях.&lt;/p&gt;  &lt;p&gt;Для окончательного разделения понятий «информация» и  «произведение» законодатель ввёл в закон «Об авторском праве...» статью 48.1, говорящую о технических средствах защиты авторских прав (ТСЗАП) и соответствующих нарушениях. Понятно, что внесение этих положений было бы бессмысленно, если бы преодоление ТСЗАП являлось бы  «доступом к информации», а средства такого преодоления – вредоносными программами.&lt;/p&gt;  &lt;p&gt;В главе 28 УК, как и в законе «Об информации…» используется термин «информация», но отсутствуют термины  «произведение» и «правообладатель». В статье 146 УК, как и в законе «Об авторском праве…», напротив, не употребляются термины «информация» и «обладатель информации», так как  они не предназначены для описания правоотношений, связанных с интеллектуальной собственностью.&lt;/p&gt;  &lt;p&gt;Таким образом, отношения, возникающие при обеспечении защиты информации, существуют независимо от отношений, возникающих при правовой охране результатов интеллектуальной деятельности.&lt;/p&gt;  &lt;p&gt;Как известно [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref164404537" name="ret12"&gt;12&lt;/a&gt;], статьи в особенной части УК сгруппированы в главы по признакам родового объекта преступления. Объектом преступления во всех составах 28 главы УК (ст. 272-274) являются общественные отношения, связанные с безопасным использованием информационных систем. Не компьютерная информация как таковая, а именно отношения. Как неправомерный доступ, так и использование вредоносных программ посягают не на компьютерную информацию как таковую, а на интересы пользователя (оператора,  в терминах закона «Об информации...») и владельца информационных систем. Следовательно, санкция именно этих лиц имеет значение для квалификации деяния.&lt;/p&gt;  &lt;p&gt;Объектом преступления, предусмотренного статьёй 146 УК, являются интересы правообладателя. Следовательно, санкция правообладателя имеет значение для квалификации деяния по этой статье.&lt;/p&gt;  &lt;p&gt;Как легко видеть, для рассматриваемых составов не совпадают объекты преступления. Как следствие, не совпадают и лица, уполномоченные давать санкцию  на соответствующие действия (например, модификацию компьютерной информации и воспроизведение произведения).&lt;/p&gt;  &lt;p&gt;Главная ошибка в обсуждаемой практике состоит в том, что (то ли намеренно,  то ли из-за похожести терминов) при трактовке статей 272, 273 УК РФ  подставляются иные общественные отношения – совсем не те, что являются объектом преступления.&lt;/p&gt;  &lt;p&gt;Кроме того, если предположить, что доступ к информации санкционируется не её обладателем, а правообладателем объекта интеллектуальной собственности (что требуется признать, чтобы распространить действия статей 272 и 273 УК РФ на  объекты авторского права), то следует сделать однозначный вывод о том, что на информацию как таковую распространяется авторское право. А это уже явно  противоречит как упомянутым выше законам «Об авторском праве…» и  «Об информации…», так и Конституции, гарантирующей гражданам свободу сбора и обмена информацией.&lt;/p&gt;  &lt;h2&gt;Применение статей 272 и 273 УК РФ по совокупности в делах о  «взломе» программ&lt;/h2&gt;  &lt;p&gt;Нередко статьи 272 и 273 УК вменяются лицам, осуществившим преодоление технических средств защиты авторских прав (ТСЗАП), по совокупности. При этом в обвинении указывается, что под состав преступления, предусмотренный статьёй 273, подпадает использование «вредоносной программы», отключающей систему защиты, а под состав статьи 272 подпадает само отключение системы защиты, так как оно «является результатом неправомерного доступа к охраняемой законом компьютерной информации».&lt;/p&gt;  &lt;p&gt;Однако такое использование статей 272 и 273 приводит к логическому противоречию.&lt;/p&gt;  &lt;p&gt;Если верно обвинение в деянии, соответствующем составу  ч. 1 ст. 272, то тогда нельзя признать  программу-«взломщик» вредоносной, так как отсутствует заведомость несанкционированного уничтожения, блокирования, модификации либо копирования информации, заложенная в эту программу для ЭВМ. Ведь «неправомерный доступ к компьютерной информации» происходит по умыслу того, кто этой программой пользуется, а не по умыслу автора используемой программы.&lt;/p&gt;  &lt;p&gt;Если же верно обвинение в деянии, соответствующем составу ч. 1  ст. 273, то несанкционированное уничтожение, блокирование, модификация либо копирование информации, происходит в силу их заведомости, то есть, эти последствия заложены в программу для ЭВМ её автором и не зависят от воли пользователя. В таком случае лицо, использующее вредоносную программу, не виновно в неправомерном доступе к компьютерной информации, а виновно лишь в использовании вредоносного программного обеспечения.&lt;/p&gt;  &lt;p&gt;Также, здесь, скорее всего, можно сослаться и на ч. 2 ст. 6 УК РФ, согласно которой «никто не может нести уголовную ответственность дважды за одно и то же преступление».&lt;/p&gt;  &lt;p&gt;В то же время, составы статей 272 и 273 не являются взаимоисключающими вообще. Разумеется, злоумышленник может сперва атаковать систему, осуществив к ней неправомерный доступ, а потом запустить в неё вирус или, наоборот, сперва запустить в систему вредоносную программу, которая даст возможность осуществить неправомерный доступ, и, затем, «взломать» систему. В указанных случаях никаких противоречий при совокупном вменении обеих стаей не возникнет. Однако в описанном выше контексте, составы статей исключают возможность их совместного применения.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Технические средства защиты авторских прав&lt;/h2&gt;  &lt;p&gt;Средства преодоления технических средств защиты авторских прав (ТСЗАП) включают в себя почти три десятка классов программ для ЭВМ  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161408804" name="ret9"&gt;9&lt;/a&gt;]. Практически все они относятся к обычному пользовательскому или системному программному обеспечению. В контексте настоящей статьи мы рассмотрим только «средства поиска и замены текстовых и двоичных последовательностей», «средства редактирования "ресурсов" объектных модулей», «средства загрузки объектных модулей и/или их динамической модификации в ОЗУ» и «программы эмуляции аппаратных средств».&lt;/p&gt;  &lt;p&gt;Первые три класса программ позволяют вносить изменения в двоичный код программ для ЭВМ (в том числе, и с целью преодоления ТСЗАП), записанных в оперативной или внешней памяти ЭВМ. Большая их часть работает в режиме диалога  с пользователем, либо требует предварительной настройки или предоставления необходимых дополнительных данных. Указанные программы загружаются для исполнения процессором только самим пользователем и работают в соответствии с его командами, предоставленными данными или выполненными им настройками. Таким образом, любые действия, осуществляемые этими программами с информацией, являются санкционированными оператором информационной системы, так как выполняются по его воле. При этом никак нельзя говорить о том, что подобные программы заведомо приводят к каким бы то ни было последствиям, так как все осуществляемые действия с компьютерной информацией полностью зависят от пользователя, управляющего программой.&lt;/p&gt;  &lt;p&gt;Вместе с тем, есть генераторы специализированных программ для ЭВМ. Сгенерированные ими программы в соответствии с заранее заданными настройками выполняют модификацию единственного чётко определённого файла (как правило, он идентифицируется по имени). Такую программу может сгенерировать (то есть, настроить) один пользователь, а использовать – совсем другой. Таким образом, подобная программа, действительно, заведомо приводит к определённым действиям с компьютерной информацией. В то же время, этого ещё не достаточно для признания таких программ вредоносными, так как указанные действия санкционированы пользователем, загружающим программу в оперативную память для исполнения процессором. Предполагается, что пользователю известно предназначение подобных программ и результат их работы. Если это так, ответственность за последствия запуска программы несёт пользователь, а не автор программы (то есть,  «вредоносным» в такой ситуации будет действие пользователя, а не программа сама по себе).&lt;/p&gt;  &lt;p&gt;Что касается программ эмуляции аппаратных средств с целью обхода ТСЗАП, они применяются для выполнения (подмены) функций электронных ключей защиты, ключевых дискет или защищённых от копирования дисков. Программы этого класса реализованы в виде системных драйверов, их применение не предусматривает (за редкими исключениями) никаких действий с кодом защищённой программы для ЭВМ. Оператор информационной системы вправе изменять конфигурацию операционной системы своей  ЭВМ по своему усмотрению, в частности, устанавливать, удалять и заменять одни системные драйверы другими. Если не признавать за ним такого права, будут считаться незаконными действия сразу всех операторов информационных систем.&lt;/p&gt;  &lt;h2&gt;Отделение средств преодоления ТСЗАП от вредоносных программ&lt;/h2&gt;  &lt;p&gt;С технической точки зрения, средства преодоления технических средств защиты авторских прав выполняют функцию, прямо противоположную выполняемой вредоносными программами. Деактивируя защиту от копирования или от запуска, эти средства превращают неработоспособные программы для ЭВМ в работоспособные. Целью же вредоносных программ является обратная операция – преобразование работоспособных программ в неработоспособные или вредоносные. В этом смысле ТСЗАП намного ближе ко вредоносным программам (кстати говоря, часто они используют технологии, впервые реализованные именно в вирусах).&lt;/p&gt;  &lt;p&gt;Таким образом, признать средства преодоления технических средств защиты авторских прав вредоносными программами никак нельзя.&lt;/p&gt;  &lt;p&gt;Технически возможно «скрестить» первые со вторыми и написать компьютерный вирус, который, распространяясь, будет вопреки воле пользователя модифицировать установленные в системе программы для ЭВМ таким образом, что используемые в них технические средства защиты авторских прав будут отключаться. Лишь в этом случае такой вирус можно будет признать вредоносной программой, но  только лишь по той причине, что указанные действия он будет выполнять без  санкции оператора информационной системы.&lt;/p&gt;  &lt;p&gt;Ещё одно доказательство того, что программы, позволяющие отключить ТСЗАП, не могут относиться ко вредоносным, существует на уровне делового оборота. Средства модификации программного кода и эмуляции аппаратных средств официально  распространяются на мировом рынке программного обеспечения многими компаниями,  и никто не пытается привлекать их представителей к уголовной ответственности за  создание и распространение вредоносного программного обеспечения.&lt;/p&gt;  &lt;p&gt;Даже сама компания «1С» разрешает своим легальным пользователям отключать технические средства защиты авторских прав на продукты линейки  «1С:Предприятие» при помощи программы «Sable»  [&lt;a href="http://forensics.ru/ras_tolkovanie.html#_Ref161409097" name="ret7"&gt;7&lt;/a&gt;], которую сама же объявила  «вредоносной».&lt;/p&gt;  &lt;p&gt;Ниже приведена цитата из указанной статьи.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;А.Н.Яковлев: «...в течение двух последних лет на специализированных семинарах юристы фирмы "1С" доводят до сведения заинтересованных лиц,  что фирма разрешает пользователям, легально приобретающим программы  "1С", использовать программу "Sable". Эта программа позволяет работать с программой "1С" без электронного ключа аппаратной защиты, используется всеми нелегальными пользователями программы "1С", за что ее разработчик Сергей Давыдюк в 2005 году был приговорен судом к двум годам лишения свободы условно. Несмотря на это, использование программы  "Sable" легальными пользователями программы "1С"  расценивается фирмой "1С" как адаптация программы  "1С"»&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Из этого факта, кстати, следует одно из двух: либо программа «Sable» не является вредоносной (т.к. одна и та же программа для ЭВМ не может быть в одной ситуации вредоносной, а в другой – нет), либо компания «1С» поощряет использование вредоносной программы, а, следовательно, отдельные её сотрудники могут быть привлечены к уголовной ответственности за соучастие.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Аргументы за отнесение средств преодоления ТСЗАП ко вредоносным программам  и их критика&lt;/h2&gt;  &lt;p&gt;Одним из аргументов тех, кто относит программные средства преодоления ТСЗАП  ко вредоносным программам, является то, что такие средства приводят к  модификации компьютерной информации, которая не санкционирована правообладателем. А если она не санкционирована правообладателем, значит, она  «несанкционированная». Логическая ошибка здесь состоит в применении  «правообладателя» к «информации». Как указывалось выше,  это термины из различных видов отношений. У «информации» бывает  лишь «обладатель». А «правообладатель» бывает лишь у «произведения». Это всё равно, что путать интеллектуальную собственность с собственностью вещной – непростительно для юриста.&lt;/p&gt;  &lt;p&gt;Другой аргумент наших оппонентов опровергнуть простой логикой не получится. Аргумент состоит в том, что в каждом конкретном уголовном деле эксперт признавал то или иное средство преодоления ТСЗАП вредоносной программой. Опровергнуть же заключение эксперта может лишь другой эксперт, да и то лишь,  если у суда появятся сомнения.&lt;/p&gt;  &lt;p&gt;Против такого можно спорить лишь в каждом конкретном случае. Авторы готовы  это делать и делали неоднократно. В распоряжении авторов имеются материалы множества уголовных дел описанного типа с весьма спорными заключениями экспертов. Чаще всего такие спорные экспертизы проводились в организациях, тесно связанных с правообладателями.&lt;/p&gt;  &lt;p&gt;В одних случаях экспертиза, сделавшая вывод о вредоносности, не была компьютерно-технической. Эксперты называют экспертизу  «автороведческой», «криминалистической» и даже просто «экспертизой». Но вывод о свойствах программы для ЭВМ может сделать только компьютерно-техническая (программно-техническая) экспертиза.  Автороведческая экспертиза такого вывода сделать не может. Настоящих экспертов  по вредоносным программам, то есть, специалистов из ЗАО «Лаборатории Касперского» и ООО «Санкт-Петербургская антивирусная лаборатория Данилова» (товарный знак «Доктор Веб») к подобным экспертизам почему-то не привлекают.&lt;/p&gt;  &lt;p&gt;В других случаях утверждение о вредоносности программы содержалось уже в формулировке вопросов, поставленных следователем перед экспертом. Понятно, что следователь не может вместо эксперта решать, является ли программа вредоносной. Все такие решения являются неправомерными.&lt;/p&gt;  &lt;p&gt;В некоторых случаях и вопросы поставлены корректно, и эксперт формально соответствовал требованиям. Однако вывод эксперта «представленная программа является вредоносной, поскольку приводит к несанкционированной модификации информации» был попросту неверным в силу высказанных ранее аргументов – указанную модификацию санкционирует пользователь (оператор  ИС).&lt;/p&gt;  &lt;p&gt;Есть даже почти анекдотический прецедент, когда эксперт признал вредоносной программой генератор ключей активации. Такая программа вообще никакой информации не изменяет, не копирует и, тем более, не уничтожает. Генератор из неких входных данных, вводимых пользователем, вычисляет некие выходные данные. Из трёх обязательных признаков вредоносной программы (заведомость, изменение информации  и отсутствие санкции) генератор ключей не обладает ни одним.&lt;/p&gt;  &lt;p&gt;Ещё один аргумент наших оппонентов состоит в том, что одна и та же программа может являться вредоносной или не являться таковой в зависимости от способа её использования. То есть, если у подозреваемого был умысел на уничтожение,  модификацию и т.д. информации, то программа является «заведомо приводящей  к…», то есть, вредоносной. Указанная логика очень быстро приводит к противоречию. Как известно, подавляющее большинство программ имеют штатные функции для уничтожения и (или) модификации тех или иных данных. Следуя логике наших оппонентов, практически любая существующая программа для ЭВМ будет признана вредоносной при соответствующих условиях её использования. А как же ответственность за создание вредоносных программ? Программируя функцию стирания файла, автор программы знал, что её использование «заведомо приводит»  к уничтожению информации, в том числе, охраняемой законом. Следовательно, почти  все авторы существующих на сегодняшний день программ для ЭВМ могут (неожиданно для самих себя) стать создателями вредоносной программы.&lt;/p&gt;  &lt;p&gt;Кроме того, если допустить справедливость вышеуказанного утверждения, то вредоносность программы не может устанавливаться в ходе экспертизы. Ведь эксперт не может оценить знания и намерения подозреваемого в конкретных условиях применения программы.&lt;/p&gt;  &lt;p&gt;C прецедентами уголовных дел обсуждаемой категории можно ознакомиться &lt;a href="http://consumer.nm.ru/272-273.htm"&gt;на веб-странице&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Выводы&lt;/h2&gt;  &lt;p&gt;Проведённый выше анализ и предъявленные доказательства верности позиции авторов позволяют говорить о том, что сложившаяся на сегодняшний день практика, допускающая привлечение к уголовной ответственности по статьям 272 и 273 УК за  деяния, заключающиеся в нарушении авторских прав на программы для ЭВМ, не соответствует закону. Указанные статьи уголовного закона ошибочно применяются к правоотношениям, не входящим в сферу действия 28-й главы УК. Фактически, люди, осуждённые по этим статьям, невиновны в неправомерном доступе к компьютерной информации или использовании вредоносных программ для ЭВМ. Следовательно, можно  даже поднимать вопрос о фактах привлечения к уголовной ответственности заведомо невиновных лиц.&lt;/p&gt;  &lt;p&gt;Действия представителей правоохранительных органов можно объяснить  недостаточным уровнем их «компьютерной грамотности», в то время как упрекнуть в этом юристов компаний-правообладателей нельзя. Следовательно, существует принципиальная возможность подачи индивидуальных или коллективных исков от имени осужденных по статьям 272 и 273 «пиратов» о возмещении нанесённого им материального и морального ущерба.&lt;/p&gt;  &lt;p&gt;Что касается мер по исправлению сложившейся ситуации, можно предложить следующее:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;инициировать рассмотрение одного из судебных дел с вменением состава преступления по статьям 272 и (или) 273 нарушителям авторских прав Верховным Судом РФ с целью получения соответствующего постановления; &lt;/li&gt;&lt;li&gt;инициировать публикацию Верховным Судом России разъяснений терминов, используемых в статьях 272 и 273 УК РФ; &lt;/li&gt;&lt;li&gt;проводить разъяснительную работу (например, посредством публикации соответствующих материалов) среди представителей правоохранительных органов, а также среди потенциальных нарушителей авторских прав (системных администраторов, программистов, «настройщиков» вычислительной техники и программного обеспечения); &lt;/li&gt;&lt;li&gt;разработать и ввести в действие новую редакцию 28-й главы УК,  соответствующую текущей практике информационной безопасности и современному уровню техники (например, на базе уголовного законодательства развитых  зарубежных стран).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Литература&lt;/h2&gt;  &lt;ol&gt;&lt;li&gt;&lt;a name="_Ref161408601"&gt;Богомолов М.В.&lt;/a&gt; &lt;a href="http://pu.boom.ru/book/index.html"&gt;Уголовная ответственность за неправомерный доступ к охраняемой законом  компьютерной информации&lt;/a&gt;. – Красноярск, 2002, Гл. 2, §4.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret1"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161408657"&gt;Даль В.И. Толковый словарь живого великорусского языка. – М., Государственное издательство иностранных и национальных словарей, 1955.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret2"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161412487"&gt;Комментарий к Уголовному кодексу Российской Федерации: Научно-практический комментарий. / Отв. ред. В.М. Лебедев. – М.: «Юрайт-М», 2001. – 736 с.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret3"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161411452"&gt;Комментарий к Уголовному кодексу Российской Федерации. Особенная часть / Под общей редакцией Генерального прокурора Российской Федерации, профессора Ю.И. Скуратова и Председателя Верховного Суда Российской Федерации В.М. Лебедева. – М., Издательская группа  «ИНФРА-М-НОРМА», 1996. – 592 с.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret4"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161411900"&gt;Комментарий к Уголовному кодексу Российской Федерации / Отв. ред. А.А. Чекалин; под ред. В.Т. Томина,  B.C. Устинова, В.В. Сверчкова. – М.: «Юрайт-Издат», 2002. – 1015 с.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret5"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161408739"&gt;Ожегов С.И. Словарь русского языка. –  М., «Русский язык», 1978.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret6"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161409097"&gt;"&lt;/a&gt;&lt;a href="http://www.krmagazine.ru/?archive/84/article2"&gt;Охота" на контрафакт&lt;/a&gt;. // Газета  «Компьютерные решения», № 84, 2006.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret7"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref164404663"&gt;Постановление Пленума Верховного Суда Российской Федерации № 15 от 19 июня 2006 г. &lt;/a&gt;&lt;a href="http://www.rg.ru/2006/06/28/postanovlenie.html"&gt;«О вопросах, возникших у судов при рассмотрении гражданских дел, связанных с применением законодательства об авторском праве и смежных правах»&lt;/a&gt;; пункт 15.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret8"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161408804"&gt;&lt;/a&gt;Середа С.А. &lt;a href="http://consumer.nm.ru/hacktool.htm"&gt;Анализ средств преодоления систем защиты программного обеспечения&lt;/a&gt; // ИНФОРМОСТ: Радиоэлектроника и Телекоммуникации. - 2002.  №; 4 (22).  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret9"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Середа С.А. &lt;a href="http://consumer.nm.ru/ch28ofcc.htm"&gt;Новые виды компьютерных злоупотреблений и 28 глава Уголовного кодекса Российской Федерации&lt;/a&gt;. / Тез. конф. «Право и  Интернет», Москва, 2005.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret10"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161408714"&gt; &lt;/a&gt;&lt;a name="_Ref164336520"&gt;&lt;/a&gt;&lt;a href="http://www.consultant.ru/popular/ukrf/"&gt;Уголовный Кодекс Российской Федерации&lt;/a&gt; от 13.06.1996 №; 63-ФЗ.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret11"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref164404537"&gt;Уголовное право: учебник. / Под. ред. проф.  Л.Д. Гаухмана – Москва, «Юриспруденция», 1999.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret12"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref164405420"&gt;&lt;/a&gt;&lt;a name="_Ref164406078"&gt;&lt;/a&gt;&lt;a href="http://www.fips.ru/avp/law/5351-1SN.HTM"&gt;Федеральный закон  «Об авторском праве и смежных правах»&lt;/a&gt; от 9 июля 1993 г. № 5351-I  (с изменениями от 19 июля 1995 г., 20 июля 2004 г.)  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret13"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="Ref14" href="http://www.fips.ru/avp/law/3523-1S.HTM"&gt;Федеральный закон «О правовой охране программ для электронных вычислительных машин и баз данных»&lt;/a&gt; от 23 сентября 1992 г. № 3523-1. ( &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret14"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref164406972"&gt;&lt;/a&gt;Федеральный закон &lt;a href="http://www.rg.ru/2006/07/29/informacia-dok.html"&gt;«Об информации,  информационных технологиях и о защите информации»&lt;/a&gt; от 27 июля 2006 г.  № 149-ФЗ.  &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret15"&gt;(назад)&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a name="_Ref161408763"&gt;Фролов А.В. Глоссарий терминов и определений по теме информационной безопасности. 2005.&lt;/a&gt; &lt;a href="http://forensics.ru/ras_tolkovanie.html#ret16"&gt;(назад)&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt;  &lt;div&gt;   &lt;br /&gt;  &lt;hr align="left" size="1" width="33%"&gt;    &lt;div id="ftn1"&gt;     &lt;p&gt;&lt;br /&gt;&lt;a href="http://forensics.ru/ras_tolkovanie.html#_ftnref1" name="_ftn1"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; &lt;small&gt;Лишним подтверждением     служит принцип «as is», который положен в основу абсолютно     всех лицензий на ПО – как коммерческих, так и «свободных».     Согласно этому принципу, авторы программы допускают её некорректную работу,     приводящую к порче или утрате информации пользователя, заранее предупреждают     об этом и отказываются от ответственности. Иными словами, возможность     случайного неправомерного доступа, приводящего к модификации, блокированию     или уничтожению информации, допускается всегда, всеми производителями     программного обеспечения.&lt;/small&gt;&lt;/p&gt;   &lt;/div&gt;   &lt;div id="ftn2"&gt;     &lt;p&gt;&lt;a href="http://forensics.ru/ras_tolkovanie.html#_ftnref2" name="_ftn2"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;small&gt;Автор программы,     конечно же, из вариантов исключается, поскольку иначе теряет смысл     ответственность за создание вредоносных программ.&lt;/small&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-6922257862991236178?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/6922257862991236178/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=6922257862991236178' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6922257862991236178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/6922257862991236178'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/blog-post_20.html' title='Расширительное толкование терминов «вредоносная программа» и «неправомерный доступ»'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-3951966311498446292</id><published>2009-10-20T23:40:00.000-07:00</published><updated>2009-10-20T23:43:24.861-07:00</updated><title type='text'>Тайна связи против технических средств защиты информации в Интернете</title><content type='html'>&lt;p class="author"&gt;Источник: &lt;a href="http://forensics.ru/zi-ts.html"&gt;http://forensics.ru/&lt;/a&gt;&lt;/p&gt;&lt;p class="author"&gt;Николай Николаевич Федотов,&lt;br /&gt;fnn@fnn.ru&lt;/p&gt;  &lt;h3&gt;Аннотация&lt;/h3&gt;  &lt;p&gt;&lt;i&gt;Конституционное право граждан на тайну связи придумано задолго до возникновения Интернета. Оно не знает таких понятий, как "логи", "хэш-функция" и "вирус". Новые информационные технологии и связанные с ними новые социальные явления нуждаются в согласовании со старыми, но "незыблемыми" правами человека. А нарушение оных при управлении современными компьютерными сетями носит характер повсеместный, но, к счастью, незлонамеренный. Постоянно углубляется пропасть между технарями и юристами - право не поспевает за развитием информационных технологий, а информационные технологии не поспевают за появлением всё новых и новых прав и обязанностей граждан. Соответственно с этим, появляются новые риски в работе операторов связи (провайдеров), а также предприятий, которые самостоятельно эксплуатируют информационные ресурсы. Анализу одной такой новой группы рисков и посвящена настоящая работа. Риски, связанные с тайной сообщений электросвязи и тайной личной жизни.&lt;/i&gt;&lt;/p&gt; &lt;p class="epig"&gt;&lt;i&gt;О вы, которые уверовали, не входите в дома, кроме ваших домов, пока не спросите позволения и пожелаете мира обитателям их. Если же не найдёте там никого, то не входите пока не позволят вам. А если вам скажут: "Уходите!", то уходите.&lt;/i&gt;&lt;br /&gt;Коран, сура 24 "Свет", аяты 27-28.&lt;br /&gt;(первый в истории нормативный документ, где закреплено право на тайну частной жизни) &lt;/p&gt;  &lt;h2&gt;1.  Технические специалисты и закон&lt;/h2&gt; &lt;p&gt;Тайна связи и раньше, в доинтернетовские времена, постоянно конфликтовала с требованиями безопасности. Но конфликты не были столь широки, как нынешние, поскольку "древние" средства связи - почта, телефон, телеграф - обслуживались относительно узким кругом технических специалистов. Да и вопросы безопасности тоже были уделом не слишком многочисленных "специальных товарищей". Сейчас обе эти сферы расширились, увеличив возможности для конфликтов. Нынешнее количество системных администраторов не идёт ни в какое сравнение с тогдашним количеством работников почты. А вопросы безопасности в Сети заботят ещё б&lt;b&gt;о&lt;/b&gt;льшее число людей - почти всех пользователей. &lt;/p&gt;&lt;p&gt;Итак, область потенциальных конфликтов техники и права расширилась. А кто призван решать эти конфликты? &lt;/p&gt;&lt;p&gt;На нынешнем этапе развития Сети мы столкнулись с очередным диалектическим противоречием, разрешение которого выведет нас на новый этап эволюции. Суть противоречия состоит в неспособности узких технических специалистов управлять глобальной сетью, на которую завязаны не только технические, но всё больше "гуманитарные" интересы граждан и организаций - и финансовые, и нравственные, и политические; словом, интересы нетехнического свойства. А методы управления применяются сугубо технические. И применяются они людьми с сугубо техническим способом мышлением. &lt;/p&gt;&lt;p&gt;Современные информационные технологии очень сложны. Управлять многообразным телекоммуникационным оборудованием в состоянии лишь специалисты высокой квалификации. "Высота" неизбежно выливается в "узость". Нужная квалификация приобретается годами. Обучаясь в своей технической области, они вынужденно упускают гуманитарную сторону образования. В результате многие из нас, ИТ-специалистов страдают так называемым &lt;i&gt;техническим варварством.&lt;/i&gt; &lt;/p&gt;&lt;p&gt;Односторонне развитый технарь не имеет даже элементарнейших, базовых знаний в области права, обладает весьма своеобразной моралью, не ориентируется в текущих общественных отношениях и вообще плохо социализирован. Он эффективно решает чисто технические задачи, но если столкнётся с проблемой политического, юридического или нравственного плана, то в лучшем случае не сможет её решить. А в худшем - станет действовать привычным технократическим методом, напоминая варвара среди культурных ценностей. Такие несоциализированные элементы были всегда. Но раньше они были обречены оставаться возле своего "станка" и не могли влиять на жизнь других людей. В наше время подобный тип вполне может очутиться возле Большой Кнопки. Потому, что только он способен её, эту кнопку обслуживать. &lt;/p&gt;&lt;p&gt;Неприятные следствия вышеописанного противоречия между новыми общественными отношениями в Сети и старыми методами управления Сетью пока накапливаются. (Например, одно из них - так называемая "проблема спама". Разрешить данный социально-экономический вопрос - вопрос о рекламе в Сети - пытаются технические специалисты доступными им техническими средствами, совершенно игнорируя экономические и социально-психологические факторы, которые как раз и являются здесь ключевыми. Естественно, вопрос не разрешается. Отсюда и "проблема" - как совокупность побочных последствий технократических попыток "решения".)&lt;a href="http://forensics.ru/zi-ts.html#prim01" name="fn01"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;В данной работе автор постарается хоть частично примирить "негуманитарных" сисадминов с конституционным правом граждан на тайну связи (ТС). &lt;/p&gt;&lt;h2&gt;2.  Что такое тайна связи?&lt;/h2&gt; &lt;p&gt;Тайна связи - это часть вторая статьи 23 Конституции РФ. Она гласит:  &lt;/p&gt;&lt;p&gt;&lt;tt&gt;"Каждый имеет право на тайну переписки, телефонных переговоров, почтовых, телеграфных и иных сообщений. Ограничение этого права допускается только на основании судебного решения"&lt;/tt&gt; &lt;/p&gt;&lt;p&gt;Подобное положение присутствовало и в прошлых конституциях (ст. 56 Конституции СССР 1977 года; ст. 128 Конституции СССР 1936 года), и в конституциях большинства зарубежных стран. Оно же утверждается во "Всеобщей декларации прав человека"&lt;a href="http://forensics.ru/zi-ts.html#prim02" name="fn02"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; 1948 года. Можно сказать, что ТС - общепринятое в мире положение. &lt;/p&gt;&lt;p&gt;Нарушением ТС признаётся ознакомление с охраняемым сообщением какого-либо лица кроме отправителя и получателя (его уполномоченного представителя). В некоторых видах связи, в силу их технических особенностей, допускается ознакомление с сообщением отдельных работников связи, как, например, при передаче телеграммы. В таких случаях нарушением ТС будет считаться не ознакомление, а разглашение содержимого сообщения. &lt;/p&gt;&lt;p&gt;Не следует путать право личности на ТС с правом юридических лиц на коммерческую тайну, а также с правом на профессиональную тайну (адвокатскую, врачебную и т.д.). Сообщения, содержащие другие виды тайн, также охраняются законом, но термин "ТС" относится только к личной жизни. &lt;/p&gt;&lt;p&gt;На всех операторов связи законом возложена обязанность принимать меры к охране ТС (ст. 63 закона "О связи"). &lt;/p&gt;&lt;p&gt;За нарушение ТС в России установлена уголовная ответственность, (ст. 138 УК РФ). Также возможна гражданская ответственность, если нарушение ТС повлекло материальный ущерб или моральный вред. &lt;/p&gt;&lt;p&gt;Откуда возникла ТС и зачем она нужна? &lt;/p&gt;&lt;p&gt;В настоящее время право на тайну связи считается составной частью так называемых "прав человека" - естественных и неотъемлемых прав личности, признанных на международном уровне. Само понятие "права человека" возникло в XVIII веке и опиралось оно на европейские философские традиции пяти-шести предшествующих веков. Первым документом, официально провозгласившим "права человека" в их современном виде, считается французская "Декларация прав человека и гражданина" 1789 года. Некоторые исследователи считают родоначальником современных "прав человека" Декларацию независимости США 1776 года, в которой также провозглашался набор прав личности, более-менее похожий на современный. Можно сказать, что эти два документа составили фундамент современной правовой парадигмы, поначалу действовавшей только в Европе и Новом свете, а позже распространённой на весь мир. Однако право на тайну переписки появилось в составе "прав человека" несколько позже - в документах ООН в 1945-1948 годах. &lt;/p&gt;&lt;p&gt;Первые разговоры о праве на "приватность" начались лишь в конце XIX века&lt;a href="http://forensics.ru/zi-ts.html#prim03" name="fn03"&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;. В первой половине 20 века положения о защите тайны личной жизни и тайны переписки появились во многих конституциях. Например, в США считается, что приватность и тайна связи охраняется Четвёртой поправкой к Конституции (1791). Однако так не считалось до 1928 года (дело Олмстеда), когда Верховный суд признал право на тайну почтовой переписки. В 1934 году действие этой поправки распространили и на телефонные переговоры, а позже и ещё шире - на любые личные коммуникации (дело Каца, 1967). &lt;/p&gt;&lt;p&gt;Право на тайну переписки (позже к переписке добавились телефонная, телеграфная и иная связь) является производным от права на тайну личной жизни (в англоязычной литературе употребляется термин "privacy" - приватность). &lt;a href="http://forensics.ru/zi-ts.html#lit02" name="litref02"&gt;[2]&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Почему же в XX веке было признано, что личная жизнь человека может сохраняться в тайне, хотя раньше тайна личной жизни не охранялась? &lt;/p&gt;&lt;p&gt;Рациональная основа этого права в том, что нецелевое использование персональных данных может нанести вред человеку. Персональные данные и сведения о личной жизни могут быть использованы для обмана, шантажа, вымогательства, для неэтичных методов маркетинга. Представляется, что данная аргументация слишком слаба для обоснования такого серьёзного правового института, как тайна личной жизни (приватность). &lt;/p&gt;&lt;p&gt;Скорее всего, обоснование следует искать в иррациональной области. У человека, являющегося представителем отряда приматов, есть врождённый "инстинкт территории" - неосознанное стремление защищать от любых вторжений иных особей некоторое личное пространство. И чувство дискомфорта, когда в такое пространство вторгаются, даже без враждебных намерений. "Личное пространство" подразумевает не только пространство как таковое, но и предметы личного пользования, а также личные документы (информацию). Это инстинктивно обусловленное чувство дискомфорта вызывает желание как-то изолировать личное пространство, в том числе, при помощи законодательного запрета. Есть желание, есть возможность - будет и закон. А логическое обоснование уж какое-нибудь придумают. &lt;/p&gt;&lt;p&gt;В XX веке, когда производительность труда достигла достаточно высокого уровня, чтобы позволить удовлетворять не только основные потребности людей, но всё более и более второстепенные, такие потребности стали постепенно закрепляться и законодательно (в первую очередь - в наиболее богатых странах). В их числе право на приватность, право на защиту от неприятных ассоциаций (та самая "политкорректность"), разнообразные новые "права потребителя", право на защиту от спама и так далее. &lt;/p&gt;&lt;p&gt;Итак, следует констатировать, что право на ТС является относительно недавним правовым нововведением, которое обусловлено ростом благосостояния общества и не является "критическим" для сохранения человеческой цивилизации, её культуры и научного потенциала. &lt;/p&gt;&lt;p&gt;Более того, "права человека" в определённых ситуациях могут использоваться (и использовались неоднократно) для оказания давления на те государства, которые недостаточно состоятельны, чтобы обеспечить их в полном объёме. Давления со стороны более богатых государств, которым полноразмерные "права человека" по карману. &lt;/p&gt;&lt;p&gt;Общественное сознание России и многих других стран до сих пор не признаёт право на ТС и тайну личной жизни частью естественных прав человека. Частично это объясняется тем, что пока ещё не реализованы в должной мере более важные права человека, такие как право на правосудие. Другая причина - в древних общественно-философских традициях Азии, в которых нет приоритета прав личности над правами общества (государства). Положение о приоритете индивидуальных интересов над общественными было привнесено из Европы. Некоторые исследователи выражают сомнения, что основанная на нём европейская правовая парадигма сможет быстро прижиться в России. &lt;/p&gt;&lt;h2&gt;3. Служебные каналы и средства связи&lt;/h2&gt; &lt;p&gt;Наиболее актуальным и наименее разъяснённым представляется следующий вопрос. Распространяется ли ТС на сообщения, передаваемые по служебным каналам и средствам связи? &lt;/p&gt;&lt;p&gt;Понятие ТС относится к частной жизни гражданина. Именно о частной жизни говорит 23 статья, да и вся 2 глава Конституции посвящена правам личности. Означает ли это, что не охраняются сообщения, передаваемые по служебным каналам и средствам связи? &lt;/p&gt;&lt;p&gt;С одной стороны, служебная корреспонденция не имеет отношения к личной жизни того, кто её отправляет или получает. С другой стороны, невозможно заведомо утверждать, что любая корреспонденция, отправляемая через служебные каналы связи, только служебная. Человек вполне может отправить по этим каналам личное письмо. Или смешать в одном сообщении личное со служебным. &lt;/p&gt;&lt;p&gt;С одной стороны, собственник средств связи вправе запретить передавать личные сообщения. С другой стороны, никакой собственник не может ограничить конституционные права гражданина. &lt;/p&gt;&lt;p&gt;Ответ на этот вопрос таков. &lt;b&gt;Право на ТС распространяется на все сообщения, передаваемые по служебным каналам связи.&lt;/b&gt; Кроме тех каналов, которые явно не приспособлены для охраны сообщений, например, переговоры по радио. Другое исключение - случай, когда работник дал явное согласие на ознакомление с его сообщением. Следует обратить внимание, что человек не может отказаться от своего права на ТС. Говорят, что это право неотчуждаемое&lt;a href="http://forensics.ru/zi-ts.html#prim04" name="fn04"&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;. То есть, любой отказ от права будет недействителен. Разрешение на ознакомление с одним или несколькими сообщениями - не то же самое, что отказ от права на ТС. Уведомление работника о том, что служебный канал связи прослушивается (контролируется) также не является эквивалентом вышеуказанного разрешения от работника. &lt;/p&gt;&lt;p&gt;Существует и иная, ещё более либеральная точка зрения на данный вопрос. &lt;a href="http://forensics.ru/zi-ts.html#lit05" name="litref05"&gt;[5]&lt;/a&gt; Согласно ей, ограничение права на ТС может быть единственным - по судебному решению, а любое разрешение гражданина на ознакомление с неопределённым множеством его сообщений будет недействительно. Такая точка зрения имеет под собой серьёзные основания, но она очень далека от нашей российской практики. &lt;/p&gt;&lt;p&gt;Могут возразить, а как же права собственника канала связи? А как же права владельца коммерческой тайны, которая может "утечь" через неконтролируемый канал связи? Ответ такой: право личности в данном случае превыше. Среди перечня прав обладателя информации, составляющей коммерческую тайну&lt;a href="http://forensics.ru/zi-ts.html#prim05" name="fn05"&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt;, отсутствует право на ознакомление с передаваемыми сообщениями и вообще право как-либо мониторить каналы связи с целью проверки режима коммерческой тайны. Самое большее, на что имеет право обладатель комтайны - требовать от иных лиц конфиденциальности и неразглашения. &lt;/p&gt;&lt;p&gt;Если работник предприятия, вопреки установленным правилам, воспользовался служебными средствами связи для передачи личного сообщения, то он совершил дисциплинарное нарушение. За это он подлежит дисциплинарной ответственности, а также должен будет возместить ущерб. А работник службы безопасности предприятия, который данное нарушение выявил, подлежит уголовной ответственности за нарушение ТС. Иными словами, совершение работником правонарушения не лишает его конституционных прав и не является оправданием такого преступления, как нарушение тайны связи. &lt;/p&gt; &lt;p&gt;Следует уточнить, что право на ТС защищает не сами служебные сообщения, а каналы их передачи. Никто не имеет права проверять все сообщения в канале связи на том основании, что среди них может попасться недозволенное. Но если сообщение уже чётко квалифицировано каким-либо правомерным способом как служебное или рекламное&lt;a href="http://forensics.ru/zi-ts.html#prim06" name="fn06"&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/a&gt;, с ним можно ознакомиться, не боясь нарушить ТС. Таким образом работают системы автоматического обнаружения вирусов и спама в электронной почте. Проходящие письма "читаются" не человеком, а программой, которая субъектом права не является. И только когда есть уверенность в том, что конкретное сообщение не является личным (то есть, это вредоносная программа или реклама), с ним можно совершить определённые действия, в том числе, ознакомиться администратору мейлсервера. Надёжность современных почтовых антивирусов близка к 100%. (В данном аспекте под надёжностью следует в первую очередь понимать отсутствие ошибок второго рода, то есть, ложных срабатываний.) У самых лучших моделей антиспамового ПО вероятность ложных срабатываний также низка. Поэтому когда администратор мейлсервера контролирует почтовый трафик на основании такой диагностики, его нельзя обвинить в умысле на нарушение ТС. К сожалению, кроме лучших продуктов используются также и посредственные, и совсем негодные. Многие образцы антиспамового ПО имеют весьма высокий процент ложных срабатываний. То есть, они легко могут принять валидное письмо (в том числе, личного характера) за спам, и об этой их склонности к ошибкам заранее известно. Руководствоваться информацией от такого ПО рискованно в плане ответственности за нарушение ТС. &lt;/p&gt;&lt;p&gt;Не исключено, что в скором времени на основе опробованных антиспамовых технологий контентного анализа появятся автоматические детекторы служебных сообщений, имеющие крайне низкий уровень ложных срабатываний. Тогда проводимый службой безопасности мониторинг электронной почты предприятия перестанет быть незаконным. &lt;/p&gt;&lt;h2&gt;4.  Сведения о...&lt;/h2&gt; &lt;p&gt;Закон приравнивает сами сообщения электросвязи и сведения о таких сообщениях&lt;a href="http://forensics.ru/zi-ts.html#prim07" name="fn07"&gt;&lt;sup&gt;7&lt;/sup&gt;&lt;/a&gt;. Сведения о сообщениях должны защищаться так же, как сами сообщения. Для "сведений о", в частности, действует такой же порядок передачи их правоохранительным органам - только по судебному решению. Определено, что для телефонной связи такими "сведениями, приравненными" являются: время разговора, его продолжительность, номера вызывающего и вызываемого абонентов. По аналогии можно заключить, что применительно к электронной почте такими сведениями, подлежащими охране наравне с самим сообщением, являются: адреса отправителя и получателя, время отправления или доставки, длина сообщения. То есть, те данные, которые обычно фиксируются в логе мейлсервера. &lt;/p&gt;&lt;p&gt;Относится ли к охраняемым сообщениям веб-трафик? Доступ человека к публичным вебстраницам - это коммуникация между человеком и не-человеком. То есть, сообщение, передаваемое по протоколу HTTP от публичного вебсервера к пользователю (равно как и запрос пользователя к серверу) не является аналогом письма от человека к человеку. С другой стороны, "посещение" человеком определённой вебстраницы, без сомнения, может считаться частью его личной жизни, хотя эта вебстраница и доступна неопределённому кругу лиц. Значит, факт запроса вебстраницы пользователем - факт из его личной жизни и охраняется правом на тайну личной жизни. &lt;/p&gt;&lt;p&gt;Не вполне ясно соотношение права на тайну личной жизни и права на тайну связи. С одной стороны, второе представляется производным от первого. Но эти два права провозглашаются отдельными положениями Конституции (ч.1 ст.23 и ч.2 той же статьи). И режим охраны у двух этих прав несколько различается. И ответственность за нарушение каждого из этих прав устанавливается отдельными статьями УК (137 и 138 соответственно). Значит, это самостоятельные права, и второе, хотя и произошло от первого, не является его частным случаем. Так или иначе, нарушать право на тайну личной жизни граждан оператору связи тоже нельзя. Поэтому автор рекомендует логи доступа по протоколу HTTP защищать в том же режиме, что и логи мейлсервера. &lt;/p&gt;&lt;h2&gt;5.  На кого возложена обязанность охранять ТС?&lt;/h2&gt; &lt;p&gt;В статье 63 закона "О связи" сказано как отрезано: "Операторы связи обязаны обеспечить тайну связи" Понятно, что обеспечить - не то же самое, что гарантировать. "Обеспечить" - это означает предпринять все меры в разумных пределах, чтобы ТС была соблюдена при обычных условиях эксплуатации сети связи. Разумеется, каждый оператор должен обеспечивать ТС лишь на собственной сети, в сфере своей ответственности&lt;a href="http://forensics.ru/zi-ts.html#prim08" name="fn08"&gt;&lt;sup&gt;8&lt;/sup&gt;&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;В числе этих мер должна быть как защита ТС от "внешних" угроз, так и от собственных сотрудников. &lt;/p&gt;&lt;p&gt;Ведя борьбу против спама, вирусов, порнографии и других действительных и мнимых угроз, технические сотрудники операторов связи очень часто забывают сверить свои действия с Конституцией и прочим законодательством. Автору даже приходилось слышать вполне искренние высказывания сисадминов такого плана: "Какое ещё законодательство? Мы же в Интернете!"&lt;a href="http://forensics.ru/zi-ts.html#prim09" name="fn09"&gt;&lt;sup&gt;9&lt;/sup&gt;&lt;/a&gt; Это и есть одно из проявлений ранее упоминавшегося технического варварства. Лишь поголовная юридическая неграмотность пользователей да древние российские традиции право(не)применения спасают персонал операторов связи от массовых репрессий. &lt;/p&gt;&lt;p&gt;Крупные и средние предприятия также часто имеют собственный сервер электронной почты и другие сетевые ресурсы. Однако при этом они оператором связи не считаются. На персонал таких предприятий не распространяется обязанность "обеспечить тайну связи". Тем не менее, совершенно игнорировать вопросы обеспечения ТС они не могут, потому что от ответственности за нарушение ТС никто их не освобождал. &lt;/p&gt;&lt;h2&gt;6.  Нарушения тайны связи в различных ситуациях&lt;/h2&gt; &lt;p&gt;Давайте проанализируем, в каких случаях возможно нарушение права на ТС при различных работах, связанных с защитой информации. &lt;/p&gt;&lt;h3&gt;6.1. Проверка почты на вирусы&lt;/h3&gt; &lt;p&gt;Лишь некоторые несведущие в праве лица допускают утверждения о якобы нарушении ТС, когда антивирус "читает" сообщения электронной почты. Разумеется, в этом нарушения нет, поскольку нет ознакомления какого-либо лица с сообщением - программа субъектом права не является. Не происходит нарушения и в тех случаях, когда заражённое сообщение (целиком или только его заголовки) возвращается отправителю. Бывает, что адрес отправителя вредоносная программа подменяет, тогда сообщение (или его часть) попадёт к ненадлежащему лицу. Это, конечно, неправильно, этого следует избегать, но такое нарушение вполне можно считать непреднамеренным. Явное и преднамеренное нарушение ТС - это перенаправление заражённых писем (их заголовков) третьему лицу, например, администратору. &lt;/p&gt;&lt;p&gt;Наиболее "чист" в правовом отношении следующий алгоритм действий антивируса. Если сообщение содержит вредоносный код в отчуждаемом виде (приложение, выделенный скрипт), то вредоносный код удаляется, а "очищенное" письмо пересылается по назначению с соответствующей пометкой. Если вредоносный код неотделим от сообщения (или вирус сам сгенерировал несущее его сообщение), то следует справиться в базе данных о том, склонен ли найденный вирус подменять адрес отправителя. Если да, то уведомление о вирусе направляется лишь получателю, если нет, то получателю и отправителю; само вредоносное сообщение при этом уничтожается. &lt;/p&gt;&lt;h3&gt;6.2. Детектирование и фильтрация спама&lt;/h3&gt; &lt;p&gt;Ситуация с автоматическим детектированием спама провайдером аналогична автоматической проверке на вирусы. До тех пор, пока письмо не перенаправляется какому-либо третьему лицу, ТС не нарушена. Простановка на письмах служебных пометок, означающих их классификацию (в частности, принадлежность к спаму) - наиболее безупречный в правовом отношении метод. &lt;/p&gt;&lt;p&gt;Фильтрация предусматривает детектирование спама тем или иным способом и последующее автоматическое возвращение либо уничтожение сообщения, если результат детектирования положительный. ТС, аналогично предыдущему случаю, здесь не нарушается. Зато нарушается закон "О связи", который признаёт лишь за адресатом право получить сообщение или отказаться от его получения&lt;a href="http://forensics.ru/zi-ts.html#prim10" name="fn10"&gt;&lt;sup&gt;10&lt;/sup&gt;&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;В отличие от антивирусного ПО, где процент ложных срабатываний пренебрежимо низок, антиспамовые средства могут ошибаться. Причём не просто могут. Процент ложных срабатываний - это главная характеристика любого антиспамового средства, у большинства он находится на приличном уровне - 1-3 процента. &lt;/p&gt;&lt;p&gt;Поэтому автоматическая фильтрация спама допустима лишь с явного разрешения получателя. Давая такое разрешение, получатель должен быть предупреждён, что антиспамовое ПО может ошибаться и отвергать (уничтожать) определённый процент валидной почты. Умалчивание об этом факте является обманом клиента. &lt;/p&gt;&lt;p&gt;Другое дело, что за нарушение ТС предусмотрена уголовная ответственность&lt;a href="http://forensics.ru/zi-ts.html#prim11" name="fn11"&gt;&lt;sup&gt;11&lt;/sup&gt;&lt;/a&gt;, а за недоставку сообщений возможна лишь гражданско-правовая ответственность, либо санкции к оператору связи со стороны лицензирующего органа. &lt;/p&gt;&lt;p&gt;У некоторых провайдеров практикуется автоматическое направление жалоб на спам. Поскольку "жалобная инстанция" не является ни отправителем, ни получателем сообщения, а ложные срабатывания исключить нельзя, такое автоматическое перенаправление незаконно. Направление жалобы (в которой полагается приводить заголовки или спамовое сообщение целиком) допустимо лишь самим получателем или с его согласия. &lt;/p&gt;&lt;p&gt;Последующее рассмотрение жалобы, переданной адресатом спама (а равно хранение, анализ и публикация таких жалоб), не нарушает права на ТС. &lt;/p&gt;&lt;h3&gt;6.3. Комплексный мониторинг интернет-коммуникаций&lt;/h3&gt; &lt;p&gt;В некоторых предприятиях и государственных органах под предлогом мер по обеспечению режима коммерческой тайны&lt;a href="http://forensics.ru/zi-ts.html#prim12" name="fn12"&gt;&lt;sup&gt;12&lt;/sup&gt;&lt;/a&gt; вводится комплексный мониторинг всех каналов связи, включая электронную почту. На рынке имеется несколько программных продуктов для такого мониторинга, например, "MIMEsweeper", "Дозор-Джет", "Websense" и другие. &lt;/p&gt;&lt;p&gt;Как уже отмечалось, обладание коммерческой тайной даёт предприятию некоторые права, обеспечивающие её сохранение. Они перечислены в законе "О коммерческой тайне". Среди этих прав нет права не мониторинг всех служебных сообщений. Такой мониторинг, если он предусматривает ознакомление человека с некоторыми сообщениями, незаконен. &lt;/p&gt;&lt;p&gt;Наличие явного разрешения работника на ознакомление с его сообщениями примиряет систему мониторинга с законодательством. Впрочем, следует отметить, что эту точку зрения разделяют не все юристы. Некоторые считают, что разрешение работника на ознакомление с неопределённым количеством его сообщений - недействительно в силу неотчуждаемости права на ТС. &lt;a href="http://forensics.ru/zi-ts.html#lit05"&gt;[5, 6]&lt;/a&gt; &lt;/p&gt;&lt;h3&gt;6.4. Изучение логов мейлсервера&lt;/h3&gt; &lt;p&gt;Как указывалось ранее, сведения о сообщении электронной почты охраняются так же, как и само сообщение. Казалось бы, ознакомление администратора с логами мейлсервера должно считаться нарушением ТС. Но это не так. Запрет на ознакомление всегда ограничен техническими особенностями системы связи. Когда ознакомление персонала требуется для корректной работы связи, оно допустимо - как в случае с передачей телеграмм. Для поддержания должной работы мейлсервера администратор должен в некоторых случаях обращаться к логам - это непреодолимая техническая особенность. В данном случае запрет на ознакомление с логом касается всех остальных работников оператора связи, а в отношении администратора действует запрет на разглашение полученных из логфайла сведений. &lt;/p&gt;&lt;h3&gt;6.5. Система обнаружения атак (IDS)&lt;/h3&gt; &lt;p&gt;Большинство систем обнаружения атак сетевого уровня (в дальнейшем - IDS) работают по сигнатурному принципу. То есть, они проверяют транзитные пакеты (как заголовки, так и содержимое пакетов) на соответствие заранее заданным шаблонам. В случае соответствия генерируется сигнал тревоги, при этом пакет или вся сессия могут быть сброшены. &lt;/p&gt;&lt;p&gt;В логах IDS всегда (или почти всегда) приводится вызвавший тревогу пакет или последовательность пакетов. В ряде случаев для анализа ситуации можно было бы обойтись лишь заголовками пакетов, но в общем случае потребуются полные данные - и заголовок, и содержимое. &lt;/p&gt;&lt;p&gt;Нельзя сказать заранее, может ли в пакете содержаться охраняемая ТС информация. Даже для каждой конкретной сигнатуры не всегда можно сделать такое утверждение. &lt;/p&gt;&lt;p&gt;Получается, что использование почти любой IDS приводит к нарушению ТС, поскольку подразумевается, что сотрудник знакомится с содержимым передаваемых по сети сообщений, среди которым могут быть и личные сообщения. &lt;/p&gt;&lt;p&gt;С другой стороны, ознакомление с логами IDS является необходимым для защиты от атак на сети - полностью автоматизировать действия IDS пока не представляется возможным. Необходимость анализа ситуации человеком - это как раз то непреодолимое техническое условие (как и прочтение телеграммы телеграфистом), которое переводит ознакомление в разряд законных действий. Разглашение остаётся незаконным. Понятно, что логи IDS также должны защищаться, поскольку могут содержать охраняемую информацию. &lt;/p&gt;&lt;p&gt;Можно возразить, что наличие IDS в сети не является абсолютно необходимым условием для функционирования системы связи. Более того, многие сети прекрасно обходятся безо всяких IDS, при этом нормально работают и отвечают требованиям нормативных актов. Следовательно, и ознакомление с логами IDS не является необходимым. &lt;/p&gt;&lt;p&gt;Обе вышеописанные позиции обоснованы. Окончательное слово в данном вопросе может сказать только суд. Мнения юристов, как это всегда бывает, расходятся. Тем не менее, большинство склоняется к тому, что анализ логов IDS назначенным на эту задачу оператором с целями защиты от сетевых атак следует признать законным. &lt;/p&gt;&lt;h3&gt;6.6. Изучение статистики трафика&lt;/h3&gt; &lt;p&gt;Статистическое обобщение данных обычно скрывает персональную информацию. А когда нет информации, относящейся к конкретной личности, не может быть и нарушения тайны личной жизни, а также тайны связи. Таким образом, если статистика трафика агрегирована не по пользователям (отдельным компьютерам), то ознакомление с такой статистикой ТС не нарушает. &lt;/p&gt;&lt;p&gt;Вопрос насчёт статистики, агрегированной по пользователям, представляется не вполне ясным. Из такой статистики часто можно извлечь информацию, затрагивающую тайну личной жизни, хотя и нельзя извлечь сведения об отдельных сообщениях электросвязи. На всякий случай рекомендуется ограничивать "персонализированную" (то есть, агрегированную по пользователям) статистику общим объёмом трафика. &lt;/p&gt;&lt;h3&gt;6.7. Другие ситуации&lt;/h3&gt; &lt;p&gt;На некоторых предприятиях применяются системы "цензуры", ограничивающие доступ к определённым вебсерверам или по определённым протоколам. Причём "чёрные" или "белые" списки ресурсов могут как составляться вручную, так и генерироваться автоматически на основании некоторых формальных признаков. Сюда же относятся системы, блокирующие рекламные баннеры, всплывающие окна, порнографию, потенциально вредоносный контент и т.д. Для всех таких систем действует один принцип: их функционирование законно, пока не происходит ознакомление человека с передаваемыми сообщениями или сведениями о них (какой пользователь когда на какой ресурс обращался). &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Как видно из проведённого рассмотрения, организация работ по технической защите информации изобилует различными юридическими "тонкостями", которые не могут быть известны техническим специалистам. И это - лишь стандартные ситуации, а сколько возможно нестандартных? &lt;/p&gt;&lt;h2&gt;7.  Ответственность за нарушение тайны связи&lt;/h2&gt; &lt;p&gt;За нарушение права на ТС в России предусмотрена уголовная ответственность - согласно статье 138 УК. Эта статья так и называется - "Нарушение тайны переписки, телефонных переговоров, почтовых, телеграфных или иных сообщений". В ней три части: первая и вторая говорят собственно о нарушении ТС, а часть третья - о производстве и сбыте специальных технических средств, предназначенных для нарушения ТС. &lt;/p&gt;&lt;p&gt;Статистика сообщает, что уголовные дела по данной статье время от времени возбуждаются и даже иногда доходят до суда. Наиболее популярна часть третья, но и по первым двум частям прецеденты тоже есть. В большинстве случаев 138-я статья идёт не самостоятельно, а "в довесок" к таким преступлениям как мошенничество, незаконное предпринимательство, превышение полномочий охранных или детективных служб, злоупотребление должностными полномочиями, шпионаж и т.п. &lt;/p&gt;&lt;p&gt;Следует констатировать, что практика применения ответственности за нарушение ТС на сегодняшний день недостаточная. Данное преступление небольшой тяжести блекнет перед лицом иных современных преступлений - огромных хищений, террористических актов и множественных бытовых убийств. Надо признать, что сегодня для лица, совершающего данное преступление, риск подвергнуться уголовной ответственности за него весьма невелик. Если, конечно, не будет особой заинтересованности правоохранительных органов или, как говорят, "заказа" на определённого "хозяйствующего субъекта". &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Как можно оценить перспективы законного разбирательства, если пользователь корпоративной информационной системы пожелает защитить свои права на тайну связи или тайну личной жизни, нарушаемые работодателем? Например, несанкционированный мониторинг электронной почты. В условиях практического отсутствия отечественных прецедентов дать такую оценку представляется затруднительным. Единственный верный способ - дождаться, когда появится первый такой "правдоискатель", готовый отстаивать свои права из принципа (то есть, не считаясь с практической нецелесообразностью этого процесса) и посмотреть, что у него получится. &lt;/p&gt;&lt;p&gt;Можно лишь дать некоторые рекомендации по досудебному урегулированию таких вопросов. Удобнее будет избрать механизм уголовного разбирательства, нежели гражданского. Тогда бремя доказывания правонарушения возлагается на правоохранительные органы. Самостоятельно получить доказательства несанкционированного применения системы мониторинга электронной почты будет затруднительно. &lt;/p&gt;&lt;p&gt;Даже "профессиональные" российские правозащитники признают, что наш народ пока не готов всерьёз воспринимать посягательства на тайну личной жизни (приватность). &lt;a href="http://forensics.ru/zi-ts.html#lit02" name="litref02"&gt;[2]&lt;/a&gt;  &lt;/p&gt;&lt;h2&gt;8.  Рекомендации&lt;/h2&gt; &lt;p&gt;В целом риск для оператора связи, связанный с нарушением ТС, следует признать низким. Учитывая малое количество судебных прецедентов, давние русские традиции, а также несовершенство методов доказывания в компьютерно-сетевой сфере, провайдер может не применять особых мер для обеспечения ТС сверх общепринятых. &lt;/p&gt;&lt;p&gt;В то же время, для надёжности автор рекомендует каждому интернет-провайдеру ряд недорогих в осуществлении мероприятий, которые должны снизить риск. &lt;/p&gt;&lt;ol&gt;&lt;li&gt; Следует признать, что технари, управляющие сетями связи, как правило, не имеют знаний в правовой и иных гуманитарных областях и неспособны самостоятельно оценивать, учитывать и применять требования законодательства, в частности, касающиеся обеспечения ТС. В то же время, юристы оператора связи (если таковые вообще есть в штате) не способны дать технарям конкретные рекомендации по данному вопросу в силу того, что они, в свою очередь, не имеют соответствующих технических знаний и неспособны понять принципы работы сетей связи. Оптимальным решением было бы иметь специалиста, одинаково хорошо разбирающегося в обеих областях, однако автор сознаёт, что это затруднительно - такие специалисты крайне редки. Рекомендуется постараться организовать взаимодействие технаря и юриста; желательно, чтобы задачи им ставил руководитель, компетентный в финансовых вопросах. &lt;/li&gt;&lt;li&gt; Не следует применять автоматических антивирусных и антиспамовых систем, у которых процент ложных срабатываний существенный. В настоящее время хорошим показателем считается 0,0001, удовлетворительным - 0,001, неудовлетворительным - 0,01 и выше. &lt;/li&gt;&lt;li&gt; Не следует предоставлять своим сотрудникам (а тем более - клиентам и другим посторонним лицам) доступ к логам мейл-сервера, прокси-сервера, межсетевого экрана, системы обнаружения атак и иных систем, которые могут фиксировать какие-либо сведения о передаваемых по сети сообщениях. Такой доступ должен иметь строго ограниченный круг лиц. Желательно, чтобы в должностной инструкции каждого из них была прописана обязанность не разглашать соответствующие сведения, использовать их только для управления сетью и принимать меры к защите этой информации. &lt;/li&gt;&lt;li&gt; Организовывать мониторинг электронной почты сотрудников или комплексный мониторинг всех коммуникаций предприятия не желательно без веских на то оснований. Прежде чем принять такое решение, следует тщательно оценить риск утечки коммерческой тайны и риск непроизводительной траты рабочего времени. Часто такие риски преувеличиваются собственными службами безопасности предприятия или теми, кто желает продать вам средства для мониторинга. &lt;/li&gt;&lt;li&gt; Если принято решение о мониторинге электронной почты сотрудников и других видов служебных коммуникаций, недостаточно просто поставить сотрудников в известность. Следует получить письменное разрешение от каждого (отдельным документом или в составе трудового договора). Предлагаемая формулировка: "Я, Такойто Такойтович, даю разрешение Предприятию в лице уполномоченных на то сотрудников службы безопасности на ознакомление с сообщениями, передаваемыми мной, получаемыми мной или адресованными мне, которые передаются или поступают по средствам связи, принадлежащим или используемым Предприятием. В число указанных средств связи входят следующие: персональные компьютеры сотрудников, сервер электронной почты Предприятия, сервер доступа в Интернет, цифровые каналы связи, арендуемые Предприятием..." Надо отдавать себе отчёт, что даже в случае рекомендованного оформления остаётся небольшой риск, что мониторинг каналов связи будет признан судом неправомерным. &lt;/li&gt;&lt;li&gt; Статистику работы пользователей в сети не следует агрегировать по пользователям или по адресам (компьютеров) пользователей за исключением общего объёма трафика. Другие виды агрегирования (по времени, по протоколам, по удалённым адресам, по большим группам пользователей) можно считать безобидными с точки зрения нарушения ТС и тайны личной жизни. &lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;9.  Заключение&lt;/h2&gt; &lt;p&gt;Право на тайну связи, несмотря на то, что формально оно существует в нашей стране несколько десятилетий, непривычно для большинства наших граждан. Русские (советские) люди не воспринимают ТС как нечто ценное, а нарушение оной - как серьёзное посягательство на их права. Распространена точка зрения "Мне нечего скрывать, я честный человек" или "Пусть преступники прячутся, а нам-то зачем?". В подобных рассуждениях с логикой всё в порядке. Право на ТС как производное от права на тайну личной жизни (приватность) обусловлено не столько логикой, сколько традициями западного либерализма. Традиции эти пришли в Россию извне и пока не очень хорошо прижились. Вряд ли русский менталитет изменится в ближайшем будущем. &lt;/p&gt;&lt;p&gt;Следовательно, несмотря на всемерную законодательную поддержку, защита ТС на практике будет в России весьма затруднена. &lt;/p&gt;&lt;p&gt;Автор рекомендует в деятельности по технической защите информации учитывать ТС, но не присваивать этому вопросу высший приоритет. &lt;/p&gt;&lt;h3&gt;Примечания&lt;/h3&gt; &lt;ul&gt;&lt;li&gt; &lt;a name="prim01"&gt;1&lt;/a&gt; Подробнее об этом - в статьях автора &lt;a href="http://www.spamtest.ru/document.html?id=0011"&gt;"Спам обречён"&lt;/a&gt; // Мир ПК, #11/2003 и &lt;a href="http://www.spamtest.ru/document.html?context=15928&amp;amp;pubid=19211"&gt;"Возможен ли компромисс со спамерами"&lt;/a&gt; // электронный журнал "Спамтест"  &lt;a href="http://forensics.ru/zi-ts.html#fn01"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim02"&gt;2&lt;/a&gt; Принята и провозглашена резолюцией 217 А (III) Генеральной Ассамблеи ООН от 10 декабря 1948 года. Положение о тайне связи содержится в статье 12. &lt;a href="http://www.un.org/russian/documen/declarat/declhr.htm"&gt;Полный текст&lt;/a&gt;  &lt;a href="http://forensics.ru/zi-ts.html#fn02"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim03"&gt;3&lt;/a&gt; Луис Брэндейс и Сэмюэль Уоррен. "The Right to Privacy" - журнал "Harvard Law Review", 1890 год. см. http://www.louisville.edu/library/law/brandeis/privacy.html &lt;a href="http://forensics.ru/zi-ts.html#fn03"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim04"&gt;4&lt;/a&gt; См. ст.17 Конституции РФ. &lt;a href="http://forensics.ru/zi-ts.html#fn04"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim05"&gt;5&lt;/a&gt; Установлен законом "О коммерческой тайне" (N98-ФЗ), ст.7,8,9. &lt;a href="http://forensics.ru/zi-ts.html#fn05"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim06"&gt;6&lt;/a&gt; Рекламное сообщение (спам) предназначено неопределённому кругу лиц, следовательно, оно не считается личным и не охраняется. &lt;a href="http://forensics.ru/zi-ts.html#fn06"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim07"&gt;7&lt;/a&gt; Это лишний раз подтверждено определением Конституционного Суда РФ от 02.10.03 N 345-О (см. http://www.rg.ru/2003/12/10/svjaz-doc.html). &lt;a href="http://forensics.ru/zi-ts.html#fn07"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim08"&gt;8&lt;/a&gt; Области ответственности операторов связи могут быть разграничены не только пространственными рамками, но и логическими уровнями сетевых протоколов. Например, хостинг-провайдер отвечает за уровни 5-7, магистральный провайдер за уровни 3-4, канальный провайдер за уровни 1-2. И это касается одного и того же сигнала в одном и том же кабеле. &lt;a href="http://forensics.ru/zi-ts.html#fn08"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim09"&gt;9&lt;/a&gt; Среди сисадминов ещё более распространён миф о том, что "собственник средств связи вправе установить любые правила их использования". Столь наивное утверждение может вызвать лишь улыбку у юриста, но технические работники часто верят. &lt;a href="http://forensics.ru/zi-ts.html#fn09"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim10"&gt;10&lt;/a&gt; См. ст.62 закона "О связи". &lt;a href="http://forensics.ru/zi-ts.html#fn10"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim11"&gt;11&lt;/a&gt; Статья 138 УК РФ - "Нарушение тайны переписки, телефонных переговоров, почтовых, телеграфных или иных сообщений" &lt;a href="http://forensics.ru/zi-ts.html#fn11"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a name="prim12"&gt;12&lt;/a&gt; Случай работы с государственной тайной рассматривать не будем. Это отдельная большая тема. &lt;a href="http://forensics.ru/zi-ts.html#fn12"&gt;&lt;&lt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;Литература&lt;/h3&gt; &lt;ol&gt;&lt;li&gt; &lt;a name="lit01"&gt;&lt;/a&gt;Луис Брэндейс и Сэмюэль Уоррен. &lt;a href="http://www.louisville.edu/library/law/brandeis/privacy.html"&gt;"The Right to Privacy"&lt;/a&gt; // журнал "Harvard Law Review", 1890 год.  &lt;/li&gt;&lt;li&gt; &lt;a name="lit02"&gt;&lt;/a&gt;Смирнов С. &lt;a href="http://www.hro.org/editions/privacy/"&gt;Прив@тность&lt;/a&gt;. - Москва, издательство "Права человека", 2002. - 96 с. ББК 67.91; ISBN 5-7712-0230-4. Текст в электронном виде:  &lt;/li&gt;&lt;li&gt; &lt;a name="lit03"&gt;&lt;/a&gt;Ваше право на неприкосновенность частной жизни (справочник). - Санкт-Петербург, "Гражданский контроль", 1996. &lt;/li&gt;&lt;li&gt; &lt;a name="lit04"&gt;&lt;/a&gt;Защита прав граждан при внедрении системы оперативно-розыскных мероприятий в сетях связи (автор и составитель Ю.И.Вдовин, "Гражданский контроль"). - СПб: "ЛИК" - 2000. &lt;/li&gt;&lt;li&gt; &lt;a name="lit05"&gt;&lt;/a&gt;Поликарпова О.Н. &lt;a href="http://www.infoforum.ru/detail.php?pagedetail=887"&gt;Законодательные основы защиты прав и интересов работника и работодателя в процессе обеспечения информационной безопасности предприятия.&lt;/a&gt; // ИНФОФОРУМ.РУ, 07.04.2004. &lt;/li&gt;&lt;li&gt; &lt;a name="lit06"&gt;&lt;/a&gt;Савельев М.С. &lt;a href="http://www.infosec.ru/themes/default/publication.asp?folder=1988&amp;amp;matID=1820"&gt;С утечкой информации нужно бороться!&lt;/a&gt; // PCWeek/RE, N37, 2002.  &lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-3951966311498446292?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/3951966311498446292/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=3951966311498446292' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3951966311498446292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/3951966311498446292'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/blog-post.html' title='Тайна связи против технических средств защиты информации в Интернете'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8919096798290387668</id><published>2009-10-17T12:35:00.000-07:00</published><updated>2009-10-17T12:39:08.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fuse'/><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mount'/><title type='text'>FTPFS или что можно сделать на базе FUSE</title><content type='html'>&lt;span class="submitted"&gt;Источник: &lt;a href="http://www.e-lug.ru/node/185"&gt;http://www.e-lug.ru/node/185&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;                               &lt;div class="content"&gt;&lt;p&gt;Скопирую на будущее. Вдруг пригодится опять.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Владелец одного из серверов, администрированием которого занимается наша компания, поставил такую забавную задачу. На его сервере присутствует громадный ftp-архив (2 storage по 6 ТБ каждый на данный момент). Неподалеку от этого сервера стоит другой сервер, на котором есть тоже интересный архив, причем постоянно обновляемый. Необходимо было сделать так, чтобы архив второго сервера стал как бы частью ftp-архива нашего сервера. При этом копировать данные с сервера на сервер не допускалось (ну там, дублирование информации и все такое).&lt;/p&gt; &lt;p&gt;Задача усложнялась тем, что на втором сервере стоит FreeBSD и ручек от его администрирования нам, естественно, никто не дал. После небольшого гугления было найдено 2 варианта решения данной проблемы:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;sshfs. то есть файловая система, работающая поверх ssh через FUSE (Filesystem in USEr space) &lt;/li&gt;&lt;li&gt;ftpfs, то есть то же самое, но только работающее поверх ftp&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Выбор был сделан в пользу ftpfs. Во-первых, очевидно что протокол ftp будет работать быстрее чем ssh, т.к. соединение не шифруется. Во-вторых, оба сервера находятся на одном и том же узле связи, никакой особой безопасности тут не требуется, тем более что второй сервер вообще разрешает анонимный доступ по ftp. Да, забыл добавить немаловажный факт: между серверами гигабитная сетка.&lt;/p&gt; &lt;p&gt;Итак, решение выбрано, приступаем к настройке. Первым делом, установим необходимые пакеты:&lt;br /&gt;&lt;code&gt;   apt-get install curlftpfs&lt;/code&gt;&lt;br /&gt;все, что нужно, debian скачает и установит сам. Дальше нужно создать точку монтирования (куда собственно подключать удаленный ftp):&lt;br /&gt;&lt;code&gt;   mkdir /home/ftp/cool-ftp&lt;br /&gt; chown user:group  /home/ftp/cool-ftp&lt;/code&gt;&lt;br /&gt;Монтируем ftp-шник:&lt;br /&gt;&lt;code&gt;   curlftpfs &lt;a href="ftp://ftp.host.ru/" title="ftp://ftp.host.ru/"&gt;ftp://ftp.host.ru/&lt;/a&gt; /home/ftp/cool-ftp/ -o ro,allow_other,uid=user,gid=gro&lt;/code&gt;&lt;br /&gt;Собственно, вот и всё. Почти :) Дело в том, что нормальные админы не занимаются развешиванием соплей, отваливающихся при ребуте сервера, а приколачивают все гвоздиками. В нашем случае, нужно прописать соответствующую строчку в /etc/fstab, чтобы при загрузке нашего сервера, ftp-шник подмонтировался автоматом. Делается это очень просто, путем добавления в /etc/fstab вот такой строчки:&lt;br /&gt;&lt;code&gt;   curlftpfs#anonymous:@ftp.host.ru       /home/ftp/cool-ftp/  fuse    ro,allow_other,uid=user,gid=group  0       0 &lt;/code&gt;&lt;br /&gt;Разумеется, так же полезно добавить строчку "fuse" в файл /etc/modules, чтобы модуль fuse был автоматом загружен в ядро.&lt;br /&gt;Да, чуть не забыл добавить. Не знаю почему, но uid=user,gid=group у меня на самом деле не работало. Вместо этого я написал uid=1001 (цифровой идентификатор юзера user, который можно получить, выполнив id -u user) и, соответственно, gid=...&lt;/p&gt; &lt;p&gt;Еще, кстати, полезно сделать вот так:&lt;br /&gt;&lt;code&gt;   ln -s /usr/bin/curlftpfs /sbin/mount.curlftpfs&lt;/code&gt;&lt;br /&gt;чтобы можно было монтировать файловые системы типа curlftpfs обычной командой mount -t curlftpfs&lt;/p&gt; &lt;p&gt;P.S. После некоторого времени эксплуатации выяснилось, что система ведет себя не совсем стабильно: периодически процессы ftpfs зависали на команде LIST. Поэтому в итоге мы таки откатились на sshfs. Делается это не менее просто:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Генерируем rsa-ключ для ssh для того пользователя, которым мы ходим на удаленный хост, то есть в нашем случае это root:&lt;br /&gt;&lt;code&gt;   ssh-keygen -t rsa&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Прописываем этот ключ, который лежит в файле ~/.ssh/id_rsa.pub на удаленном хосте в файл ~/.ssh/authorized_keys2&lt;/li&gt;&lt;li&gt;В /etc/fstab добавляем строчку:&lt;br /&gt;&lt;code&gt;   sshfs#ftp.host.ru:/home/ftp/public/    /home/ftp/cool-ftp/     fuse    ro,allow_other,uid=user,gid=group  0       0&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Полный формат первого аргумента выглядит так: sshfs#user:pass@ftp.host.ru:/home/ftp/public/ но мы, разумеется, логин и пароль сюда не пишем, т.к. пользуемся ключами.&lt;br /&gt;Ну и наконец, монтируем:&lt;br /&gt;&lt;code&gt;   mount -a&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://khalikov.ru/linux/curlftpfs-fuse/"&gt;Оригинал&lt;/a&gt; (Халиков Антон)&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8919096798290387668?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8919096798290387668/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8919096798290387668' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8919096798290387668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8919096798290387668'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/ftpfs-fuse.html' title='FTPFS или что можно сделать на базе FUSE'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7641003328796252656</id><published>2009-10-17T11:57:00.000-07:00</published><updated>2009-10-17T12:35:25.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mount'/><category scheme='http://www.blogger.com/atom/ns#' term='smb'/><title type='text'>Dlink DNS - 323</title><content type='html'>Купил себе новую игрушку. Dlink DNS-323.&lt;br /&gt;По сути это сетевое хранилище.&lt;br /&gt;Внутри линукс.&lt;br /&gt;Хард на 1Тб она форматнула как ext2.&lt;br /&gt;&lt;br /&gt;Задача перегона данных усложнилась еще тем, что NTFS не поддерживает в принципе, даже "только на чтение" не хочет.&lt;br /&gt;Ладно.... Что может этот девайс из протоколов FTP, SMB. HTTP (грустно только админка и никакого нормального доступа в файлам).&lt;br /&gt;&lt;br /&gt;Для начала, я включил поддержку UTF8. Это избавляет меня от проблем с русскими именами файлов на диске, но дбавило проблем для монтирования.&lt;br /&gt;&lt;br /&gt;Для SMB вывел следующую мантру&lt;br /&gt;1. Установить поддержку smbfs&lt;br /&gt;&lt;code&gt;apt-get install smbfs&lt;/code&gt;&lt;br /&gt;2. Создать каталог монтирования&lt;br /&gt;&lt;code&gt;sudo mkdir /media/vol1&lt;/code&gt;&lt;br /&gt;3. Сам монтаж&lt;br /&gt;&lt;code&gt;mount -t smbfs -o username=admin,password=,iocharset=utf8 //192.168.1.33/Volume_1 /media/vol1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Для FTP нашел готовую мантру и даже больше &lt;a href="http://www.e-lug.ru/node/185"&gt;http://www.e-lug.ru/node/185&lt;/a&gt; оригинал &lt;a href="http://khalikov.ru/linux/curlftpfs-fuse/"&gt;тут&lt;/a&gt; Большое спасибо Халикову Антону&lt;br /&gt;1. Fuse обертки&lt;br /&gt;&lt;code&gt;apt-get install curlftpfs&lt;/code&gt;&lt;br /&gt;2. Создаем каталог&lt;br /&gt;sudo mkdir /media/vol1_ftp &lt;br /&gt;3. Монтируем&lt;br /&gt;&lt;code&gt;sudo curlftpfs ftp://anonymous:anonymous@192.168.1.33/ /media/vol1_ftp -o ro,allow_other,uid=1001,gid=1001&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;javascript:void(0)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7641003328796252656?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7641003328796252656/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7641003328796252656' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7641003328796252656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7641003328796252656'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/dlink-dns-323.html' title='Dlink DNS - 323'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-2339915192168302001</id><published>2009-10-12T04:44:00.001-07:00</published><updated>2009-12-07T23:20:07.184-08:00</updated><title type='text'>Философия...</title><content type='html'>Просто удивительно, насколько важна ваша работа, когда нужно отпроситься&lt;br /&gt;с нее, и насколько она маловажна, когда вы просите прибавки в зарплате!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-2339915192168302001?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/2339915192168302001/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=2339915192168302001' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2339915192168302001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2339915192168302001'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/blog-post_12.html' title='Философия...'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7366108147475273692</id><published>2009-10-12T03:01:00.000-07:00</published><updated>2009-12-07T23:21:29.508-08:00</updated><title type='text'>Индексы на основе B-деревьев для поддержки высокого темпа обновлений</title><content type='html'>&lt;a href="http://www.interface.ru/home.asp?artId=22055"&gt;http://www.interface.ru/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Перевод: Сергей Кузнецов&lt;br /&gt;Предисловие переводчика&lt;br /&gt;&lt;br /&gt;   Статья Грейфа привлекла меня тем, что уже давно не попадались обзоры, посвященные алгоритмам работы с B-деревьями. Должен сразу сказать, что во многом статья не оправдала мои ожидания: многие, по-видимому, интересные методы и структуры данных описаны слишком кратко и сумбурно, очень не хватает иллюстраций. Во время перевода мне постоянно хотелось исправить недостатки статьи, благо, что большая часть источников, упоминаемых в списке литературы, свободно доступна в Internet. Однако я сдержал себя и представляю вам чистый перевод статьи. В целом он дает представление о существующих подходах, а с подробностями вы можете при желании ознакомиться сами, воспользовавшись списком литературы и поставленными мной ссылками на публикации в Web.&lt;br /&gt;&lt;br /&gt;1. Аннотация&lt;br /&gt;&lt;br /&gt;В некоторых приложениях сбор данных доминирует над обработкой данных. Например, при мониторинге движущихся объектов часто требуется больше операций вставки и обновления, чем запросов. Это дисбаланс часто демонстрируется при сборе данных с использованием автоматических сенсоров. В более широкой постановке, нерешенной проблемой является индексирование потоков.&lt;br /&gt;&lt;br /&gt;Для этих приложений хорошим вариантом являются индексы на основе B-деревьев, если принять некоторые компромиссные решения, направленные на оптимизацию скорее операций обновления, чем запросов. В этой статье приводится обзор некоторых методов, которые за счет снижения эффективности обработки запросов позволяют B-деревьям выдерживать очень высокий темп обновлений, на несколько порядков более высокий, чем могут допустить традиционные B-деревья. Не удивительно, что некоторые из этих методов напоминают методы, используемые при создании, перестройке индексов и т.д., а другие выводятся из известных технологий, таких как дифференциальные файлы и файловые системы с журнальной структурой (log-structured file system).&lt;br /&gt;2. Введение&lt;br /&gt;&lt;br /&gt;Некоторые приложения в большей мере собирают данные, чем обрабатывают запросы к ним. Например, система управления автопарком компании грузовых автомобильных перевозок или такси может регистрировать данные о текущей позиции движущегося средства намного чаще, чем позиции автомобилей запрашиваются диспетчеров автопарка. В этих случаях организацию индекса и B-дерева, в отличие от традиционного подхода, следует оптимизировать с целью повышения эффективности выполнения операций вставки и обновления, а не запросов.&lt;br /&gt;&lt;br /&gt;Другой областью применения методов, обсуждаемых в этом обзоре, является индексирование непрерывных потоков данных. Достаточно хорошо понятна фильтрация потоков "на лету", но для потоков, содержащих идентификаторы объектов реального мира, часто требуется сопоставление со статическими данными, а также с другими потоками. Поэтому крайне необходима возможность сбора потоковых данных, обычно в порядке их поступления, а также их индексирования по атрибутам, отличным от времени поступления. Иногда требуется несколько индексов, поддерживающих разные порядки. Например, для обеспечения эффективного и близкого к мгновенному обнаружения случаев мошенничества в потоке данных о транзакциях с кредитными карточками может потребоваться индексирование по номеру карты, идентификационным данным клиента (клиент может потерять несколько кредитных карт в одно и то же время) и данным о продавце (нечестный служащий может мошенническим образом расплачиваться кредитными картами многих клиентов).&lt;br /&gt;&lt;br /&gt;Далее мы предполагаем, что эффективность операций обновления и вставки является более важной, чем эффективность обработки запросов. Если читателя не интересуют такие приложения, то к его B-деревьям следует применять традиционные оптимизационные методы, а не методы, обозреваемые в этой статье. Кроме того, мы предполагаем, уже применен какая-либо регулировка рабочей нагрузки, например, выработана "наилучшая" политика регистрации данных о текущем местоположении автомобилей, так что оставшиеся запросы на обновление действительно должны быть отражены во всех рассматриваемых индексах. Наконец, мы предполагаем, что учитывается возможность аппаратной поддержки, и она используется, насколько это возможно и уместно, например, используются расслоение дисков и твердотельные диски или дисковые буфера.&lt;br /&gt;3 Оптимизация ввода/вывода&lt;br /&gt;&lt;br /&gt;Как и в большинстве операций баз данных, фокусирование на эффективности дисковых операций ввода/вывода является действенным способом повышения производительности и масштабируемости. Однако необходимо разделять совершенствование общей пропускной способности системы и сокращение времени отклика отдельных транзакций, что может быть очень интересно в данном случае, а может быть и совсем не интересно.&lt;br /&gt;&lt;br /&gt;Имеется несколько очень общих технологий совершенствования производительности, например, сжатие данных [WKH 00]. В рабочих нагрузках с интенсивным обновлением данных существенное сжатие применяется не только к данным, но и к журналу транзакций. Здесь достаточно заметить, что некоторые методы сжатия являются удивительно простыми, например, отбрасывание лидирующих или хвостовых нулей или пробелов и объединение нескольких журнальных записей от одной транзакции в одну журнальную запись для сокращения накладных расходов, вызываемых наличием в журнале транзакций множественных заголовков записей.&lt;br /&gt;3.1 Предварительная выборка, упреждающее чтение и отложенная запись&lt;br /&gt;&lt;br /&gt;Отложенная запись (write-behind) страниц журнала и данных является хорошо известным методом. Сама по себе отложенная запись не повышает пропускную способность системы, поскольку объем записи не сокращается. Однако отложенная запись часто обеспечивает возможность записи данных большого объема, что является еще более эффективным, чем поддержка очередей ввода/вывода. Кроме того, отложенная запись полезна в случае пиков рабочей нагрузки и позволяет производить дополнительную оптимизацию. Например, в современных дисковых устройствах поддерживаются собственные очереди команд, и обмены выполняются лучше, если всегда имеются десятки ждущих операций ввода/вывода [ADR 03].&lt;br /&gt;&lt;br /&gt;Упреждающее чтение (read-ahead, обычно используемое при сканировании) не применяется к операциям обновления, но оно применяется для присоединения всей ветви модификаций к существующему B-дереву. При слиянии нескольких разделов B-дерева (обсуждаемом ниже) в один раздел упреждающее чтение с использованием прогнозирования может улучшить производительность, поскольку слияние разделов, по существу, представляет ту же проблему, что и слияние прогонов при выполнении внешней сортировки со слиянием [G 03a]&lt;br /&gt;&lt;br /&gt;Предварительная выборка (prefetch), основанная на индивидуальных ключах, применяется не только к операциям выборки, например, при передвижении из некластеризованного индекса в кластеризованный индекс, но и к операциям обновления. Однако, подобно упреждающему чтению и отложенной записи, предварительная выборка также не приводит к непосредственному улучшению производительности или пропускной способности системы, а лишь уменьшает время реакции или задержку выполнения отдельных операций, что может косвенным образом привести к повышению производительности за счет сокращения конкуренции при управлении параллельным выполнением операций.&lt;br /&gt;3.2 B-деревья, оптимизированные для записи&lt;br /&gt;&lt;br /&gt;В дополнение к асинхронному вводу-выводу, эффективность операций записи может быть улучшена за счет динамического размещения содержимого на диске [G 04]. Этот эффект хорошо известен и интенсивно исследовался для файловых систем с журнальной структурой [OD 89], в частности, в контексте RAID-хранилищ [PGK 88]. Основная идея B-деревьев, оптимизированных для записи, состоит в выделении нового места на диске при каждой записи страницы на диск при выполнении операции записи, т.е. позже принятия решения менеджером буферов о замещении буфера. При этом новое место для страницы выделяется таким образом, что несколько параллельных операций записи нацеливается на одну и ту же область диска.&lt;br /&gt;&lt;br /&gt;Чтобы избежать последующего обновления соседних страниц, традиционная цепочка страниц с использованием физических идентификаторов страниц заменяется логической цепочкой страниц с использованием разделительных ключей (separator key), т.е. каждая страница несет в качестве нижнего и верхнего барьеров разделительный ключ, копируемый в страницу родительского узла при отщеплении страницы от ее соседей. В дополнение к поддержке тех же проверок согласованности и других технических операций, что и те, которые поддерживаются традиционными физическими цепочками страниц, барьерные ключи упрощают и улучшают блокировку диапазонов значений ключа, поскольку никогда не требуется перемещаться к соседней листовой странице для нахождения правого значения ключа в диапазоне. После замены физических цепочек страниц логическими барьерными ключами физические идентификаторы страниц остаются только в указателях детей, и только их требуется изменять при перемещении узла на новое место на диске.&lt;br /&gt;&lt;br /&gt;В традиционных алгоритмов B-деревьев новое место выделяется при принятии решения менеджером B-дерева о расщеплении узла, так что в последующих журнальных записях могут иметься ссылки на идентификатор этой страницы. В B-деревьях, оптимизированных для записи, новой странице дается временный идентификатор, который может использоваться в журнальных записях, и страница перемещается при выполнении операции записи, что очень напоминает перемещение страницы при выполнении дефрагментации B-дерева. Поэтому применяются испытанные механизмы управления параллельным выполнением операций и восстановления.&lt;br /&gt;&lt;br /&gt;Воздействие на производительность B-деревьев, оптимизированных для записи, состоит в том, что случайные операции записи преобразуются в крупные последовательные операции записи, обеспечивающие повышение пропускной способности более чем в 10 раз ценой дополнительной поддержки родителя каждого узла при каждой его записи на новое место на диске.&lt;br /&gt;4. Буферизация вставок&lt;br /&gt;&lt;br /&gt;Имеется несколько способов буферизации и группировки новых вставок с целью уменьшения частоты обновления каждого узла B-дерева, что, в свою очередь, приводит к уменьшению интенсивного дискового ввода-вывода, обменов с кэшем центрального процессора и т.д. При выполнении запросов приходится либо производить поиск в буферной структуре в дополнение к поиску в индексе B-дерева, либо втискивать все или некоторые буферные запись в индекс B-дерева.&lt;br /&gt;&lt;br /&gt;Для корректного транзакционного выполнения требуется журнализировать и вставки, и удаления в буфере; поэтому объем журнала может превосходить объем традиционного журнала более чем в три раза. Однако пользовательской транзакцией является только исходная вставка в первый буфер, а все следующие перемещения записи могут быть системными транзакциями, которые можно фиксировать дешевым образом без выталкивания заключительной части журнала в стабильную память.&lt;br /&gt;4.1 Буферизация в пределах блоков дерева&lt;br /&gt;&lt;br /&gt;Некоторые исследователи анализировали структуры данных и алгоритмы, добавляющие большой буфер к каждому внутреннему узлу дерева [A 96, AHV 02, VSW 97]. Часто размер этого буфера превышает размер области, предназначенной для традиционных пар "ключ-указатель", не только потому, что каждая буферизованная новая запись больше пары "ключ-указатель", но также и потому, что число сохраняемых записей может быть больше числа пар "ключ-указатель". Когда буфер полностью заполняется, соответствующие записи выталкиваются в его ребенка с наибольшим числом сохраняемых записей.&lt;br /&gt;&lt;br /&gt;Как кажется, записи должны удерживаться только для тех детей, которые не находятся непосредственно в буфере ввода-вывода. На основе того, что в большинстве B-деревьев имеется не менее ста ветвей, что в большинстве серверов баз данных размер памяти превосходит 1% размера диска, и что обсуждаемые здесь B-деревья являются наиболее активно используемыми и критически влияющими на производительность индексами внутри базы данных, можно заключить, что такая буферизация применима только к узлам, являющимся непосредственными предками листьев. Другими словами, могут быть возможны дополнительные усовершенствования опубликованных методов, позволяющие буферизовать узлы всех уровней B-дерева.&lt;br /&gt;4.2 Буферизация в отдельных структурах&lt;br /&gt;&lt;br /&gt;Альтернативой буферизации вставок в узлах дерева является создание отдельной структуры данных для буферизации новых вставок [LJB 95, MOP 00, OCG 96]. Эта структура данных может быть еще одним B-деревом или может представлять другую разновидность структуры данных в основной памяти, например, хэш-таблицу. На самом деле, она может являться и набором структур данных, образующих иерархию или каскад областей хранения. Интересно, что эта организация напоминает обе организации, предлагавшиеся сборку мусора по поколениям [U 84].&lt;br /&gt;&lt;br /&gt;Использование новых структур предполагает наличие новых механизмов для управления параллельным выполнением операций и восстановления. Таким образом, предпочтительным механизмом была бы уже реализованная индексная структура. В противном случае для новых моделей или протоколов блокировки потребуются доказательства корректности, реализация, тестирование и т.д. Возможно, в наиболее желательной реализации должны избегаться и отдельные структуры, и модификации существующих структур, а вместо этого существующие механизмы должны использоваться другим образом.&lt;br /&gt;4.3 Буферизация в разделах B-дерева&lt;br /&gt;&lt;br /&gt;В одной из работ, мотивируемой желанием избежать кодирования частных случаев, используется основное B-дерево как собственная буферная структура данных за счет введения разделов внутри каждого B-дерева [G 03a]. За счет введения искусственного лидирующего столбца ключа сохраняется традиционная структура B-дерева. "Основное" B-дерево определяется общим значением искусственного лидирующего столбца ключа, скажем, 0 или null, а один или более буферов определяются другими значениями этого столбца, скажем, 1, 2 и т.д.&lt;br /&gt;&lt;br /&gt;Традиционное управление буферами вместе с ограничениями на размер заново добавленных разделов обеспечивают, что вставки данных пользовательскими транзакциями могут полностью происходить в основной памяти. В предельном случае разделы новых вставок могут состоять из одной записи, т.е. каждая вставка определяет новый раздел и, таким образом, может выполняться практически без поиска или реорганизации страницы внутри B-дерева. Таким образом, максимизируется скорость вставок и пропускная способность пользовательских транзакций за счет потребности больших усилий для оптимизации и реорганизации индекса.&lt;br /&gt;&lt;br /&gt;При выполнении запросов требуется производить поиск в каждом разделе с использованием традиционных методов, ограничивающих значения некоторых столбцов индекса, за исключением лидирующего [LJB 95], которые, возможно, дополняются оптимизацией на основе того факта, что в качестве идентификаторов разделов используются последовательные целые значения. В качестве альтернативы, при выполнении запросов могут возникать некоторые слияния, выполняемые до реальной выборки данных и реализуемые с использованием системных транзакций. Таким образом, работа по поддержке B-дерева, традиционно выполняемая как часть операций обновления, перемещается в состав операций запросов или реорганизации, которая может случаться в любое время между вставкой и запросом. В крайнем случае, запрос может привести к полному слиянию и оптимизации всех разделов за исключением, может быть, одного раздела, предназначенного для текущих вставок.&lt;br /&gt;&lt;br /&gt;Некоторые интересные аспекты таких B-деревьев состоят в том, что&lt;br /&gt;&lt;br /&gt;  1. операция реорганизации, которая объединяет несколько разделов в один раздел, очень похожа на шаг слияния в традиционной внешней сортировке со слиянием;&lt;br /&gt;  2. такие операции слияния могут выполняться как системные транзакции и фиксировать каждый раз очень небольшой диапазон ключей;&lt;br /&gt;  3. такие операции слияния и реорганизации могут приостанавливаться и возобновляться в любое время, если возникают периоды пиковой нагрузки;&lt;br /&gt;  4. тот же метод может способствовать выполнению массовых удалений, т.е. удаляемые элементы B-дерева перемещаются небольшими системными транзакциями в выделенный раздел, а затем удаляются в одной из быстрых пользовательских транзакций, которая вырезает из B-дерева несколько полных страниц.&lt;br /&gt;&lt;br /&gt;4.4 Плавное снижение эффективности&lt;br /&gt;&lt;br /&gt;Помимо общего повышения производительности, буферизованные вставки обеспечивают плавное снижение эффективности в случае ошибочных оценок мощности в ходе оптимизации запросов. Сегодня при оптимизации запросов можно выбирать между обработкой операций обновления в режиме "строка-за-строкой" и обработкой в режиме "индекс-за-индексом". При выполнении операции обновления в режиме "строка-за-строкой" обновление всех нужных индексов производится сразу после обновления очередной строки. Обновление в режиме "индекс-за-индексом" означает, что к каждому индексу сразу применяются все обновления, возможно, после расщепления каждой операции модификации на соответствующую пару операций удаления и вставки, сортировки изменений по значениям ключа индекса и рекомбинирования изменений, если это оказывается уместным. Обобщенная версия методов, описанных в [GKK 01], реализуется Microsoft SQL Server, начиная с выпуска 7.0. Обновления в режиме "строка-за-строкой" наиболее уместны для небольших изменений, например, при оперативной обработке транзакций, в обновления в режиме "индекс-за-индексом" являются более эффективными для крупных обновлений, в особенности таких, которые затрагивают не только листовые страницы индексов, например, массовых вставок или удалений. Для обеспечения плавного снижения эффективности план выполнения может предписывать обработку обновления в режиме "строка-за-строкой" при ожидаемом небольшом множестве обновлений, а при реальном выполнении можно обнаружить, что множество обновлений является гораздо более крупным, и переключиться на режим выполнения "индекс-за-индексом".&lt;br /&gt;&lt;br /&gt;Описанные выше буферизованные вставки с использованием разделенных B-деревьев представляют собой третий способ применению обновлений к индексу на основе B-дерева, и тем самым обеспечивают еще один вариант плавного снижения эффективности. Обработка в режиме "строка-за-строкой", нацеленная на новый раздел, сулит лучшие модель ввода/вывода и производительность, чем те, которые обеспечиваются при обработке в режиме индекс-за-индексом, хотя при этом сохраняется недостаток неоптимальности индексов. Для обеспечения плавного снижения эффективности план выполнения операции обновления может предусматривать выполнение обновления в режиме "строка-за-строкой" в главном разделе до тех пор, пока не выяснится реальный размер множества обновлений, а затем переключение на буферизованные или разделенные обновления. Хотя можно реализовать плавное снижение эффективности путем смены режима "строка-за-строкой" на режим "индекс-за-индексом" с использованием условного выполнения в традиционном плане выполнения запроса, назначение индексным изменениям нового идентификатора раздела (искусственного лидирующего столбца ключа) является гораздо более простым действием и содействует повышению эффективности обновлений.&lt;br /&gt;5. Дифференциальные файлы и индексы&lt;br /&gt;&lt;br /&gt;Хотя методы, обсуждавшиеся в предыдущем разделе, пригодны для буферизации вставок, они не позволяют буферизовать другие операции обновления, т.е. модификации и удаления. Однако, эти методы можно расширить путем адаптации к B-деревьям идей из области дифференциальных файлов [SL 76]. Интересно, что некоторые адаптации B-деревьев для версионного управления параллельным выполнением операций и для исторических индексов являются очень похожими, включая логику, требуемую в течение обработки запросов.&lt;br /&gt;&lt;br /&gt;Основной подход состоит в добавлении записей, которые делают недействительными предыдущие записи, без реального изменения этих предыдущих записей. При обновлении новая запись замещает предыдущий элемент B-дерева с тем же ключом. При удалении заново добавляемая запись просто указывает на конец истории данного ключа, или, по крайней мере, на конец истории до тех пор, пока впоследствии не произойдет новая вставка с тем же ключом.&lt;br /&gt;&lt;br /&gt;При выполнении запросов требуется искать в истории каждого конкретного ключа либо его текущее состояние (при традиционной семантике запросов), либо состояние в заданное время (при обработке исторических запросов, привязанных к точке во времени). Историю ключей можно уплотнять с помощью операций слияния, в зависимости от желательных возможностей будущих запросов.&lt;br /&gt;&lt;br /&gt;Другими словами, подобно буферизованным вставкам, буферизованные модификации и удаления в дифференциальных B-деревьях жертвуют эффективностью запросов в пользу эффективности обновлений. Преобразование случайных вставок, удалений и модификаций по одной записи в операции добавления с использованием крупных последовательных операций записи обещает повышение пропускной способности обработки обновлений на два порядка.&lt;br /&gt;&lt;br /&gt;Конечно, имеется также взаимосвязь между дифференциальными файлами и реализацией версионной изоляции на основе мгновенных снимков (multi-version snapshot isolation). Однако основное различие состоит в том, что в дифференциальных файлах сохраняется самая старая версия плюс набор "дельт" в прямом времени, а реализации версионной изоляции на основе мгновенных снимков обычно ориентированы на обеспечение доступа к наиболее свежим версиям, т.е. в них обычно сохраняется наиболее свежая версия плюс набор "дельт" в обратном времени.&lt;br /&gt;6. Гарантии транзакций&lt;br /&gt;&lt;br /&gt;Еще одна возможность улучшения производительности может основываться на ослаблении транзакционных гарантий для некоторых индексов, в частности, для избыточных некластеризованных индексов. Мы рассмотрим три метода: ослабление разделения индивидуальных транзакций за счет пакетирования; ослабление гарантий в случае системных сбоев; запись изменений только в журнал транзакции без попыток их применения к индексу с неявной опасностью того, что попытка применения таких изменений в более позднее время может закончиться неудачей. Очевидно, что эти методы применимы только в тех случаях, когда оставшиеся транзакционные гарантии являются достаточно строгими для имеющихся приложений.&lt;br /&gt;6.1 Операции только над журналом&lt;br /&gt;&lt;br /&gt;Если операции поддержки индекса не могут справиться с потоком обновлений, может быть, их удастся хотя бы зарегистрировать в журнале транзакций. В этом случае можно было бы помещать в журнал транзакции логические записи redo и впоследствии их применять, используя, по существу, восстановление redo (восстановление с повторным выполнением операций). Конечно, этот процесс нарушает несколько традиционных предположений о журнализации, например, что операции redo - это всегда физические операции, которые уже совершились, что операции r edo не могут заканчиваться неудачно и т.д. Однако в зависимости от приложения такие сбойные ситуации могли бы не являться катастрофой, и их можно было бы игнорировать, например, вполне допустимы ситуации, когда в приложении отслеживания движущихся средств некоторые отдельные отчеты о местоположении не могут быть записаны в исторический индекс. Ясно, что эту идею можно было бы применить, но ее детали требуют проработки, например, что сулит и гарантирует фиксация транзакции, как работают контрольные точки и что они гарантируют и т.д.&lt;br /&gt;6.2 B-деревья без журнализации&lt;br /&gt;&lt;br /&gt;В некоторых системах баз данных при создании индексов используются специальные методы, препятствующие появлению содержимого нового индекса в журнале транзакции. Вместо этого журнализуются только изменения каталога и выделение страниц. Сбой в процессе создания индекса приводит к возврату этих страниц и подчистке информации о новом индексе в каталоге. Создание индекса заканчивается сбросом на диск всех заново выделенных и заполненных страниц и последующими операциями резервного копирования базы данных и даже журнала транзакций, удерживающего информацию об этих новых страницах. Последующие пользовательские транзакции журнализуют свои изменения в новом индексе обычным образом.&lt;br /&gt;&lt;br /&gt;Эту идею можно расширить следующим образом. Если индекс является действительно избыточным, подобно традиционному кэшу, и если допустимо разрушение индекса в течение восстановления носителя данных или системы, то все операции над этим индексом могут не журнализоваться, т.е. журнализуется только распределение памяти. Это включает и пользовательские транзакции, выполняемые после завершения создания индекса. Откат пользовательской транзакции управляется виртуальными журнальными записями, подсоединенными к описателю транзакции в основной памяти, аналогично виртуальным журнальным записям, которые используются в других методах управления транзакциями [G 04, GK 85]. Детали этого метода в настоящее время не опубликованы, но для некоторых приложений этот метод кажется вполне обещающим, в частности, для временных кэшей и индексов, существующих только в основной памяти.&lt;br /&gt;6.3 Пакетные обновления&lt;br /&gt;&lt;br /&gt;Наконец, можно группировать несколько операций обновления и транзакций в одну транзакцию. Однако кажется важным отделять семантику транзакций от структуры данных. Например, как описывалось выше, много небольших пользовательских транзакций могут производить вставки в один буфер, оставляя на последующую системную транзакцию (или последовательность небольших системных транзакций) работу по вливанию этих вставок в основное B-дерево. Другими словами, для достижения делаемого улучшения производительности и масштабируемости может не требоваться или не быть полезным модификация или ослабление границ и семантики пользовательских транзакций.&lt;br /&gt;7. Резюме и заключение&lt;br /&gt;&lt;br /&gt;Таким образом, если согласиться с ухудшением производительности при обработке запросов на порядок, например, за счет поиска в нескольких разделах, то производительность операций обновления и вставки можно поднять не менее чем на два порядка, например, путем преобразования операций вставки в операции дополнения и преобразования случайных одиночных записей в крупные последовательные записи в заново выделяемое дисковое пространство. Имеются и менее драматические компромиссы. Хотя в большинстве приложений выполняется больше запросов, чем операций обновления, и это приводит к организации базы данных, ориентированной на оптимизацию запросов, некоторые приложения (например, отслеживание движущихся объектов) больше заняты записью изменений, чем предоставлением ответов на запросы (например, о текущей позиции объекта). Для таких приложений уже имеются многочисленные методы, которые осталось реализовать поставщикам баз данных. Некоторые из этих методов доступны даже для пользователей баз данных, например, введение искусственного лидирующего столбца ключа в видимой схеме базы данных и использование его для создания индекса и, возможно, для его поддержки при выполнении массовых операций [G 03b].&lt;br /&gt;&lt;br /&gt;В этом обзоре мы старались перечислить разнообразные возможные методы. Новые методы включают B-деревья, оптимизированные для записи, разделяемые B-деревья, в которых разделы используются для буферизации вставок или всех модификаций в манере дифференциальных файлов, и B-деревья без журнализации. Однако наша интуитивная оценка нуждается в подтверждении с использованием прототипирования или даже производственной реализации.&lt;br /&gt;&lt;br /&gt;Очевидно наличие многочисленных открытых вопросов, включая вопрос о дополнительных или улучшенных компромиссах между эффективностью обновлений и запросов; сравнение эффективности описанных методов на основе подходящего тестового набора; адаптация описанных методов для других индексных структур, таких как UB-деревья и R-деревья, а также материализованные и индексные представления; интеграция обработки запросов и операций обновления с операциями поддержки базы данных, такими как проверка согласованности, дефрагментация и обновление статистики для оптимизации запросов. Может быть, этот обзор послужит стимулированию и структуризации таких исследований.&lt;br /&gt;8. Благодарности&lt;br /&gt;&lt;br /&gt;Тео Хардер (Theo Härder) и Берндхард Митшанг (Bernhard Mitschang) читали предварительные, неполные варианты статьи и сделали несколько очень полезных замечаний.&lt;br /&gt;9. Литература&lt;br /&gt;&lt;br /&gt;[A 96]  Lars Arge: Efficient External-Memory Data Structures and Applications. University of Aarhus (Denmark), 1996. http://www.brics.dk/DS/96/3/BRICS-DS-96-3.pdf&lt;br /&gt;[ADR 03]  Dave Anderson, Jim Dykes, Erik Riedel: More Than an Interface - SCSI vs. ATA. Conference on File and Storage Technology (FAST), March 2003. http://www.seagate.com/content/docs/pdf/whitepaper/ D2c_More_than_Interface_ATA_vs_SCSI_042003.pdf&lt;br /&gt;[AHV 02]    Lars Arge, Klaus Hinrichs, Jan Vahrenhold, Jeffrey Scott Vitter: . Algorithmica 33(1): 104-128 (2002). http://www.cs.duke.edu/~jsv/Papers/AHV99.bulk.pdf&lt;br /&gt;[G 03a]  Goetz Graefe: Sorting and Indexing with Partitioned B-Trees. Conference on Innovative Data Systems Research, 2003. http://www-db.cs.wisc.edu/cidr/cidr2003/program/p1.pdf&lt;br /&gt;[G 03b]  Goetz Graefe: Partitioned B-trees - a user's guide. Datenbanksysteme f?r Business, Technologie und Web (BTW) 2003: 668-671. http://doesen0.informatik.uni-leipzig.de/proceedings/paper/IP11.pdf&lt;br /&gt;[G 04]  Goetz Graefe: Write-Optimized B-Trees. VLDB Conference 2004: 672-683. http://www.vldb.org/conf/2004/RS18P2.PDF&lt;br /&gt;[GK 85]  Dieter Gawlick, David Kinkade: Varieties of Concurrency Control in IMS/VS Fast Path. IEEE Data Eng. Bulletin 8(2): 3-10 (1985).&lt;br /&gt;[GKK 01]  Andreas G?rtner, Alfons Kemper, Donald Kossmann, Bernhard Zeller: Efficient Bulk Deletes in Relational Databases. IEEE ICDE 2001: 183-192. http://www.hpl.hp.com/techreports/tandem/TR-85.6.pdf&lt;br /&gt;[JNS 97]  H. V. Jagadish, P. P. S. Narayan, S. Seshadri, S. Sudarshan, Rama Kanneganti: Incremental Organization for Data Recording and Warehousing. VLDB Conference 1997: 16-25 http://www.vldb.org/conf/1997/P016.PDF&lt;br /&gt;[LJB 95]  Harry Leslie, Rohit Jain, Dave Birdsall, Hedieh Yaghmai: Efficient Search of Multi-Dimensional B-Trees. VLDB Conference 1995: 710-719. http://www.vldb.org/conf/1995/P710.PDF&lt;br /&gt;[MOP 00]  Peter Muth, Patrick E. O'Neil, Achim Pick, Gerhard Weikum: The LHAM Log-Structured History Data Access Method. VLDB J. 8(3-4): 199-221 (2000). http://www.cs.umb.edu/~poneil/LHVLDBJ.pdf &lt;br /&gt;[OCG 96]  Patrick E. O'Neil, Edward Cheng, Dieter Gawlick, Elizabeth J. O'Neil: The Log-Structured Merge-Tree (LSM-Tree). Acta Inf. 33(4): 351-385 (1996). http://www.cs.umb.edu/~poneil/lsmtree.ps&lt;br /&gt;[OD 89]  John K. Ousterhout, Fred Douglis: Beating the I/O Bottleneck: A Case for Log-Structured File Systems. Operating Systems Review 23(1): 11-28 (1989). http://www.ugrad.cs.ubc.ca/~cs415/X/Info/papers-2003/ousterhout88beating.ps&lt;br /&gt;[PGK 88]  David A. Patterson, Garth A. Gibson, Randy H. Katz: A Case for Redundant Arrays of Inexpensive Disks (RAID). ACM SIGMOD Conference 1988: 109-116. http://www.cs.cmu.edu/~garth/RAIDpaper/Patterson88.pdf&lt;br /&gt;[SL 76]  Dennis G. Severance, Guy M. Lohman: Differential Files: Their Application to the Maintenance of Large Databases. ACM Trans. Database Syst. 1(3): 256-267 (1976).&lt;br /&gt;[U 84]  David Ungar: Generation Scavenging: A Non-Disruptive High Performance Storage Reclamation Algorithm. Software Development Environments (SDE), ACM SIGPLAN Notices 19(5): 157-167 (1984).&lt;br /&gt;[VSW 97]  Jochen Van den Bercken, Bernhard Seeger, Peter Widmayer: A Generic Approach to Bulk Loading Multidimensional Index Structures. VLDB Conference 1997: 406-415. http://www.vldb.org/conf/1997/P406.PDF&lt;br /&gt;[WKH 00]  Till Westmann, Donald Kossmann, Sven Helmer, Guido Moerkotte: The Implementation and Performance of Compressed Databases. ACM SIGMOD Record 29(3): 55-67 (2000). http://www.dbis.ethz.ch/research/publications/sigrec00.pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-7366108147475273692?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/7366108147475273692/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=7366108147475273692' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7366108147475273692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/7366108147475273692'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/b.html' title='Индексы на основе B-деревьев для поддержки высокого темпа обновлений'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8407066610557046507</id><published>2009-10-12T00:06:00.000-07:00</published><updated>2009-10-12T00:08:21.960-07:00</updated><title type='text'>Советы по первичной настройке FreeBSD для новичков"</title><content type='html'>&lt;a href="http://www.interface.ru/home.asp?artId=22039"&gt;www.interface.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Идея этой статьи возникла в тот момент, когда я впервые установил FreeBSD 6.1. Ситуация была такова, что я сидел перед компьютером, глядя на черный экран и не понимая, что же вообще делать. Наверное, со стороны смотрелось забавно… Данный материал будет точнее характеризовать как не статью, а мануал из разряда "Заметки начинающего пользователя". Соответственно, и ориентирован он на начинающих пользователей, которые, как и я в свое время, не знают, что и как им делать в новой операционной системе.&lt;br /&gt;   &lt;br /&gt;    Примечания:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Я не буду подробно расписывать то, что у вас будет написано на экране. Там обо всем сообщают на английском, а его почти все знают. Если вы не знаете - вооружитесь словариком.&lt;/li&gt;&lt;li&gt;Я не претендую на звание "Автор года" - я просто хочу кому-нибудь помочь. Не знаю, помогу ли, но так я не буду чувствовать себя ненужным.&lt;/li&gt;&lt;li&gt;Вместо слов "От рута" или "С правами суперпользователя" я буду ставить символ "#" перед командой. В случаях, где стоит "$", эти прав не нужны.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;1) Пользователи и права&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    Если вы не забыли добавить пользователя в процессе установки, то можете сразу перейти к пункту "б)".&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    а) Чтобы не рисковать, постоянно находится в системе под root'ом не рекомендуется, ибо малейшая оплошность может привести к серьезным последствиям. Для этого существуют пользовательские учетные записи, с которыми и надлежит работать. Если же у вас появляется необходимость, например, изменить какой-нибудь системный конфигурационный файл, существует команда &lt;tt&gt;su&lt;/tt&gt;, которая (после ввода пароля от root) предоставляет права суперпользователя для текущего терминала.&lt;br /&gt;   &lt;br /&gt;    Итак, чтобы создать пользователя, существует несколько вариантов. Мы остановимся на двух самых простых: через меню &lt;tt&gt;sysinstall&lt;/tt&gt; и через команду &lt;tt&gt;adduser&lt;/tt&gt;.&lt;br /&gt;   &lt;br /&gt;    Первый способ:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# sysinstall&lt;/tt&gt;&lt;br /&gt;    -&gt; Configure -&gt; User management -&gt; User.&lt;br /&gt;   &lt;br /&gt;    Все просто: заполняем стандартную форму (имя, пароль, реальное имя, адрес домашнего каталога, группа). (Чтобы пропустить выполнение пункта "б)", можно в поле "Group" вписать &lt;tt&gt;wheel&lt;/tt&gt;, хотя перед этим рекомендуется почитать, к чему это приводит.)&lt;br /&gt;   &lt;br /&gt;    Второй способ:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# adduser&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Далее предстоит ответить на несколько вопросов системы. Тоже все просто.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    б) Группа &lt;tt&gt;wheel&lt;/tt&gt; дает вам возможность выполнять команды от имени суперпользователя (&lt;tt&gt;root&lt;/tt&gt;). Это сделано для того, чтобы ускорить выполнение этих самых команд: в такой случае не нужно каждый раз начинать новый сеанс, а достаточно воспользоваться командой &lt;tt&gt;su&lt;/tt&gt; примерно так:&lt;br /&gt;   &lt;br /&gt;&lt;tt&gt;$ su&lt;br /&gt;Password:&lt;br /&gt;# ls&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Как вы понимаете, последняя команда (&lt;tt&gt;ls&lt;/tt&gt;) выполняется уже с правами суперпользователя.&lt;br /&gt;    Чтобы получить доступ к выполнению этой команд,ы достаточно включить себя в группу &lt;tt&gt;wheel&lt;/tt&gt;. Делается это редактированием файла &lt;tt&gt;/etc/group&lt;/tt&gt;:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# ee /etc/group&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Откроется стандартный текстовый редактор &lt;tt&gt;ee&lt;/tt&gt;, в первой строке (возможно, и не в первой) будет запись:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;wheel:*:0:root&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Ставим запятую после слова &lt;tt&gt;root&lt;/tt&gt; и вписываем имя нашего пользователя. Например, так (для пользователя &lt;tt&gt;joe&lt;/tt&gt;):&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;wheel:*:0:root,joe&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Теперь заходим в систему под своим именем и больше никогда не входим с логином &lt;tt&gt;root&lt;/tt&gt;.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;2) Настройка и запуск иксов (X-сервера X.Org)&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    Тут тоже ничего сложного нет. Единственная проблема в том, что в процессе установки FreeBSD Xorg не конфигурируется. Поэтому нам предстоит это сделать самим. Итак:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# Xorg -configure&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Запускается конфигурационный скрипт. Он создаст файл &lt;tt&gt;xorg.conf.new&lt;/tt&gt; и сохранит его в каталоге &lt;tt&gt;/root&lt;/tt&gt;.&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# Xorg -configure ~/xorg.conf.new&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Проверяется конфигурация из нового сгенерированного файла (&lt;tt&gt;/root/xorg.conf.new&lt;/tt&gt;). Если все правильно, появится серый экран и курсор мыши (крестик). Нажимаем комбинацию клавиш &lt;ctrl&gt;+&lt;alt&gt;+&lt;backspace&gt; ("экстренное" завершение работы X-сервера).&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# cp ~/xorg.conf.new /etc/X11/xorg.conf&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Новый конфигурационный файл копируется на место стандартного системного конфига Xorg.&lt;br /&gt;   &lt;br /&gt;    Теперь надо определить менеджер окон по умолчанию. Это делается просто: создается файл &lt;tt&gt;.xinitrc&lt;/tt&gt; в домашнем каталоге пользователя (для которого и определяется оконный менеджер по умолчанию) и в него помещается строку вида &lt;tt&gt;exec &lt;запускающий_скрипт&gt;&lt;/tt&gt;.&lt;br /&gt;   &lt;br /&gt;    Например, для текущего пользователя определение KDE как оконного менеджера по умолчанию делается так:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;$ echo "exec startkde"&gt;~/.xinitrc&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Теперь можно выполнить команду &lt;tt&gt;startx&lt;/tt&gt; и оказаться в графической оболочке.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;3) Локализация (русификация системы)&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    Многие считают, для русификации Linux достаточно поставить пакет локализации используемого оконного менеджера, но на самом деле это, конечно, не так. Далее я приведу порядок действий для локализации FreeBSD в CP1251. Это стандартная кодировка, используемая в операционной системе Windows. У меня на компьютере FreeBSD и Linux установлена и Windows XP, поэтому, чтобы они все друг друга "понимали", все приводится в CP1251 (строго говоря, это вовсе не обязательное условие для организации такого "понимания" - прим. Д. Шурупова) . К тому же, нет проблем, например, с тегами .mp3-файлов, записанных в Windows.&lt;br /&gt;   &lt;br /&gt;    Редактируем &lt;tt&gt;/etc/login.conf&lt;/tt&gt;:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt;russian/Russian Users Accounts:&lt;br /&gt; :charset=CP1251:&lt;br /&gt; :lang=ru_RU.CP1251:&lt;br /&gt; :tc=default:&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    Далее исправляем конфигурационные файлы используемых командных оболочек.&lt;br /&gt;    Для bash (Bourne-Shell) в файл &lt;tt&gt;/etc/profile&lt;/tt&gt; вписываем:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt; LANG=ru_RU.CP1251; export LANG&lt;br /&gt; LC_ALL=ru_RU.CP1251; export LC_ALL&lt;br /&gt; MM_CHARSET=CP1251; export MM_CHARSET&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    Для csh (или tcsh) в файл &lt;tt&gt;/etc/csh.login&lt;/tt&gt; вписываем:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt; setenv LANG ru_RU.CP1251&lt;br /&gt; setenv MM_CHARSET CP1251&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    Для того, чтобы не только читать, но и писать в CP1251, качаем 2 файла: ru.cp1251.kbd и win2cpp866.scm. Первый копируем в &lt;tt&gt;/usr/share/syscons/keymaps/&lt;/tt&gt;, второй - в &lt;tt&gt;/usr/share/syscons/scrnmaps/&lt;/tt&gt;.&lt;br /&gt;   &lt;br /&gt;    Теперь в &lt;tt&gt;/etc/rc.conf&lt;/tt&gt; пишем:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt; keymap=ru.cp1251&lt;br /&gt; scrnmap="win2cpp866"&lt;br /&gt; font8x16=cp866-8x16&lt;br /&gt; font8x14=cp866-8x14&lt;br /&gt; font8x8=cp866-8x8&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    После запуска KDE устанавливаем стандартные Windows-шрифты через центр управления KDE.&lt;br /&gt;   &lt;br /&gt;    Windows-разделы жесткого диска (FAT32) легко монтируются после редактирования файла &lt;tt&gt;/etc/fstab&lt;/tt&gt;. В него необходимо добавить строку вида:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;/dev/ad1s1 /mnt/win_d msdosfs rw,auto,-DCP866,-Lru_RU.CP1251 0 0&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    Где &lt;tt&gt;/dev/ad1s1&lt;/tt&gt; - имя устройства нужного раздела жесткого диска, &lt;tt&gt;/mnt/win_d&lt;/tt&gt; - точка монтирования (где будет доступен этот раздел жесткого диска после монтирования), &lt;tt&gt;msdosfs&lt;/tt&gt; - тип файловой системы.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;4) Настройка звука&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    Для начала рекомендую посетить http://www.freebsd.org/releases/6.2R/hardware-i386.html - на этой странице можно найти информацию обо всем поддерживаемом оборудовании на данный момент. Как не трудно догадаться, нужно найти свою аудиокарту и запомнить имя драйвера для нее.&lt;br /&gt;   &lt;br /&gt;    После этого в файл &lt;tt&gt;/boot/loader.conf&lt;/tt&gt; нужно добавить строку типа:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt;snd_cmi_load="YES"&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    Где вместо &lt;tt&gt;snd_cmi&lt;/tt&gt; нужно указать название своего драйвера. После перезагрузки в системе появится звук.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;5) Рихтовка xorg.conf&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    а) Возможно, колесо мышки (скролл) не будет работать. В этом случае необходимо открыть конфигурационный файл Xorg (&lt;tt&gt;/etc/X11/xorg.conf&lt;/tt&gt;), найти секцию мышки и привести ее примерно к следующему виду:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt;Section "InputDevice"&lt;br /&gt; Identifier  "Mouse0"&lt;br /&gt; Driver      "mouse"&lt;br /&gt; Option     "Protocol" "auto"&lt;br /&gt; Option     "Device" "/dev/sysmouse"&lt;br /&gt; Option     "ZAxisMapping" "4 5 6 7"&lt;br /&gt;EndSection&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    Моя оптическая беспроводная мышь от Logitech работает отлично.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    б) Раскладки клавиатуры и параметры переключения редактируются там же, только в секции клавиатуры:&lt;br /&gt;   &lt;br /&gt;&lt;/p&gt;&lt;pre&gt;Section "InputDevice"&lt;br /&gt; Identifier "Keyboard0"&lt;br /&gt; Driver  "kbd"&lt;br /&gt; Option  "XkbModel" "pc105"&lt;br /&gt; Option  "XkbLayout" "us,ru(winkeys)"&lt;br /&gt; Option  "XkbRules" "xorg"&lt;br /&gt; OPtion  "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" &lt;br /&gt;EndSection&lt;/pre&gt; &lt;p&gt;   &lt;br /&gt;    В данном примере представлено переключение по &lt;ctrl&gt;+&lt;shift&gt; и включение индикатора Scroll Lock, когда активирована русская раскладка.&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    &lt;b&gt;6) Установка программ&lt;/b&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    В FreeBSD предусмотрено 3 основных типа установки нового программного обеспечения.&lt;br /&gt;   &lt;br /&gt;     &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Из исходников.&lt;/b&gt;&lt;br /&gt;    Нужно скачать архив (вероятно, им будет тарболл, т.е. файлы типа *.tar, *.tar.gz или *.tar.bz2) и распаковать его (для .tar: &lt;tt&gt;tar xvf xxx.tar&lt;/tt&gt;; для .tar.gz: &lt;tt&gt;tar xzvf xxx.tar.gz&lt;/tt&gt;; для .tar.bz2: &lt;tt&gt;tar xjvf xxx.tar.bz2&lt;/tt&gt;). После этого установка вкратце выполняется так:&lt;br /&gt;   &lt;br /&gt;&lt;tt&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;# make install&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;(Последнюю операцию, как видно, необходимо выполнять с правами &lt;tt&gt;root&lt;/tt&gt;.)&lt;/li&gt;     &lt;li&gt;&lt;b&gt;Из пакетов.&lt;/b&gt;&lt;br /&gt;    Для работы с ними используются программы &lt;tt&gt;pkg_add&lt;/tt&gt;, &lt;tt&gt;pkg_delete&lt;/tt&gt; и &lt;tt&gt;pkg_info&lt;/tt&gt;. Пакеты доступны на &lt;a href="ftp://freebsd.org/" target="_blank"&gt;FTP-сервере FreeBSD&lt;/a&gt; (ftp://freebsd.org/). Программы работают так:&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# pkg_add &lt;имя_пакета&gt;&lt;/tt&gt;&lt;br /&gt;    - устанавливает пакет.&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# pkg_delete &lt;имя_пакета&gt;&lt;/tt&gt;&lt;br /&gt;    - удаляет установленный пакет из системы.&lt;br /&gt;   &lt;br /&gt;    &lt;tt&gt;# pkg_info &lt;имя_пакета&gt;&lt;/tt&gt;&lt;br /&gt;- выводит информацию об установленном пакете.&lt;/li&gt;     &lt;li&gt;&lt;b&gt;Из портов&lt;/b&gt;.&lt;br /&gt;    Коллекция портов FreeBSD может быть установлена во время инсталляции системы или в любое время с помощью команды &lt;tt&gt;sysinstall&lt;/tt&gt;. Для портов используется несколько источников их получения (например: FTP-сервер, привод CD-ROM и т.д). Разумеется, предпочтительным вариантом является FTP, но это не всегда возможно. По умолчанию порты ставятся в &lt;tt&gt;/usr/ports&lt;/tt&gt;. Чтобы найти нужное приложение, достаточно выполнить специально предусмотренный поиск:&lt;br /&gt;   &lt;br /&gt;&lt;tt&gt;$ cd /usr/ports&lt;br /&gt;$ make search name=&lt;имя_приложения&gt;&lt;/tt&gt;&lt;br /&gt;   &lt;br /&gt;    В этом случае программа даст вам расположение и название каталога искомого пакета, а также информацию о том, что надо, чтобы его установить (зависимости). Если в процессе установки чего-то не будет хватать, программа сама поставит все, что ей надо.&lt;br /&gt;   &lt;br /&gt;Итак, допустим, мы устанавливаем &lt;tt&gt;nmap: &lt;/tt&gt;&lt;pre&gt;&lt;tt&gt;$ cd /usr/ports&lt;br /&gt;$ make search name=nmap&lt;br /&gt;Port:   nmap-4.11&lt;br /&gt;Path:   /usr/ports/security/nmap&lt;br /&gt;Info:   Port scanning utility for large networks&lt;br /&gt;Maint:  daniel@roe.ch&lt;br /&gt;B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2 pcre-6.7&lt;br /&gt;R-deps: pcre-6.7&lt;br /&gt;WWW:    http://www.insecure.org/nmap/&lt;br /&gt;$ cd security/nmap&lt;br /&gt;# make install clean&lt;/tt&gt;&lt;/pre&gt;&lt;tt&gt;&lt;br /&gt;Вот и все. Спустя 10 минут я получил в свое распоряжение готовую рабочую программу.&lt;/tt&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8407066610557046507?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8407066610557046507/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8407066610557046507' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8407066610557046507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8407066610557046507'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/10/freebsd.html' title='Советы по первичной настройке FreeBSD для новичков&quot;'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-2402027204224067491</id><published>2009-09-28T03:50:00.001-07:00</published><updated>2009-09-28T03:59:01.705-07:00</updated><title type='text'>Ubuntu WiMAX, WiFi И конечно же моя Lenovo S10-2</title><content type='html'>В обще опять я мучал свой бук. Результат это корректировки мануалов по WiMAX и WiFi.&lt;br /&gt;&lt;br /&gt;И так имеем, Ubuntu 9.04 Ядро 2.6.28-15 (после всех обновлений).&lt;br /&gt;&lt;br /&gt;Стартуем WiFi&lt;br /&gt;Стартуем WiMAX&lt;br /&gt;&lt;br /&gt;Все...&lt;br /&gt;&lt;br /&gt;з.ы. Ищу инструкцию по прикручиванию Переключения WiMAX|WiFi в NetworkManager'е&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-2402027204224067491?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/2402027204224067491/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=2402027204224067491' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2402027204224067491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/2402027204224067491'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/09/ubuntu-wimax-wifi-lenovo-s10-2.html' title='Ubuntu WiMAX, WiFi И конечно же моя Lenovo S10-2'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-8712546182800352400</id><published>2009-09-20T21:39:00.000-07:00</published><updated>2009-09-20T22:00:33.327-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Itsecure'/><category scheme='http://www.blogger.com/atom/ns#' term='Информационная безопасность'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoWatch'/><title type='text'>Суждения об информационной безопасности мудреца и учителя Инь Фу Во, записанные его учениками</title><content type='html'>Николай Николаевич Федотов,&lt;br /&gt;главный аналитик компании InfoWatch;&lt;br /&gt;fnn@fnn.ru&lt;br /&gt;Суждения об информационной безопасности мудреца и учителя Инь Фу Во[&lt;a href="#1"&gt;1&lt;/a&gt;], записанные его учениками&lt;br /&gt;&lt;br /&gt;Глава 1. О работниках&lt;br /&gt;&lt;br /&gt;1.1&lt;br /&gt;Однажды Сисадмин пожаловался Учителю:&lt;br /&gt;– Мы выдали всем нашим пользователям индивидуальные пароли, а они не желают хранить их в тайне. Записывают на листочках и приклеивают к мониторам. Что нам делать? Как заставить их?&lt;br /&gt;Инь Фу Во спросил:&lt;br /&gt;– Сначала скажи, почему они это делают.&lt;br /&gt;Сисадмин подумал и ответил:&lt;br /&gt;– Может быть, они не считают пароль ценным?&lt;br /&gt;– А разве пароль сам по себе ценный?&lt;br /&gt;– Не сам по себе. Ценна информация, которая под паролем.&lt;br /&gt;– Для кого она ценна?&lt;br /&gt;– Для нашего предприятия.&lt;br /&gt;– А для пользователей?&lt;br /&gt;– Для пользователей, видимо, нет.&lt;br /&gt;– Так и есть, – сказал Учитель. – Под паролем нет ничего ценного для наших работников. Надо, чтоб было.&lt;br /&gt;– Что для них ценно? – спросил Сисадмин.&lt;br /&gt;– Догадайся с трёх раз, – рассмеялся Учитель.&lt;br /&gt;Сисадмин ушёл просветлённый и сделал на корпоративном портале персональные странички для всех работников. И на тех страничках был указан размер зарплаты. Узнав об этом, все пользователи забеспокоились о своих паролях. На другой день в курилке обсуждали размер зарплаты Главбуха. На третий день ни у кого не было видно листочков с паролями.&lt;br /&gt;&lt;br /&gt;1.2&lt;br /&gt;Однажды Сисадмин пожаловался Учителю:&lt;br /&gt;– Наш Техдиректор не хочет выполнять требования безопасности. Всем положено иметь антивирус, а он не ставит. Как на него повлиять?&lt;br /&gt;– Попробуй его убедить, – сказал Инь Фу Во.&lt;br /&gt;Сисадмин ушёл убеждать, но вскоре вернулся разочарованным:&lt;br /&gt;– Я не смог убедить его, Учитель.&lt;br /&gt;– Почему так случилось? – спросил Инь Фу Во и сразу же заметил. – Но только ответь честно, без пристрастия и обиды.&lt;br /&gt;Сисадмин подумал, опустил глаза и тихо сказал:&lt;br /&gt;– Наверное потому, что он знает об информационной безопасности больше меня.&lt;br /&gt;– Ну, если Техдиректор знает больше тебя, что совсем не удивительно, – заметил Учитель, – то ему виднее, где нужен антивирус, а где нет.&lt;br /&gt;– А как же тогда Политика безопасности! – воскликнул Сисадмин.&lt;br /&gt;– А кто писал эту Политику?&lt;br /&gt;Сисадмин потупился и сказал:&lt;br /&gt;– Я.&lt;br /&gt;Учитель мудро промолчал, и Сисадмин ушёл просветлённый.&lt;br /&gt;&lt;br /&gt;1.3&lt;br /&gt;Однажды в курилке пользователи стали возмущаться, что Сисадмин закрыл всем доступ на сайт "Одноклассники". Инь Фу Во услышал об этом и нахмурился.&lt;br /&gt;– Почему ты закрыл людям доступ? – спросил он у Сисадмина, когда они после перекура пили кофе.&lt;br /&gt;– Потому что такие сайты не нужны для работы.&lt;br /&gt;– А курить нужно для работы?&lt;br /&gt;– Вообще-то нет...&lt;br /&gt;– А кофе пить?&lt;br /&gt;– Ну...&lt;br /&gt;– Ну тогда, – сказал Учитель, – открой людям доступ.&lt;br /&gt;&lt;br /&gt;1.4&lt;br /&gt;Однажды Сисадмин захотел установить в локальной сети сканер безопасности.&lt;br /&gt;Инь Фу Во сказал:&lt;br /&gt;– Не делай этого.&lt;br /&gt;– Но почему?&lt;br /&gt;– В нашей сети сто компьютеров. Сканер найдёт тебе по две-три уязвимости на каждом из них.&lt;br /&gt;– Ну, да, найдёт...&lt;br /&gt;– А что ты будешь делать с этими уязвимостями?&lt;br /&gt;Сисадмин задумался и ничего не ответил Учителю. Сканер безопасности он не поставил.&lt;br /&gt;&lt;br /&gt;1.5&lt;br /&gt;Однажды Сисадмин пожаловался Учителю:&lt;br /&gt;– Антивирус не помогает. Установлен на всех рабочих станциях и обновляется дважды в день. А всё равно каждую неделю кто-то заражается и теряет данные.&lt;br /&gt;Инь Фу Во с сожалением покачал головой.&lt;br /&gt;– Надо что-то делать, – продолжал Сисадмин.&lt;br /&gt;Учитель слегка покивал. Сисадмин спросил:&lt;br /&gt;– Что лучше: поставить всем новый многоядерный антивирус или поднять централизованную систему бэкапа?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Проведи курсы для пользователей.&lt;br /&gt;&lt;br /&gt;1.6&lt;br /&gt;Однажды Директор решил взять на работу Эникейщика. Инь Фу Во нашёл кандидата, поговорил с ним и остался доволен. Он сказал Директору:&lt;br /&gt;– Этот человек обратил свои помыслы к учёбе. Возможно, из него получится достойный работник.&lt;br /&gt;Но начальник службы безопасности стал возражать:&lt;br /&gt;– У этого человека была судимость. Его нельзя брать на службу.&lt;br /&gt;Тогда Инь Фу Во спросил:&lt;br /&gt;– Как вы узнали об этом?&lt;br /&gt;– У меня есть связи.&lt;br /&gt;Почтенный Инь помрачнел лицом и сказал Директору:&lt;br /&gt;– Какой из двух работников более добродетельный? Первый совершил преступление и понёс заслуженное наказание, которое могло его вразумить. Второй совершил преступление сам, подбил на совершение преступления государственного служащего, при этом не чувствует за собой вины и никогда не понесёт наказания? Какой из этих двух достоин выдвижения?&lt;br /&gt;Начальник службы безопасности молча встал и вышел.&lt;br /&gt;&lt;br /&gt;1.7&lt;br /&gt;Однажды Директор спросил Инь Фу Во про защиту от внутренних угроз. Тот сказал:&lt;br /&gt;– Во внешнем мире есть сто человек, которые хотели бы заполучить конфиденциальную информацию из вашей сети. И есть пять, которые способны это сделать. Но эти сто вряд ли встретятся с этими пятью.&lt;br /&gt;Ещё Учитель сказал:&lt;br /&gt;– А в вашей внутренней сети есть пять пользователей, которые хотели бы заполучить конфиденциальную информацию. И есть сто, которые могут это сделать. И они уже встретились.&lt;br /&gt;&lt;br /&gt;1.8&lt;br /&gt;Однажды Директор пришёл к защитнику Иню за советом. Директор сказал:&lt;br /&gt;– Я хотел бы заставить всех пользователей соблюдать строгие правила безопасности. Но тогда они обидятся на меня и станут хуже работать. Я хотел бы дать пользователям полную свободу. Но тогда они нахватают вирусов, разгласят конфиденциальную информацию, и наш бизнес пострадает. Как мне найти золотую середину?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Высота забора равна высоте самого низкого участка. Прочность цепи равна прочности слабейшего звена. Заставь самых нерадивых из пользователей соблюдать те правила безопасности, которые без принуждения соблюдают все остальные.&lt;br /&gt;– Как просто! – воскликнул Директор и ушёл просветлённый.&lt;br /&gt;&lt;br /&gt;1.9&lt;br /&gt;Директор спросил почтенного Иня:&lt;br /&gt;– Мне предлагают купить систему защиты от несанкционированного доступа. Стоит ли она денег, которые за неё просят?&lt;br /&gt;Инь Фу Во в ответ спросил:&lt;br /&gt;– Сколько у вас было случаев несанкционированного доступа за последние три года?&lt;br /&gt;– Ни одного, – ответил Директор.&lt;br /&gt;– А сколько ноутбуков и флэшек потеряли ваши работники за это время?&lt;br /&gt;– Два ноутбука, – ответил Директор, – а флэшки никто не считал.&lt;br /&gt;– Почему бы вместо этого не купить систему для шифрования информации на ноутбуках и флэшках? – сказал Инь Фу Во.&lt;br /&gt;&lt;br /&gt;1.10&lt;br /&gt;Однажды Директор спросил почтенного защитника Иня про защиту от внутренних угроз. Тот сказал:&lt;br /&gt;– Внутренний враг бывает злонамеренный и неосторожный. Неосторожный враг подобен каплям дождя, что многочисленны и летят по воле ветра. От дождя легко заслониться зонтом. Злонамеренный враг подобен комару, который кусает в незащищённое место. Заслониться от него зонтом нельзя.&lt;br /&gt;Директор ещё спросил:&lt;br /&gt;– А какой инсайдер хуже, злонамеренный или неосторожный?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Нельзя так ставить вопрос. Оба они хуже.&lt;br /&gt;&lt;br /&gt;1.11&lt;br /&gt;Как-то Сисадмин спросил:&lt;br /&gt;– Учитель, не желаете ли красивую картинку для вашего десктопа? У меня есть коллекция "обоев для рабочего стола" со звёздным небом и моральным законом.&lt;br /&gt;– Почему ты думаешь, что мой нынешний "wallpaper" хуже? – спросил в ответ Инь Фу Во.&lt;br /&gt;– Я не знаю, какая у вас картинка сейчас. Я никогда не видел вашего десктопа. У вас всегда открыто множество окон.&lt;br /&gt;– Я тоже его никогда не видел, – сказал почтенный Инь. – Я работаю.&lt;br /&gt;&lt;br /&gt;1.12&lt;br /&gt;Однажды младший бухгалтер Ли Чан принесла в дар Инь Фу Во кактус.&lt;br /&gt;– Поставьте его возле вашего монитора, Учитель, – сказала она. – Этот кактус защитит вас от вредного излучения.&lt;br /&gt;– Отнеси его Сисадмину, – сказал Инь Фу Во. – Мне кактус не поможет.&lt;br /&gt;– Почему? – обиженно спросила Ли Чан.&lt;br /&gt;– Для него нет драйвера под FreeBSD, – ответил Учитель.&lt;br /&gt;&lt;br /&gt;1.13&lt;br /&gt;Однажды в офис забрёл продавец китайских товаров. Он ходил по комнате и пытался каждому что-нибудь продать.&lt;br /&gt;Инь Фу Во сказал Сисадмину:&lt;br /&gt;– Ты всегда говоришь и пишешь в блоге, что спамеров нужно убивать. Смотри, это – спамер.&lt;br /&gt;– Это не тот спамер, – пробормотал Сисадмин.&lt;br /&gt;– Ты даже охрану не позовёшь? – ехидно спросил Учитель.&lt;br /&gt;Сисадмин ничего не ответил. Он увлечённо долбил по клавиатуре.&lt;br /&gt;&lt;br /&gt;1.14&lt;br /&gt;Сисадмин спросил Учителя:&lt;br /&gt;– В статье написано, что любое усиление безопасности снижает лояльность работников. Это правда?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– На самом деле усиление безопасности снижает удобство. Снижение удобства повышает усталость. Повышение усталости снижает добросовестность. А снижение добросовестности работников – это и есть то, чего следует избегать.&lt;br /&gt;– Тогда что же такое лояльность? – спросил Сисадмин.&lt;br /&gt;– "Лояльность", – усмехнулся Инь Фу Во, – это японцы выдумали, чтоб денег не платить.&lt;br /&gt;&lt;br /&gt;1.15&lt;br /&gt;Однажды Сисадмин пожаловался Учителю:&lt;br /&gt;– Наш Директор совершенно не разбирается в ИТ. Я не могу ему объяснить. И его указания всегда такие нелепые.&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Это нормальный порядок вещей. Его забота – люди и деньги. Твоя забота – техника и программы. Вы разговариваете на разных языках.&lt;br /&gt;Сисадмин согласился и спросил:&lt;br /&gt;– Как нам изучить язык друг друга?&lt;br /&gt;– Это почти невозможно, – сказал Учитель. – Для этого Директору пришлось бы несколько лет проработать сисадмином, но он не пожелает. Для этого тебе пришлось бы несколько лет проработать руководителем, но тебя не допустят.&lt;br /&gt;– Как же понять друг друга тем, кто говорит на разных языках? – спросил Сисадмин.&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Специально для этих целей создан промежуточный язык, доступный обоим. Имя ему – "ГОСТ-17799".&lt;br /&gt;– Как просто! – воскликнул Сисадмин и ушёл просветлённый.&lt;br /&gt; &lt;br /&gt;Глава 2. О шифровании&lt;br /&gt;&lt;br /&gt;2.1&lt;br /&gt;Однажды Сисадмин спросил почтенного защитника Иня:&lt;br /&gt;– Учитель, почему вы не пользуетесь ЭЦП?&lt;br /&gt;– У надёжных средств ЭЦП нет сертификата. У сертифицированных нет удобства. У удобных нет надёжности, – ответил Инь Фу Во.&lt;br /&gt;&lt;br /&gt;2.2&lt;br /&gt;Инь Фу Во два дня настраивал VPN-туннель для своего персонального компьютера. Когда туннель заработал, Инь уселся, почтительно повернувшись лицом к югу, и стал читать свою френдленту.&lt;br /&gt;– О, Учитель, – спросил его Сисадмин, – я не могу понять, зачем вам VPN?&lt;br /&gt;– Ты разве не знаешь, что в VPN-туннеле весь трафик шифруется? – удивился Инь.&lt;br /&gt;– Знаю. Но ваш туннель терминируется на обычном сервере в стране западных варваров. А далее весь ваш яшмовый трафик идёт по Сети в открытом виде.&lt;br /&gt;– Сети нет дела до моего трафика, чего не скажешь о провайдере, – ответил Учитель. Видя, что Сисадмин не понял, он добавил. – Вот, например, ты доверил свои деньги банку.&lt;br /&gt;Сисадмин кивнул.&lt;br /&gt;– Но ты не можешь доверить все свои деньги собственной супруге, – продолжал мудрый Инь. – Почему? Потому что она может посчитать эти деньги своими. А с банком такого не случится.&lt;br /&gt;Просветлённый Сисадмин ушёл поднимать себе VPN-туннель.&lt;br /&gt;&lt;br /&gt;2.3&lt;br /&gt;Сисадмин спросил Инь Фу Во:&lt;br /&gt;– Правда ли, что любой шифр можно сломать?&lt;br /&gt;Учитель ответил:&lt;br /&gt;– Можно. Но не "шифр", а систему из четырёх: алгоритм, реализация[&lt;a href="#2"&gt;2&lt;/a&gt;], окружение[&lt;a href="#3"&gt;3&lt;/a&gt;] и оператор.&lt;br /&gt;Сисадмин ещё спросил:&lt;br /&gt;– А что из этих четырёх самое непрочное?&lt;br /&gt;– Стыки между ними, – ответил Учитель.&lt;br /&gt;&lt;br /&gt;2.4&lt;br /&gt;Однажды к почтенному защитнику Иню обратился Следователь. Он спросил:&lt;br /&gt;– Учитель, вы сможете расшифровать криптоконтейнер PGPdisk без знания пароля?&lt;br /&gt;– Не смогу, – ответил Инь Фу Во. – И никто другой не сможет.&lt;br /&gt;– Тогда горе мне! – воскликнул Следователь. – Тогда у меня нет доказательств.&lt;br /&gt;– Увидев запертый замок, обычный человек желает заглянуть внутрь. Но благородный муж знает, что самое ценное лежит не под замком, – сказал Учитель. – Что именно вы желаете доказать?&lt;br /&gt;– Нарушение авторских прав на программы.&lt;br /&gt;– Оставьте криптоконтейнер в покое, – ответил Учитель. – Свидетельских показаний будет более чем достаточно.&lt;br /&gt;&lt;br /&gt;2.5&lt;br /&gt;Инь Фу Во сказал:&lt;br /&gt;– Шифрование – это обмен большого секрета на маленький секрет. Этот маленький должен помещаться в голове. Когда пароль в голове держится хуже, чем в компьютере, шифрование не приносит пользы.&lt;br /&gt;&lt;br /&gt;2.6&lt;br /&gt;Однажды Сисадмин и инженер Чжа Вынь почтительно приблизились к Учителю, и Сисадмин сказал:&lt;br /&gt;– Мой единочаятель Вынь утверждает, что во всех обнародованных криптографических программах есть "чёрный ход", сделанный спецслужбами. А я полагаю, что это не так. Кто из нас прав?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– С этого вопроса начинают свой путь все инженеры и все сисадмины. Тот, кто утвердил для себя ответ на него, навсегда остановился и не может следовать Дао. Однако и пренебрегать этим вопросом тоже было бы не верно.&lt;br /&gt;Потом почтенный Инь продолжил:&lt;br /&gt;– У северных варваров есть такая легенда. Грозный и мудрый Тигр, царь зверей повелел Лису построить утиную ферму. Глупый Лис при строительстве сделал для себя тайный ход, чтобы воровать государственных уток. И, конечно же, сразу попался. Тигр велел казнить обманщика и таким образом сэкономил деньги на строительство. Не думай, драгоценный Вынь, что спецслужбы подобны глупому Лису. Но и ты – отнюдь не мудрый Тигр, царь зверей.&lt;br /&gt;Ученики ушли просветлённые. Сисадмин после этого вообще отказался от шифрования своего диска. А инженер Чжа Вынь сделал криптоконтейнер внутри криптоконтейнера.&lt;br /&gt;&lt;br /&gt;2.7&lt;br /&gt;Сисадмин желал подобрать себе стойкий пароль для централизованной авторизации через radius-сервер. Он обратился за советом к Инь Фу Во.&lt;br /&gt;– Как вы думаете, Учитель, пароль "史達林格勒戰役" стойкий?&lt;br /&gt;Нет, – ответил мастер Инь, – это словарный пароль.&lt;br /&gt;– Но такого слова нет в словарях...&lt;br /&gt;– "Словарный" означает, что это сочетание символов есть в wordlists, то есть "словарях" для перебора, которые подключаются к программам криптоанализа. Эти словари составляются из всех сочетаний символов, которые когда-либо встречались в Сети.&lt;br /&gt;– А пароль "Pft,bcm" подойдёт?&lt;br /&gt;– Вряд ли. Он тоже словарный.&lt;br /&gt;– Но как же? Это же...&lt;br /&gt;– Введи это сочетание в Гугле – и сам увидишь.&lt;br /&gt;Сисадмин защёлкал клавишами.&lt;br /&gt;– О, да. Вы правы, Учитель.&lt;br /&gt;Через некоторое время Сисадмин воскликнул:&lt;br /&gt;– Учитель, я подобрал хороший пароль, которого не может быть в словарях.&lt;br /&gt;Инь Фу Во кивнул.&lt;br /&gt;– Я ввёл его в Гугле, – продолжал Сисадмин, – и убедился, что в Сети такого сочетания нет.&lt;br /&gt;– Теперь есть.&lt;br /&gt;&lt;br /&gt;2.8&lt;br /&gt;Однажды инженер Чжа Вынь обратился к Учителю:&lt;br /&gt;– Один достойный уважения человек сказал мне, что шифровать электронную почту неправильно. Поскольку честному человеку нечего скрывать, шифрованная переписка неизбежно привлечёт внимание Охранительного ведомства. Учитель, что вы об этом думаете?&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Благородный муж имеет чувство стыдливости. Он закрывает одеждой свою наготу. Вовсе не потому, что лицезрение другими принесёт ему ущерб. Но такова воля Неба, и таков ритуал. Честному человеку есть, что скрывать.&lt;br /&gt;&lt;br /&gt;2.9&lt;br /&gt;Инженер Чжа Вынь долго сидел над проектом, а потом пожаловался Учителю:&lt;br /&gt;– Не могу примирить бэкап и шифрование. Всё время одно мешает другому.&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Они непримиримы. Шифрование защищает конфиденциальность. Резервное копирование защищает доступность. Конфиденциальность и доступность – это разные защиты.&lt;br /&gt;– Но как же быть тогда? – спросил Чжа Вынь. – Здесь нужна и конфиденциальность, и доступность.&lt;br /&gt;– Пусть одна будет внутри другой. Пусть первая не знает про вторую.&lt;br /&gt;Инженер Чжа Вынь спросил Учителя:&lt;br /&gt;– Что значит резервирование внутри шифрования?&lt;br /&gt;– Пусть все файловые системы будут зашифрованы, а файлы будут бэкапиться с одной на другую, – ответил Инь Фу Во.&lt;br /&gt;Ещё Чжа Вынь спросил:&lt;br /&gt;– Что значит шифрование внутри резервирования?&lt;br /&gt;– Делай резервную копию криптоконтейнера как файла, – ответил Инь Фу Во.&lt;br /&gt;&lt;br /&gt;2.10&lt;br /&gt;Директор сказал:&lt;br /&gt;– Зачем нам шифровать содержимое дисков? Зачем нам VPN? У нас нет противозаконной информации.&lt;br /&gt;Мудрый Инь Фу Во ответил:&lt;br /&gt;– Безгрешность – не результат праведности, а результат наивности.&lt;br /&gt;&lt;br /&gt;Глава 3. Об этике&lt;br /&gt;&lt;br /&gt;3.1&lt;br /&gt;Сисадмин спросил:&lt;br /&gt;– Учитель, можно ли блэкхолить[&lt;a href="#4"&gt;4&lt;/a&gt;] трафик в случае DoS-атаки?&lt;br /&gt;– Иногда можно, – ответил Инь Фу Во.&lt;br /&gt;– А в каких случаях?&lt;br /&gt;– В каких случаях доктор может причинить вред своему пациенту? – спросил в ответ Учитель.&lt;br /&gt;– Наверное, когда предотвращённый вред превышает вред причинённый, – ответил Сисадмин, подумав.&lt;br /&gt;– Теперь спрошу другое, – продолжил Учитель. – В каких случаях доктор может причинить вред постороннему человеку?&lt;br /&gt;– Я не знаю таких случаев, – ответил Сисадмин.&lt;br /&gt;– Вот теперь ты готов блэкхолить нужный трафик, – кивнул Учитель.&lt;br /&gt;И Сисадмин ушёл просветлённый.&lt;br /&gt;&lt;br /&gt;3.2&lt;br /&gt;Инь Фу Во, проходя по офису, взглянул на мониторы сотрудников. Пробравшись на своё рабочее место, он изрёк:&lt;br /&gt;– Наш инженер Чжа Вынь сейчас настраивает QOS[&lt;a href="#5"&gt;5&lt;/a&gt;]. Он думает, что взаимодействует с техникой, а на самом деле – с людьми. Наша бухгалтер Ли Чан сейчас чатится по ICQ. Она думает, что общается с человеком, а на самом деле – с программой.&lt;br /&gt;– Учитель, а почему ваш монитор развёрнут экраном к стенке? – спросила Ли Чан.&lt;br /&gt;– Чтобы всё время видеть людей, – ответил Учитель.&lt;br /&gt;&lt;br /&gt;3.3&lt;br /&gt;Инженер Чжа Вынь хотел работать в отделе информационной безопасности. Инь Фу Во сказал ему:&lt;br /&gt;– Ты ещё не готов. Ты представляешь себя воином сети. А нам нужен доктор сети.&lt;br /&gt;&lt;br /&gt;3.4&lt;br /&gt;Однажды инженер Чжа Вынь сообщил:&lt;br /&gt;– Я нашёл уязвимость в программе «Лин». Что вы об этом думаете, Учитель?&lt;br /&gt;– Надо сообщить Производителю.&lt;br /&gt;Через некоторое время Чжа Вынь снова пришёл к почтенному защитнику Иню.&lt;br /&gt;– Я написал об уязвимости Производителю. Мне ответили, что закроют уязвимость только в следующей версии. Она выйдет через полгода.&lt;br /&gt;Инь Фу Во помрачнел:&lt;br /&gt;– Напиши им, что мы опубликуем эту уязвимость ровно через две недели.&lt;br /&gt;Через три дня вышел патч к программе «Лин».&lt;br /&gt;– А если бы они не выпустили патч? – спросил Сисадмин Учителя. – Вы бы позволили Чжа Выню опубликовать найденную уязвимость?&lt;br /&gt;Инь Фу Во мягко улыбнулся и сказал:&lt;br /&gt;– Нет. Дао информационной безопасности тем и прекрасен, что по нему нельзя идти в одиночку. Как только ты опередил других, другие ускоряют шаг. Как только ты оторвался от других, ты покинул Дао.&lt;br /&gt;&lt;br /&gt;3.5&lt;br /&gt;Прочитав статью в журнале, Учитель заметил:&lt;br /&gt;– Человек не есть «слабейшее звено в информационной безопасности». Человек вообще не есть звено.&lt;br /&gt;&lt;br /&gt;3.6&lt;br /&gt;Однажды Сисадмин спросил:&lt;br /&gt;– Учитель, вы всегда говорите, что надо делиться знаниями в области защиты информации со всеми, кто пожелает учиться.&lt;br /&gt;Инь Фу Во кивнул.&lt;br /&gt;Сисадмин продолжал:&lt;br /&gt;– Но ведь бывают и опасные знания! Особенно знания в информационной безопасности.&lt;br /&gt;Инь Фу Во воскликнул:&lt;br /&gt;– Опасные знания?! Знание опасно для того, кто им НЕ обладает.&lt;br /&gt;&lt;br /&gt;3.7&lt;br /&gt;Однажды Техдиректор прислал почтенному Иню вопрос по электронной почте. Учитель ответил на него, поместив в письмо фрагмент конфига. Кроме конфига и подписи в ответе ничего не было.&lt;br /&gt;Сисадмин, который получил копии обоих писем, спросил:&lt;br /&gt;– Учитель, почему вы поместили в письмо только несколько команд, но не добавили ни единого слова?&lt;br /&gt;Инь Фу Во в ответ процитировал своего учителя:&lt;br /&gt;– «Я не хочу говорить. Разве Небо говорит? А между тем времена года исправно сменяют друг друга»&lt;br /&gt;&lt;br /&gt;3.8&lt;br /&gt;Инженер Чжа Вынь спросил:&lt;br /&gt;– Следует ли при защите информации стремиться к возмездию? Или мы должны использовать только пассивную защиту?&lt;br /&gt;– Смотря, кто противник, – ответил Учитель. – Если тебя кусает комар, его следует прихлопнуть. Если на тебя капает дождь, следует прикрыться зонтом.&lt;br /&gt;– Я понял. Во многих случаях инцидент безопасности – это стихийная сила. И в нём никто не виноват.&lt;br /&gt;Инь Фу Во покачал головой:&lt;br /&gt;– Не совсем. В том, что пошёл дождь, действительно никто не виноват. Но если случилось землетрясение, и разрушилось здание, которое должно было устоять, то здесь есть виноватый. И его накажут.&lt;br /&gt;Чжа Вынь ушёл в задумчивости.&lt;br /&gt;&lt;br /&gt;3.9&lt;br /&gt;Учитель сказал:&lt;br /&gt;– Знание в ИБ подобно оружию. Неужели боец откажется поделиться своим оружием с другим, который хочет защищать свою землю? А ведь мы – в состоянии войны.&lt;br /&gt;&lt;br /&gt;3.10&lt;br /&gt;Однажды Инь Фу Во заблокировал на межсетевом экране несколько IP-адресов. Сисадмин спросил его о причинах. Учитель сказал:&lt;br /&gt;– На всякий случай. Я увидел необъяснимое поведение программ.&lt;br /&gt;– Может быть, это просто глюк? – предположил Сисадмин.&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Каждый из нас иногда сталкивается с необъяснимым. Не поняв сути, каждый действует по-своему. Сисадмин – камлает с бубном. Инженер Чжа Вынь – пьёт пиво и переинсталлирует систему. А я – начинаю подозревать действия коварного врага.&lt;br /&gt;Инженер Чжа Вынь, услышав разговор, заметил:&lt;br /&gt;– Это похоже на паранойю.&lt;br /&gt;– Паранойя входит в число моих должностных обязанностей, – ответил Учитель.&lt;br /&gt;&lt;br /&gt;3.11&lt;br /&gt;Однажды к почтенному защитнику Иню пришёл Хакер.&lt;br /&gt;– О, мудрый Инь, – сказал он, – обучи меня своему искусству.&lt;br /&gt;– Перед этим тебе придётся пройти испытание. Взломай вот этот компьютер, – и Инь Фу Во написал на листке IP-адрес.&lt;br /&gt;– Но это же мой собственный компьютер! – удивился Хакер.&lt;br /&gt;– Именно так, – подтвердил Учитель. – Ты должен взломать его, не используя известные тебе пароли.&lt;br /&gt;Хакер за один час справился с испытанием.&lt;br /&gt;– Я буду учить тебя, – сказал Инь Фу Во.&lt;br /&gt;Через три года Учитель снова дал Хакеру такое же задание. Хакер не смог его выполнить.&lt;br /&gt;– Теперь твоё обучение закончено, – сказал Инь Фу Во.&lt;br /&gt;&lt;br /&gt;3.12&lt;br /&gt;Инь Фу Во сказал:&lt;br /&gt;– Защитник информации не ликвидирует угрозы. Он перераспределяет угрозы между людьми. От менее доверяемых к более доверяемым.&lt;br /&gt;&lt;br /&gt;3.13&lt;br /&gt;Младший бухгалтер Ли Чан спросила:&lt;br /&gt;– Учитель, почему нашего инженера все зовут Чжа Вынь (奓蟁)? Ведь по паспорту он Чжа Сунь (奓诵).&lt;br /&gt;Инь Фу Во ответил:&lt;br /&gt;– Взгляни на него, какой же он Сунь? Когда он теряет данные о клиенте, он отключает порт на коммутаторе и ждёт от клиента звонка. Ну какой же он Сунь?&lt;br /&gt;&lt;br /&gt;[&lt;a name="1" id ="1"&gt;1&lt;/a&gt;] Инь Фу Во (廕傁幄) – почтенный защитник Инь.&lt;br /&gt;[&lt;a name="2" id ="2"&gt;2&lt;/a&gt;] Инь Фу Во имеет в виду программу, которая производит шифрование и расшифровывание по алгоритму.&lt;br /&gt;[&lt;a name="3" id ="3"&gt;3&lt;/a&gt;] Инь Фу Во называет окружением операционную систему, в которой работает шифрующая программа и сам компьютер, то есть аппаратную платформу.&lt;br /&gt;[&lt;a name="4" id ="4"&gt;4&lt;/a&gt;] от "blackhole", что означает маршрутизацию соответствующего трафика в /dev/null&lt;br /&gt;[&lt;a name="5" id ="5"&gt;5&lt;/a&gt;] QOS, quality of service – система приоритезации трафика&lt;br /&gt; &lt;br /&gt;© Н.Н.Федотов, 2009.&lt;br /&gt;Допускается воспроизведение и доведение до всеобщего сведения настоящего произведения полностью или частями, с обязательной ссылкой &lt;a href="http://forensics.ru/InFuWo.htm"&gt;на данную веб-страницу&lt;/a&gt; или на корпоративный &lt;a href="http://infowatch.livejournal.com/"&gt;блог&lt;/a&gt; компании InfoWatch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-8712546182800352400?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/8712546182800352400/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=8712546182800352400' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8712546182800352400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/8712546182800352400'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/09/blog-post_20.html' title='Суждения об информационной безопасности мудреца и учителя Инь Фу Во, записанные его учениками'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-4102770460759856213</id><published>2009-09-17T23:39:00.000-07:00</published><updated>2009-09-28T03:54:03.559-07:00</updated><title type='text'>Lenovo S10-2 vs я &amp; Ubuntu - WiFi</title><content type='html'>На форуме узрел вопрос про то как запустить на ленове Wifi&lt;br /&gt;Как говорится спрашивали - отвечаем.&lt;br /&gt;&lt;br /&gt;sudo apt-get install linux-backports-modules-jaunty&lt;br /&gt;&lt;br /&gt;Скачать файлик отсюда&lt;br /&gt;http://www.intellinuxwireless.org/?n=Downloads&lt;br /&gt;Под свою карточку.  У меня был нужен вот этот &lt;br /&gt;5150 Images - for Intel Wireless WiFi 5150AGN&lt;br /&gt;wget [url]http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-5150-ucode-8.24.2.2.tgz[/url]&lt;br /&gt;&lt;br /&gt;Распаковать его&lt;br /&gt;tar -xvjf 'iwlwifi-5150-ucode-8.24.2.2.tgz'&lt;br /&gt;Идем в папку&lt;br /&gt;cd 'iwlwifi-5150-ucode-8.24.2.2'&lt;br /&gt;Внутри лежит файлик&lt;br /&gt;iwlwifi-5150-2.ucode&lt;br /&gt;переименовываем (я делаю копию - привычка)&lt;br /&gt;cp iwlwifi-5150-2.ucode lbm-iwlwifi-5150-2.ucode&lt;br /&gt;&lt;br /&gt;и копируем в каталог /lib/firmware&lt;br /&gt;sudo cp lbm-iwlwifi-5150-2.ucode&lt;br /&gt;&lt;br /&gt;После этого ребут. Должно работать.&lt;br /&gt;&lt;br /&gt;з.ы. Спасибо USP с форума forum.ubuntu.ru, за то что исправил ход моих мыслей.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1195429440083065918-4102770460759856213?l=comnote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comnote.blogspot.com/feeds/4102770460759856213/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1195429440083065918&amp;postID=4102770460759856213' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/4102770460759856213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1195429440083065918/posts/default/4102770460759856213'/><link rel='alternate' type='text/html' href='http://comnote.blogspot.com/2009/09/lenovo-s10-2-vs-ubuntu-wifi.html' title='Lenovo S10-2 vs я &amp; Ubuntu - WiFi'/><author><name>Gleb</name><uri>http://www.blogger.com/profile/17025120536042999827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1195429440083065918.post-7131372093656052768</id><published>2009-09-13T23:44:00.000-07:00</published><updated>2009-09-13T23:48:13.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Приколы'/><title type='text'>Антивирусники на войне</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GjoslF-2_es/Sq3nFe-SseI/AAAAAAAAAAc/6QA-1ok1O1Y/s1600-h/63lvbk9ezha61qyu.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 249px;" src="http://3.bp.blogspot.com/_GjoslF-2_es/Sq3nFe-SseI/AAAAAAAAAAc/6QA-1ok1O1Y/s320/63lvbk9ezha61qyu.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5381211211177308642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zhaba.ru/story/page71/item20743"&gt;Жаба.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Касперский&lt;/span&gt;&lt;br /&gt;Пехотный батальон. Становится лагерем вокруг компьютера, роет окопы и противотанковые рвы, минирует все к чертовой матери, обматывает колючей проволокой в сорок рядов, распределяет сектора обстрела орудий и пулеметов. Получившуюся оборону можно прорвать лишь при пятикратном (как минимум) численном превосходстве и только после многочасовых бомбардировок.&lt;br /&gt;Преимущества: Враг сможет пройти лишь одним способом - превратив компьютер в выжженую пустыню.&lt;br /&gt;Недостатки: Солдат надо кормить, а минные поля и окопы затрудняют перемещение гражданских, так что от ресурсов системы не остается почти ничего.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;AVG&lt;/span&gt;&lt;br /&gt;Батальон фольксштурма. Вооружен до зубов, но пользоваться оружием не умеет совершенно, периодически стреляя по своим и накрывая артиллерией совсем не те квадраты, отчего очень часто страдают гражданские. При появлении противника на горизонте начинает судорожно разворачиваться в боевой порядок и пытается рыть окопы прямо под пулями, так как совершенно не позаботился о заблаговременной организации обороны. В итоге ничего сделать не успевает, плюет на все и лупит по наползающим танкам из винтовок - разумеется, без особого толку.&lt;br /&gt;Преимущества: Фольксштурмовцы обходятся подножным кормом, так что ресурсы системы практически не страдают.&lt;br /&gt;Недостатки: Беспорядочная пальба по своим и по гражданским, высокая вероятность сдать позиции за считанные минуты при появлении реального противника.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Avast&lt;/span&gt;&lt;br /&gt;Артиллерийская батарея. Эффективна против лобовой атаки - врага, наступающего на нее с фронта, способна перемолоть практически в любых количествах, почти без потерь для себя. Однако для ударов c фланга и, тем более, против заброшенных в тыл диверсантов, весьма уязвима. Разумеется, после того, как орудия будут развернуты в нужном направлении, перемалываются и диверсанты, но на это требуется время.&lt;br /&gt;Преимущества: Артиллеристы кормят себя сами. Не спрашивайте, как - не знаю. Но система остается почти незатронутой.&lt;br /&gt;Недостатки: Низкая оперативность.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Panda&lt;/span&gt;&lt;br /&gt;Женский батальон, составленный из институток, вооруженных старенькими винтовками. При малейшем шорохе начинают истошно визжать и палить наугад (обычно - в небо). При виде противника падают в обморок или разбегаются.&lt;br /&gt;Преимущества: Практически не заметен.&lt;br /&gt;Недостатки: Полезный эффект тоже не заметен.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;NOD32&lt;/span&gt;&lt;br /&gt;Кавалерийский эскадрон. Оборону держать не обучен вовсе, при виде врага тут же бросается на него в атаку. Пытается взять нахрапом, обычно - психической атакой с шашками наголо. Если это не удается с первого раза, рассеивается по оврагам, уходит в партизаны и ждет подходящего момента чтобы повторить процедуру.&lt;br /&gt;Преимущества: Лучшая оборона - это нападение, так что подобная тактика срабатывает всегда, пусть и не с первого раза.&lt;br /&gt;Недостатки: Иногда приходится ждать очень долго. У местных красоток уже рождаются первые детки, похожие на солдат неприятеля, а эскадрон все еще партизанит по лесам и пускает под откос вражеские поезда с женскими подвязками.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;McAfee&lt;/span&gt;&lt;br /&gt;Танковая бригада. Рычат моторы, пахнет смазкой, чумазые танкисты хватают пробегающих мимо девушек за округлые места, и где-то за лесом идет пальба. Выглядит внушительно и весомо, в бою работает быстро, эффективно и безжалостно. Враг внутрь проникнуть не может хотя бы просто от страха.&lt;br /&gt;Преимущества: Надежность.&lt;br /&gt;Недостатки: Танковая смазка нынче очень дорога, не говоря уже о снарядах и горючем.Иногда забывают за врагов, если вокруг сильно много девушек.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Norton&lt;/span&gt;&lt;br /&gt;Вражеская оккупационная армия. Офицеры на правах победителей бесплатно пьют шнапс в роскошных ресторанах, солдаты бегают по дворам, реквизируют съестное, лапают женщин и занимаются мелким бытовым мародерством. Другой-то враг в страну, конечно, уже не про
