<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ZetBlog</title>
	<atom:link href="http://zetblog.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://zetblog.ru</link>
	<description>Зеты говорят. Блог о программировании, администрировании и безопасности.</description>
	<lastBuildDate>Sat, 29 Oct 2011 18:59:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Информационная безопасность. Практика &#8212; Введение.</title>
		<link>http://zetblog.ru/theory/201110/%d0%b8%d0%bd%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%86%d0%b8%d0%be%d0%bd%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8/</link>
		<comments>http://zetblog.ru/theory/201110/%d0%b8%d0%bd%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%86%d0%b8%d0%be%d0%bd%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 18:50:18 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[безопасность]]></category>
		<category><![CDATA[Теория]]></category>
		<category><![CDATA[рекомендации]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=1068</guid>
		<description><![CDATA[Данная статья является вводной частью целого курса статей, которая будет представлять собой мой взгляд на организацию работы по данному направлению. Цель этих статей &#8212; поделится собственным опытом с теми, кому это будет полезно; узнать мнение других (может даже научится у них) &#8212; имеющих больший опыт в практической деятельности по обеспечению информационной безопасности. А также, получить [...]]]></description>
			<content:encoded><![CDATA[<p>Данная статья является вводной частью целого курса статей, которая будет представлять собой мой взгляд на организацию работы по данному направлению. Цель этих статей &#8212; поделится собственным опытом с теми, кому это будет полезно; узнать мнение других (может даже научится у них) &#8212; имеющих больший опыт в практической деятельности по обеспечению информационной безопасности. А также, получить бесценный опыт по написанию аналитических и практических статей. Надеюсь что, кому-нибудь это будет полезно. А теперь к делу.<br />
<span id="more-1068"></span><br />
Думаю всем известно что есть информация и какую роль она играет в нашем современном стремительно развивающемся Обществе, только замечу, что сегодня (в глобальном смысле) информация представляет собой такую нематериальную сущность из-за которой и вокруг которой разворачиваются целые информационные войны, как локальные (местного значения), так и глобальные (на мировой арене). В связи с этим, потребность в обеспечении информационной безопасности серьезно возросла. Как следствие этому, возросла потребность в соответствующих специалистах &#8212; администраторах безопасности. Таких специалистов уже много, но в большинстве случаев это молодые студенты, выпускники, которые имеют лишь теоретическую базу знаний, но еще не представляющих себе как эти знания применить на практике. Поэтому данная статья направленна именно на них.</p>
<p>Стоит отметить, что описанное ниже, рассматривается на примере уже организованной, так сказать корпоративной, информационной сети (<strong>КИС</strong>). Но даже если еще только планируется построение <strong>КИС</strong>, то все сказанное стоит внимательного прочтения (я так думаю ;)).</p>
<p>При организации работы по обеспечению безопасности информационных систем необходимо:</p>
<div class="codesnip-container" >
<ol>
<li>определить границы виртуального пространства, на территории которого распространяется (или будет распространятся) политика безопасности;</li>
<li>определить перечень информационных активов, требующих защиты, и их категорию критичности;</li>
<li>определить перечень вероятных угроз безопасности активов (или как говорят &#8212; риски безопасности активов) как внешних, так и внутренних;</li>
<li>по каждой угрозе определить перечень необходимых мероприятий, реализация которых позволит максимально минимизировать вероятность осуществления данной угрозы информационной безопасности (<strong>ИБ</strong>)</li>
<li>обеспечить реализацию мероприятий по информационной безопасности и периодический контроль эффективности принятых мер</li>
</ol>
</div>
<p>Под определением <strong>границ виртуального пространства</strong> я понимаю схематическое построение структуры локальной вычислительной сети (схема), с указанием территориального размещения (в каких зданиях, кабинетах, на этажах) сетевого оборудования, компьютерных систем и прочее. Для этого можно воспользоваться <strong>Microsoft Visio</strong>.</p>
<p>Подобная схема, при ее анализе, позволит <strong>наглядно увидеть большинство угроз безопасности</strong>, о существовании которых не сразу догадаешься. Например вероятные бесконтрольные места несанкционированного подключения к сети или перехвата информации по средствам специализированных технический средств, эксплуатирующих технические каналы утечки информации.</p>
<p>Для организации <strong>контролируемой</strong> циркуляции информации в защищаемой сети, необходимо четко знать <strong>какие существуют сетевые ресурсы</strong>, на каких серверах или пользовательских компьютерах (бывает и такое) они размещены и самое главное определить критичность размещенных на этих сетевых ресурсах информации.</p>
<p>С точки зрения безопасности рекомендуется создавать один <strong>&#171;внешний&#187;</strong> сетевой ресурс с неопределенным названием (например: \\srv_odp\work). Доступ созданному ресурсу предоставить <strong>только авторизованным пользователям</strong> (исключить <strong>Гостя</strong> и <strong>Все</strong>), кроме того, хорошим тоном с точки зрения сетевого администрирования и безопасности, является предоставление доступа к ресурсу не конкретным пользователям, а <strong>группе пользователей</strong>.<br />
<strong>Примечание:</strong></p>
<div class="codesnip-container" >Естественно, необходимо <strong>контролировать процесс добавления новых пользователей</strong>, и обязательно <strong>периодически проводить актуализацию перечня пользователей</strong>, которым предоставлен доступ к ресурсу.</div>
<p>После того как создан <strong>&#171;внешний&#187;</strong> ресурс, внутри создаются ресурсы по категории хранящихся в них информации. И это правило стоит применять к вложенным ресурсам следуя их иерархии. К примеру, для каждого отдела свой ресурс, внутри него ресурсы по определенным направлениям или по критичности информации.<br />
<strong>Примечание:</strong></p>
<div class="codesnip-container" >Не стоит допускать смешение ресурсов различной критичности.</div>
<p>При определении <strong>критичности</strong> сетевого информационного ресурса определяются основные характеристики хранящейся на нем информации. Без условно основными характеристиками информации являются <strong>качество</strong>(значение) &#8212; какое преимущество дает обладание данной информации &#8212; и, соответственно, ее <strong>цена</strong>. Параметр <strong>цена</strong> потребуется тогда, когда вы начнете определять перечень мероприятий для минимизации вероятности реализации угроз безопасности информационных активов. А на реализацию мероприятий необходимы затраты, которые еще необходимо обосновать. ;)</p>
<p>Теперь, когда есть схема вашей сети, определен перечень сетевых ресурсов и их критичность, на очереди <strong>определение перечня вероятных угроз безопасности информации</strong>. Используя их как исходные данные, потребуется очень тщательно их проанализировать и составить <strong>перечень как внешних, так и внутренних угроз и не стоит забывать про технические каналы утечки информации, а также стихийные бедствия</strong>.</p>
<p>Потратив время на тщательный анализ исходных данных, на выходе, будем считать, получите <strong>полный перечень угроз безопасности</strong> вашей сети и информации, циркулирующей в ней. Глядя на этот список возможно Вы ужаснетесь от того как беззащитна ваша &#171;территория&#187; =). Но не стоит отчаиваться, главное то, что Вы в курсе существующих <strong>&#171;дыр&#187;</strong> и теперь необходимо лишь определиться с мерами по минимизации вероятности реализации выявленных угроз безопасности. Меры могут быть как <strong>организационные</strong>, так и <strong>технические</strong>.</p>
<p>Под <strong>организационными мерами</strong> стоит понимать разработку нормативной и организационно-распорядительной документации, установку порядка и регламентации действий при обеспечении информационной безопасности в Вашей организации. <strong>Под техническими мерами</strong> стоит понимать применение технических, программных и программно-аппаратных средств для обеспечения информационной безопасности.</p>
<p>Таким образом, проделав работу, описанную выше, на выходи Вы получили проект одного из основных организационных документов по информационной безопасности &#8212; <strong>модель угроз информационной безопасности</strong>. Ее еще потребуется доработать в соответствии с руководящми техническими документами ФСТЭК:</p>
<div class="codesnip-container" ><a href="/forum/downloadf/ispdn/normbase/base-model2008.rar">- «Базовая модель угроз безопасности информационной системы персональных данных (ФСТЭК)»</a>.<br />
<a href="/forum/downloadf/ispdn/normbase/metodika-opred-aktugroz2008.doc">- «Методика определения актуальных угроз (ФСТЭК)»</a>.</div>
<p>Далее необходимо <strong>обеспечить реализации запланированных мероприятий</strong> и периодически <strong>проводить контроль эффективности принятых мер</strong>.<br />
<strong>Примечание:</strong></p>
<div class="codesnip-container" >Необходимо постоянно следить за появлением новых угроз информационной безопасности и соответственно пересматривать разработанную Вами модель угрозу информационной безопасности.</div>
<p>Кроме того, я не упомянул (оставил на закуску), но Вы должно быть заметили, обеспечение информационной безопасности должно осуществятся <strong>в комплексе, постоянно и конкретно(иметь определенную цель), адекватно и эффективно, а также экономически целесообразно</strong>.</p>
<p>Не думаю, что стоит считать данную статью полной, но все описанное выше отработано мной на практике. Готов к конструктивной критики, замечаниям и дополнениям к статье (можете писать в комменты или на почту).</p>
<p>Продолжение следует&#8230; ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/theory/201110/%d0%b8%d0%bd%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%86%d0%b8%d0%be%d0%bd%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zsh: страдаем фигнёй вместе с zsh.</title>
		<link>http://zetblog.ru/administration/201006/zsh-simple-customization/</link>
		<comments>http://zetblog.ru/administration/201006/zsh-simple-customization/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 17:07:52 +0000</pubDate>
		<dc:creator>lizz</dc:creator>
				<category><![CDATA[Unix-like]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[zsh]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=1036</guid>
		<description><![CDATA[Для тех, кто не в курсе, zsh &#8212; это такой shell-интерпретатор, наподобие bash и ему подобных. Привычка его ставить пошла от FreeBSD, где дефолтные tcsh и csh совсем не юзер-френдли на мой взгляд. Может и их можно настроить до нормального уровня, но ведь настоящие герои всегда идут в обход :). Итак, в zsh можно включить [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zetblog.ru/wp-content/uploads/2010/06/zsh.png"><img class="alignright size-medium wp-image-1041" title="zsh" src="http://zetblog.ru/wp-content/uploads/2010/06/zsh-300x44.png" alt="цветной zsh" width="300" height="44" /></a>Для тех, кто не в курсе, zsh &#8212; это такой shell-интерпретатор, наподобие bash и ему подобных. Привычка его ставить пошла от FreeBSD, где дефолтные tcsh и csh совсем не юзер-френдли на мой взгляд. Может и их можно настроить до нормального уровня, но ведь настоящие герои всегда идут в обход :).</p>
<p>Итак, в zsh можно включить достаточно мощный автокомплит просто &#171;тыкнув пару кнопок&#187; в консоли после первого запуска. Однако, по сравнению с большинством дефолтных поставок bash&#8217;а в разных дистрибутивах линукса, ему всё же не хватает цветастости. Но это дело легко поправимо, если добавить в файлик ~/.zshrc следующие алиасы:</p>
<pre class="brush: bash"># color
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors &amp;&amp; eval "$(dircolors -b ~/.dircolors)" || eval "$(dirc$
    alias ls='ls --color=auto'
    alias dir='dir --color=auto'
    alias vdir='vdir --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi</pre>
<p>После этого необходимо перезапустить сеанс консоли (зайти заново в систему, запустить ещё одну копию zsh или перезапустить графический терминал &#8212; terminal, konsole, etc) и можно наслаждаться цветным выводом команд grep, ls и всего прочего описанного.</p>
<p>Не мог на этом просто взять и остановиться, ибо страдание фигнёй штука затягивающая. Дальше приделал следующую вещь:<br />
<span id="more-1036"></span></p>
<pre class="brush: bash">RPS1="(%*) %(?.:).:()"
PS1="[$(print '%{\e[1;32m%}%n%{\e[0m%}@%{\e[1;36m%}%M%{\e[0m%}') %~]$ "</pre>
<p>Переменная PS1 отвечает за строку приглашения консоли и появляется левее от курсора, RPS1 &#8212; правее. Данный код выводит в левой части разукрашенное &#171;[ имя_пользователя_@имя_хоста текущий/путь]$ &#171;, справа &#8212; &#171;(время) смайлик&#187;. Просто вставить смайлик было бы глупо, поэтому это особенный смайлик. При успешном выполнении команды он улыбается, при неудачном &#8212; огорчается :).</p>
<p>Дальше я решил что дел полно, а возиться с zsh можно вечно и пора бы уже остановиться. Если у кого-то вызовет любопытство кастомизация zsh, то можно расписать подробнее об этом.</p>
<p>P.S. Было бы интересно посмотреть на чужие конфиги ;).</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/administration/201006/zsh-simple-customization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi: Пишем шаблон клиент-серверного приложения.</title>
		<link>http://zetblog.ru/programming/201004/delphi-%d0%bf%d0%b8%d1%88%d0%b5%d0%bc-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd/</link>
		<comments>http://zetblog.ru/programming/201004/delphi-%d0%bf%d0%b8%d1%88%d0%b5%d0%bc-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 07:47:37 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[прикладное]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[сетевое]]></category>
		<category><![CDATA[ClientSocket]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[ServerSocket]]></category>
		<category><![CDATA[сеть]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=913</guid>
		<description><![CDATA[Продолжая тему разработки собственной утилиты администрирования, в данной статье я рассмотрю типовой шаблон программы клиент-сервер, на базе которой можно разрабатывать собственные клиент-серверные приложения. Данный типовой шаблон для простоты понимания и удобства применения будет рассмотрен на примере компонентов ClientSocket и ServerSocket. Примечание Для тех, кто не в курсе, что значит клиент-серверное приложение, поясню: это комплекс программ [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжая тему разработки собственной утилиты администрирования, в данной статье я рассмотрю типовой шаблон программы клиент-сервер, на базе которой можно разрабатывать собственные клиент-серверные приложения. Данный типовой шаблон для простоты понимания и удобства применения будет рассмотрен на примере компонентов <strong>ClientSocket</strong> и <strong>ServerSocket</strong>.<br />
<span id="more-913"></span><strong></strong></p>
<p><strong>Примечание</strong></p>
<div class="codesnip-container" >Для тех, кто не в курсе, что значит клиент-серверное приложение, поясню: это комплекс программ (модулей) состоящий из двух частей &#8212; клиентской и серверной. Серверная часть является &#171;главной&#187;- так называемый командный пункт, на который возложена задача поддержания связи со всеми клиентами и раздача команд управления, соответствующих их функционалу (управление клиентами). Клиентская же часть является второстепенной, но не менее важной, так как является важным и связующим элементом, позволяющим выполнять удаленные команды (функции) на компьютере, на котором установлен.</div>
<div class="codesnip-container" >Компоненты <strong>ClientSocket</strong> и <strong>ServerSocket</strong>, которые мы будем использовать, находятся на вкладке <strong>Internet</strong>. Если на этой вкладке у Вас нет этих компонентов (а по умолчанию при установке <strong>Delphi7</strong> они не ставятся), необходимо установить их самостоятельно (пакет <strong>dclsocketsXX.bpl</strong>). Данный пакет можно найти на установочном диске<strong> Delphi7</strong> (или в папке<span style="text-decoration: underline;"> C:\Temp</span>, куда распаковывается дистрибутив перед установкой &#8212; <span style="text-decoration: underline;">C:\Temp\delphi7\install\program files\borland\delphi7\bin\</span>) или можете его скачать <a href="/forum/downloadf/components/dclsockets70.rar">отсюда</a>. Чтобы установить данный пакет, запустите <strong>Delphi7</strong>. Зайдите в меню <span style="text-decoration: underline;">Component-&gt;Install Packages</span>. В появившемся окне нажмите кнопку <strong>&#171;Add&#187;</strong> и укажите место, где расположен пакет <strong>dclsocketsXX.bpl</strong>. После этого жмите<strong> ОК</strong>. Компонент на месте. ;)</div>
<p>Надеюсь все объяснил доступно =). А теперь приступим к делу и начнем мы с серверной части. Для этого создадим проект и скинем на форму компонент <strong>ServerSocket</strong>. В настройках компонента <strong>ServerSocket</strong> укажем следующее:</p>
<div class="codesnip-container" >Active = false<br />
Name = ss<br />
Port = 4321<br />
ServerType = stNonBlocking</div>
<p>А также для удобства скинем компонент <strong>Memo</strong>, в который будем выводить всякую инфу. Дадим имя компоненту <strong>log</strong>.</p>
<p>Далее, для компонента <strong>ServerSocket</strong> определяем метод <strong>onClientConnect</strong>, чтобы определять момент подключения клиентов. Вставим следующий код:</p>
<pre class=".brush: pascal">procedure TForm1.ssClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
  myDate : TDateTime;
  formattedDateTime : string;
begin
  mydate:=Now;
  DateTimeToString(formattedDateTime, 'c', myDate);
  log.Lines.Add(formattedDateTime+': Есть коннект c '+Socket.RemoteAddress);
  { далее вы можете вставить свой код }
end;</pre>
<p>А теперь определим метод <strong>onClientRead</strong>, в котором будем обрабатывать получаемые сообщения от клиентов:</p>
<pre class=".brush: pascal">procedure TForm1.ssClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  s:string;
begin
  s:=Socket.ReceiveText;
  log.Lines.Add(s);
end;</pre>
<p>Определим метод<strong> onClientDisconnect</strong>, чтобы фиксировать факт отключения клиента:</p>
<pre class=".brush: pascal">procedure TForm1.ssClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
  myDate : TDateTime;
  formattedDateTime : string;
begin
  mydate:=Now;
  DateTimeToString(formattedDateTime, 'c', myDate);
  log.Lines.Add(formattedDateTime+': Клиент '+socket.RemoteAddress+' отключился.');
end;</pre>
<p>На этом с серверной частью покончено =).</p>
<p>Приступим к клиентской части. Для этого создадим новый проект, скинем на форму компонент <strong>ClientSocket</strong> и таймер. В настройках компонента укажем следующее:</p>
<div class="codesnip-container" >Active = false<br />
Name = сs<br />
Port = 4321<br />
ClientType = ctNonBlocking<br />
Address = 127.0.0.1</div>
<p>Для простоты пояснения я в <strong>Address</strong> указал <strong>&#171;петлю&#187;</strong>. Но для гибкости приложения рекомендую это поле обрабатывать программно, во время <strong>CreateForm</strong> при обработке конфигурационного файла, в котором можно указывать нужный <strong>IP-адрес сервера</strong>.</p>
<p>Здесь также для удобства скинем на форму компонент <strong>Memo</strong>, в который будем выводить техническую инфу. Имя дадим соответствующее<strong> log</strong>.</p>
<p>Для компонента <strong>ClientSocket</strong> определяем метод <strong>onError</strong> для того, чтобы обрабатывать исключения, возникшие в момент подключения клиента к серверу. Вставим следующий код:</p>
<pre class=".brush: pascal">procedure TForm1.csError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
var
  myDate : TDateTime;
  formattedDateTime : string;
begin
 if ErrorEvent= eeConnect  then
  begin
    cs.Active:=false;
      {добавить запись в журнал};
    mydate:=Now;
    DateTimeToString(formattedDateTime, 'c', myDate);
    log.lines.Add(formattedDateTime+': Невозможно установить соединение с сервером - '+cs.Address);
  end;
  ErrorCode:=0;
  { далее вы можете вставить свой код }
end;</pre>
<p>Теперь определим метод <strong>onConnect</strong>. Вставим следующий код:</p>
<pre class=".brush: pascal">procedure TForm1.csConnect(Sender: TObject; Socket: TCustomWinSocket);
var
  myDate : TDateTime;
  formattedDateTime : string;
begin
  mydate:=Now;
  DateTimeToString(formattedDateTime, 'c', myDate);
  log.lines.Add(formattedDateTime+': Соединение с сервером - '+socket.RemoteAddress+' установлено.');
end;</pre>
<p>И чтобы фиксировать момент потери связи с сервером, определим метод <strong>onDisconnect</strong>:</p>
<pre class=".brush: pascal">procedure TForm1.csDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
  myDate : TDateTime;
  formattedDateTime : string;
begin
  mydate:=Now; //получим текущее время
  DateTimeToString(formattedDateTime, 'c', myDate); //преобразуем в строку
  log.Lines.Add(formattedDateTime+': Соединение с сервером '+socket.RemoteAddress+' потеряно.');
end;</pre>
<p>Таймер настроим так:</p>
<div class="codesnip-container" >Enabled = true<br />
Name = te<br />
Interval = 5000</div>
<p>И определяем метод <strong>onTimer</strong>. Вставим следующий код:</p>
<pre class=".brush: pascal">procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not cs.Active then
  begin
    cs.Active:=true;
  end;
  cs.Socket.SendText('ping client');
end;</pre>
<p>Данный код проверяет наличие соединения с сервером и в случае его отсутствия пытается его установить.<br />
И каждые 5 секунд отправляет серверу сообщение <strong>&#171;ping client&#187;</strong>.</p>
<p>Вот примерно так выглядит типовой шаблон приложения <strong>&#171;клиент-сервер&#187;</strong>.</p>
<p><strong>Примечание</strong></p>
<div class="codesnip-container" >Хотел бы обратить внимание на обработчик <strong>onError</strong> тех, кто ранее не знал как избавиться от злосчастного сообщения &#8212; <strong>&#171;Asynchronous socket error 10061&#8243;</strong>, возникающее при попытке осуществления подключения к серверу, который недоступен.</div>
<p>Рабочий пример можно скачать <a title="Рабочий пример" href="/forum/downloadf/simples/client-server.rar">отсюда</a>.</p>
<p>Если есть кому что добавить или задать вопрос по теме &#8212; прошу отписываться в комментах ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/programming/201004/delphi-%d0%bf%d0%b8%d1%88%d0%b5%d0%bc-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Python: Маленькая хитрость. if-else vs and-or.</title>
		<link>http://zetblog.ru/programming/201003/python-if-else-vs-and-or/</link>
		<comments>http://zetblog.ru/programming/201003/python-if-else-vs-and-or/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:30:57 +0000</pubDate>
		<dc:creator>lizz</dc:creator>
				<category><![CDATA[общие вопросы]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[hints]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=980</guid>
		<description><![CDATA[На этот раз будет мини-заметка, уж слишком мне понравился трюк, о котором пойдёт речь дальше :). Наверное любому программисту приходится часто писать конструкции такого вида: if a == b: c = d else: c = e Как-то разбирая исходники какого-то проекта наткнулся на весьма компактную замену. Вот для сравнения два аналогичных блока кода с использованием [...]]]></description>
			<content:encoded><![CDATA[<p>На этот раз будет мини-заметка, уж слишком мне понравился трюк, о котором пойдёт речь дальше :). </p>
<p>Наверное любому программисту приходится часто писать конструкции такого вида:</p>
<pre class=".brush: python">if a == b:
    c = d
else:
    c = e</pre>
<p>Как-то разбирая исходники какого-то проекта наткнулся на весьма компактную замену. Вот для сравнения два аналогичных блока кода с использованием логических операций python&#8217;а и с использованием конструкции if-else:</p>
<pre class=".brush: python"># if-else:
if random.random() > 0.5:
    a = 1
else:
    a = 0

# and-or style:
a = random.random() > 0.5 and 1 or 0</pre>
<p>На мой взгляд выглядит гораздо лучше и компактнее (да-да, if-else можно записать в 2 строчки вместо 4, но мне так не нравится ^__^) . Другое дело, что некоторым это может показаться противоречиво с некоторыми пунктами дзена python&#8217;а (import this), но это спорно :). В общем использую там, где считаю нужным.</p>
<p>Кстати, если кого-то интересует производительность, то она примерно одинакова, далее выложу тесты и объяснение логики для тех, кому интересно.<br />
<span id="more-980"></span></p>
<pre class=".brush: python">>>> import timeit
>>> t1 = timeit.Timer('if random.random()>0.5:a=1\nelse:a =0', 'from __main__ import a\nimport random')
>>> t2 = timeit.Timer('a=random.random()>0.5 and 1 or 0', 'from __main__ import a\nimport random')
>>> t1.repeat()
[0.21074632467116317, 0.2097615509806019, 0.20978293771349854]
>>> t2.repeat()
[0.21944338095772764, 0.21785226684687586, 0.21940797240040411]
</pre>
<p>Тесты привёл, теперь объяснение.</p>
<p>Дело в том, что логические операции <strong>and</strong> и <strong>or</strong> в python&#8217;е возвращают один из операндов. Операция and возвращает первый операнд, если он приводится к логическому типу False, иначе &#8212; второй. Операция or наоборот, возвращает 1й операнд, если он приводится к типу True, иначе &#8212; второй. Всё это связано с &#171;ленивостью&#187; (lazy) операций, вычисляется столько аргументов, сколько надо для того, чтобы однозначно определить результат (например, 1 or x всегда даёт True, поэтому x не вычисляется).</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/programming/201003/python-if-else-vs-and-or/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Антивирус Касперского: решение проблемы с доступом к сетевым ресурсам.</title>
		<link>http://zetblog.ru/administration/201003/%d0%b0%d0%bd%d1%82%d0%b8%d0%b2%d0%b8%d1%80%d1%83%d1%81-%d0%ba%d0%b0%d1%81%d0%bf%d0%b5%d1%80%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb/</link>
		<comments>http://zetblog.ru/administration/201003/%d0%b0%d0%bd%d1%82%d0%b8%d0%b2%d0%b8%d1%80%d1%83%d1%81-%d0%ba%d0%b0%d1%81%d0%bf%d0%b5%d1%80%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 11:54:13 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[антивирус]]></category>
		<category><![CDATA[проблемы]]></category>
		<category><![CDATA[реестр]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=972</guid>
		<description><![CDATA[Продолжаю курс статей по решению возникших проблем в области администрирования, безопасности и программирования. И сегодня расскажу как исправить косяк, возникший после установки продукта Лаборатории Касперского версии 7.0 или 6.0 (касается как персональных версий, так и для офиса), при котором может пропадать сеть и доступ к общедоступным ресурсам сети. Для устранения этой проблемы потребуется немного поковырять [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжаю курс статей по решению возникших проблем в области администрирования, безопасности и программирования. И сегодня расскажу как исправить косяк, возникший после установки продукта <strong>Лаборатории Касперского версии 7.0 или 6.0 </strong>(касается как персональных версий, так и для офиса), при котором может пропадать сеть и доступ к общедоступным ресурсам сети.<br />
<span id="more-972"></span></p>
<p>Для устранения этой проблемы потребуется немного поковырять раздел реестра<strong> HKEY_LOCAL_MACHINE</strong>. Для этого запускаем утилиту <strong>regedit</strong>. Далее переходим по следующему пути:</p>
<div class="codesnip-container" >HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters</div>
<p><strong>Внимание!</strong></p>
<div class="codesnip-container" >Если Вы ранее не знали, то предупрежу, что самостоятельное внесение изменений в системный реестр может привести к краху вашей системы. =)</div>
<p>Но не стоит пугаться, если Вы будете строго следовать моим указаниям, все будет в поряде. Я это уже 1000 раз делал ;).</p>
<p>Ну так продолжим. В разделе <strong>Parameters</strong> проверяем наличие параметра <strong>IRPStackSize</strong>. Если данный параметр имеется то его следует увеличить на значение по вашему усмотрению. Для Windows 2000 и выше значение параметра <strong>IRPStackSize</strong> <strong>не может превышать 50</strong>.</p>
<p>Если параметра <strong>IRPStackSize</strong> нет в наличии, то его необходимо создать. Тип параметра <strong>должен быть DWORD</strong>. Замечу, что имя параметра вводится с учетом регистра. После создания параметра, как говорят общедоступные источники интернета, данный параметр должен принять значение по умолчанию равное 15. Хотя у меня на практике принимал значение 0. (Но я юзал в основном эту тему по управлением ОС Windows XP и Vista). Так вот значение, присвоенное параметру по умолчанию, нужно увеличить на 3. Не отходя далеко от рекомендаций я присваивал значение 18 в десятичной системе счисления.</p>
<p>Выходим из редактор реестра и перезагружаем компьютер. После перезагрузки возникшая проблема ликвидируется.</p>
<p><strong>Замечу:</strong></p>
<div class="codesnip-container" >Если проблема не решится &#8212; попробуйте еще увеличить значение <strong>IRPStackSize</strong>. Для ОС Windows NT может потребоваться установка сервиспаков.</div>
<p>Желаю удачи!<br />
Пишите комментарии ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/administration/201003/%d0%b0%d0%bd%d1%82%d0%b8%d0%b2%d0%b8%d1%80%d1%83%d1%81-%d0%ba%d0%b0%d1%81%d0%bf%d0%b5%d1%80%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress: Модернизация плагина statpress.</title>
		<link>http://zetblog.ru/programming/201002/wordpress-statpress-russian-optimization/</link>
		<comments>http://zetblog.ru/programming/201002/wordpress-statpress-russian-optimization/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 09:59:08 +0000</pubDate>
		<dc:creator>lizz</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[StatPress]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=948</guid>
		<description><![CDATA[Статистика &#8212; вещь не только интересная, но иногда и полезная :). WordPress &#8212; один из популярнейших движков php для блогов, для него существует огромное количество плагинов, в том числе и плагины для просмотра статистики по посещаемости. Один из таких плагинов &#8212; statpress. Но есть в нём некоторые недостатки, автор плагина добавил распознавание некоторых русских поисковых [...]]]></description>
			<content:encoded><![CDATA[<p>Статистика &#8212; вещь не только интересная, но иногда и полезная :). WordPress  &#8212; один из популярнейших движков php для блогов, для него существует огромное количество плагинов, в том числе и плагины для просмотра статистики по посещаемости. Один из таких плагинов &#8212; statpress. Но есть в нём некоторые недостатки, автор плагина добавил распознавание некоторых русских поисковых движков, но так же некоторые упустил из виду. Хотя даже тот же Яндекс обрабатывается не очень хорошо, не учитываются переходы с yandex.ua, yandex.kz и т.п. Но opensource тем и хорош, что всегда можно поправить исходники, если что-то тебя не устраивает :). Далее пойдёт речь об оптимизации плагина statpress под Российские поисковики.<br />
<span id="more-948"></span></p>
<p>В общем надоело мне то, что не учитывается часть поисковиков, надоело смотреть на ссылки с этих поисковиков в &#171;последних ссылающихся ресурсах&#187;, как оказалось, подправить это доваольно легко. С недельку ещё последил для отлова поисковых движков, и вот примерный список улучшений:</p>
<ul>
<li><strong>Yandex</strong> &#8212; улучшено поддержка (теперь распознаётся yandex.kz, yandex.ua. В общем то теперь маска для яндекса выглядит так: yandex.*, в связи с этим так же распознаются переходы вида yandex.ru/schoolsearch?text=* и т.п.);</li>
<li><strong>Nigma</strong> &#8212; добавлена поддержка поисковика nigma.ru</li>
<li><strong>Go Mail.ru</strong> &#8212; добавлена поддержка поисковика Go от Mail.Ru</li>
<li><strong>QIP</strong> &#8212; добавлена поддержка поисковика от QIP&#8217;а</li>
<li><strong>bing.</strong> &#8212; добавлен поисковик bing.com</li>
<li><strong>Rambler</strong> &#8212; улучшена поддержка поисковика от Рамблера</li>
</ul>
<p>Так же из &#171;ссылающихся ресурсов&#187; убараны ссылки вида &#171;*google.*&#187;, если это нововведение вам не нужно, не заменяйте в своём плагине файл statpress.php. У меня почему-то появилась куча ссылок на меня с гугла, по которым находится что-то вроде &#171;ресурс zetblog.ru пытается перенаправить вас&#187;. В случае обновления statpress.php такая проблема исчезнет, но могут так же пропасть и нужные ссылки с google (если они есть вообще).</p>
<p>После обновления файлов плагина необходимо обновить БД статистики (достаточно долгий процесс&#8230; особенно если база большая), делается это через админку wordpress путём одинарного клика по кнопке StatPressUpdate ^__^.</p>
<p>Если что-то какие-то поисковики упустил &#8212; пишите в комменты, обновлю. Ну, либо сам, если узнаю об этом :). Надеюсь, кому-то это поможет.</p>
<p>Ссылки на скачивание всего этого:<br />
<a href="http://depositfiles.com/files/3lujgxn3d">http://depositfiles.com/files/3lujgxn3d</a> &#8212; плагин полностью на депозите.<br />
Позже (по первой просьбе или как дойдут руки)) добавлю ссылку на скачивание с этого ресурса.</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/programming/201002/wordpress-statpress-russian-optimization/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Hibernate: Удаление объектов из БД.</title>
		<link>http://zetblog.ru/programming/201002/hibernate-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%be%d0%b2-%d0%b8%d0%b7-%d0%b1%d0%b4/</link>
		<comments>http://zetblog.ru/programming/201002/hibernate-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%be%d0%b2-%d0%b8%d0%b7-%d0%b1%d0%b4/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 10:35:29 +0000</pubDate>
		<dc:creator>lizz</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Jython]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=921</guid>
		<description><![CDATA[По работе пришлось изучать работу Java&#8217;вского ORM&#8217;а, пока что знаком только бегло, но некоторые полезные штуки для новичка решил записать. Может кому пригодится, может нет, но хотя бы самому гуглить придётся меньше =). Кстати, примеры будут не на Java, а на Jython&#8217;е, т.к. с первым я тоже не очень знаком :). Итак, опустим настройку и [...]]]></description>
			<content:encoded><![CDATA[<p>По работе пришлось изучать работу Java&#8217;вского ORM&#8217;а, пока что знаком только бегло, но некоторые полезные штуки для новичка решил записать. Может кому пригодится, может нет, но хотя бы самому гуглить придётся меньше =). Кстати, примеры будут не на Java, а на Jython&#8217;е, т.к. с первым я тоже не очень знаком :).</p>
<p>Итак, опустим настройку и подключение Hibernate, предположим, что вы это уже сделали :). Быть может, напишу об этом позже. Требуется удалить из таблицы player (которая маппится с классом Player, естественно&#8230; или наоборот :) ) некоторые записи. Если мы знаем id игрока, тогда всё элементарно (как и в других случаях)):</p>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;">player = session.<span class="me1">load</span><span class="br0">&#40;</span>Player, player_id<span class="br0">&#41;</span><br />
session.<span class="me1">delete</span><span class="br0">&#40;</span>player<span class="br0">&#41;</span></div>
</div>
<p>Теперь рассмотрим случай, когда надо удалить много записей.<span id="more-921"></span></p>
<p>В ORM&#8217;е Hibernate несколько способов провернуть это. 1й &#8212; очевидный, с помощью createQuery выбрать все нужные записи HQL&#8217;ом и в цикле удалять по одной:</p>
<pre>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;">players_list = session.<span class="me1">createQuery</span><span class="br0">&#40;</span><span class="st0">&quot;FROM Player WHERE name = :name&quot;</span><span class="br0">&#41;</span>\
&nbsp; &nbsp; .<span class="me1">setParameter</span><span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span>, <span class="st0">&quot;Василий&quot;</span><span class="br0">&#41;</span>\
&nbsp; &nbsp; .<span class="kw2">list</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="kw1">for</span> player <span class="kw1">in</span> players_list:
&nbsp; &nbsp; session.<span class="me1">delete</span><span class="br0">&#40;</span>player<span class="br0">&#41;</span></div>
</div>
</pre>
<p>Но это влечёт накладные расходы на получение всех нужных объектов, а затем удаление по одному, в таком случае мы выполним столько sql-запросов, сколько объектов загрузили, что может ухудшить производительность приложения. Для этого есть другой способ. Вот в общем то и он:</p>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;">session.<span class="me1">createQuery</span><span class="br0">&#40;</span><span class="st0">&quot;DELETE Player WHERE name = :name&quot;</span><span class="br0">&#41;</span>\<br />
&nbsp; &nbsp; .<span class="me1">setParameter</span><span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span>, <span class="st0">&quot;Василий&quot;</span><span class="br0">&#41;</span>\<br />
&nbsp; &nbsp; .<span class="me1">executeUpdate</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</div>
<p>Вот таким способом можно избавиться от всех неугодных нам Василиев ;). Так же есть возможность воспользоваться сырым sql с помощью Session.createSQLQuery().</p>
<p>Ссылки:<br />
<a href="http://docs.jboss.org/hibernate/stable/core/reference/en/html/batch.html#batch-direct">Документация по Hibernate</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/programming/201002/hibernate-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%be%d0%b2-%d0%b8%d0%b7-%d0%b1%d0%b4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Администрирование: восстановление работоспособности Windows XP &#8212; ошибка c000021a.</title>
		<link>http://zetblog.ru/administration/201002/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%80%d0%b0/</link>
		<comments>http://zetblog.ru/administration/201002/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%80%d0%b0/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:21:15 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[восстановление]]></category>
		<category><![CDATA[ошибки]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=922</guid>
		<description><![CDATA[Поведаю Вам очередной совет по восстановлению операционной системы Windows XP из дауна в синий «экран смерти» с ошибкой с000021a. Такая ситуация с ошибкой c000021a возникает при завершении Winlogon.exe или сsrss.exe, а также при неудачном запуске smss.exe. Причиной тому может стать некорректное завершение работы операционной системы, некорректная установка софта или обновления, а также «трипачек» (то бишь [...]]]></description>
			<content:encoded><![CDATA[<p>Поведаю Вам очередной совет по восстановлению операционной системы <strong>Windows XP</strong> из дауна в синий «экран смерти» с ошибкой <strong>с000021a</strong>. </p>
<p>Такая ситуация с ошибкой <strong>c000021a</strong> возникает при завершении <strong>Winlogon.exe</strong> или <strong>сsrss.exe</strong>, а также при неудачном запуске <strong>smss.exe</strong>. Причиной тому может стать некорректное завершение работы операционной системы, некорректная установка софта или обновления, а также <strong>«трипачек»</strong> (то бишь вредоносные программы).<br />
<span id="more-922"></span><br />
Для  решения проблемы Вам потребуется загрузочный диск или <strong>Live CD/DVD</strong> и т.п., чтобы получить доступ к файлам <strong>Winlogon.exe</strong>, <strong>csrss.exe</strong>, <strong>smss.exe</strong> не блокируемым системой. Кроме того, потребуется скопировать данные файлы с работоспособной системы, которые лежат в <strong>C:\WINDOWS\system32</strong>. После того как Вы, например, загрузитесь с <strong>Live CD/DVD</strong>, просто замените данные файлы и будет Вам счастье.</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/administration/201002/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%80%d0%b0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Администрирование: проблема с загрузкой профилей в Windows Vista и 7.</title>
		<link>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d1%81-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7/</link>
		<comments>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d1%81-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 13:59:54 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[восстановление]]></category>
		<category><![CDATA[профили]]></category>
		<category><![CDATA[реестр]]></category>
		<category><![CDATA[служба]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=906</guid>
		<description><![CDATA[По служебной деятельности научился решать проблему, возникающую в Windows Vista и Windows 7 со службой профилей пользователей. А именно, при попытке войти в систему (в домене) выводится сообщение о том, что «Служба профилей препятствует входу в систему». Причиной тому могут быть разные ситуации, но наиболее часто встречаемые это: некорректный путь к профилю, были удалены профили [...]]]></description>
			<content:encoded><![CDATA[<p>По служебной деятельности научился решать проблему, возникающую в <strong>Windows Vista</strong> и <strong>Windows 7</strong> со службой профилей пользователей. А именно, при попытке войти в систему (в домене) выводится сообщение о том, что <strong>«Служба профилей препятствует входу в систему»</strong>. Причиной тому могут быть разные ситуации, но наиболее часто встречаемые это:</p>
<ul>
<li> некорректный путь к профилю,</li>
<li>были удалены профили <strong>«default»</strong> или <strong>«Общие»</strong>(он же <strong>«Public»</strong>) или нарушена их иерархия папок.</li>
</ul>
<p><span id="more-906"></span><br />
При этом может возникнуть проблема, что невозможно загрузить систему даже под локальным пользователем (администратором). Но в безопасном режиме система грузится.</p>
<p><strong>В первой ситуации</strong>, для решения проблемы с загрузкой профилей, необходимо будет почистить и слегка отредактировать реестр <strong>«ручками»</strong> следующим образом. В реестре переходим сюда:</p>
<div class="codesnip-container" >HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\</div>
<p>Просматривая этот раздел, ищем нужный нам профиль пользователя по ключам (<strong>«ProfileImagePath»</strong>), указывающим путь к профилям. В просматриваемом списке правильный раздел имеет вид <strong><идентификатор>.bak</strong>. Кроме того, присутствует точно такой же раздел, только с именем <strong><идентификатор> (без «.bak»)</strong>, в котором путь к профилю указан не верно. </p>
<p><strong>Наши действия</strong>:</p>
<ol>
<li> Удаляем раздел с ошибочным путем к профилю.</li>
<li>	Переименовываем раздел с правильным путем к профилю, удалив из его имени окончание «.bak».</li>
<li>Попутно удаляем разделы, профили пользователей которые были удалены вами в ручную (разумеется, если такое имело место быть ;) ).</li>
</ol>
<p>Далее перезагружаемся и пытаемся войти под пользователем, под которым ранее войти в систему не удавалось. Все должно сработать.</p>
<p><strong>Во втором случае</strong>, проблема возникла, как показала практика, были либо удалены один из профилей <strong>«default»</strong> или <strong>«Общие»</strong>, либо в этих профилях нарушена иерархия папок (попросту удалены все или часть вложенных папок).</p>
<p>Для решения данной проблемы достаточно создать папки с такими именами, если папки были удалены. Либо скопировать содержимое любого профиля и вставить в <strong>«default»</strong> или <strong>«Общие»</strong>. После этого работоспособность системы восстанавливается. </p>
<p> Желаю удачи! ;) </p>
<p>Если у Вас есть чем дополнить данную статью, пишите пожалуйста комментарии к статье либо у нас на <a href="/forum/">форуме</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d1%81-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Администрирование: Восстановление загрузки Windows.</title>
		<link>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7/</link>
		<comments>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 16:33:51 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Live CD/DVD]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[вирусы]]></category>
		<category><![CDATA[восстановление]]></category>
		<category><![CDATA[загрузка]]></category>
		<category><![CDATA[реестр]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=892</guid>
		<description><![CDATA[Случается так, что в один прекрасный день при загрузке Windows на черном экране выводится сообщение, что по причине некорректного файла system или software операционная система (далее ОС) семейства Windows не может загрузиться. Это происходит тогда, когда ОС некорректно завершает свою работу &#8212; моргнул свет, нажатие кнопки «reset» или просто по необъяснимой причине =)… В этом [...]]]></description>
			<content:encoded><![CDATA[<p>Случается так, что в один прекрасный день при загрузке Windows на черном экране выводится сообщение, что по причине некорректного файла <strong>system</strong> или <strong>software</strong> операционная система (далее ОС) семейства Windows не может загрузиться. Это происходит тогда, когда ОС некорректно завершает свою работу &#8212; моргнул свет, нажатие кнопки <strong>«reset»</strong> или просто по необъяснимой причине =)…<br />
<span id="more-892"></span><br />
В этом случае есть два выхода. Либо переустановка ОС Windows, либо восстановить работоспособность Windows <strong>«ручками»</strong>, но с небольшим ограничением. Все программы которые зависят от реестра прийдется переустанавливать =(. Первый вариант скорее для начинающих пользователей, которые только учатся переустанавливать ось и его рассматривать я не буду, а вот второй уже для опытных и в связи с этим более интересен, о нем я расскажу поподробней. </p>
<p>Для этого понадобится либо установочный диск, либо <strong>Live CD/DVD</strong>, либо возможность подключения жесткого диска к другому компу. Рассматривать данный способ я буду на примере загрузочного диска, однако все описанные действия аналогичны и для<strong> Live CD/DVD</strong> или подключения к другому компу.</p>
<p>Приступим. Загружаемся с загрузочного (установочного) диска ОС Windows. Когда вам представится выбор действий, то нужно выбрать режим восстановления операционной системы с помощью консоли восстановления, нажатие кнопки <strong>«R»</strong>. Далее выбираем раздел операционной системы – требуется ввести нужную цифру. Далее с вас спросят пароль. Если пароль при установке Windows вы не устанавливали, просто нажмите <strong>«Enter»</strong>. После этого система восстановления переведет вас в папку Windows. Далее вам потребуются знания консольных команд ;).</p>
<p>С помощью команды <strong>cd</strong> переходим в папку <strong>repair</strong>:</p>
<div class="codesnip-container" >cd repair</div>
<p>В папке <strong>repair</strong> хранится <strong>«сырой»</strong> реестр(файлы: <strong>sam</strong>, <strong>system</strong>, <strong>software</strong>, <strong>default</strong>, <strong>security</strong>. Самыми важными файлами являются <strong>sam</strong> – в котором хранятся учетки пользователей, <strong>system</strong> – системный ключ для защиты файла <strong>sam</strong>, а так же настройки системы, <strong>software</strong> – содержит информацию об установленном ПО. Это тот самый реестр, который создался при установке операционной системы и он еще не знает ни об устройствах вашей системы, ни об установленных программах. </p>
<p>Действующий или <strong>«активный»</strong> реестр вашей системы лежит в <strong>Windows\system32\config</strong>. С помощью команды <strong>copy</strong> копируем необходимые файлы из папки <strong>repair</strong> в папку <strong>config</strong>:</p>
<div class="codesnip-container" >// так как мы находимся в папке repair команда будет выглядеть так<br />
Copy < нужный  файл> Windows\system32\config\<нужный файл></div>
<p>Будет выведено сообщение что такой файл уже существует, заменить? Жмите <strong>«Y»</strong>. Далее перезагружаем компьютер. В результате такой замены, может потребоваться замена еще пары файлов – не пугайтесь, просто проведите такую же манипуляцию с файлами. </p>
<p>Как только система соизволит загрузиться, начнется процесс установки драйверов (заново). Если этого не произойдет, придется системе помочь. </p>
<p>Если же вдруг при загрузке ОС выводится сообщение, что у вас битая какая то .dll-ка, то ее можно найти на загрузочном диске в папке <strong>«I386»</strong>. При это расширение у искомой .dll-ки  будет выглядеть как <strong>«.DL_»</strong>. Если ваш CD-ROM под буквой D, то для того чтобы сменить диск надо написать:</p>
<div class="codesnip-container" >D: //и нажать «Enter»</div>
<p>После этого просто с помощью команды<strong> «copy»</strong> скопируйте в папку <strong>C:\Windows\system32</strong> (возможно с заменой).</p>
<p>Описанные выше способы могут выручить вас в тот момент, когда нет возможности перенести данные с жесткого диска, на котором слетела ось, на другой диск или нет желания <strong>«опять»</strong> переустанавливать Windows. </p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/administration/201001/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

