<?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>Wed, 23 Jun 2010 09:50:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 &#8211; это такой 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 &#8211; это такой shell-интерпретатор, наподобие bash и ему подобных. Привычка его ставить пошла от FreeBSD, где дефолтные tcsh и csh совсем не юзер-френдли на мой взгляд. Может и их можно настроить до нормального уровня, но ведь настоящие герои всегда идут в обход :).</p>
<p>Итак, в zsh можно включить достаточно мощный автокомплит просто &laquo;тыкнув пару кнопок&raquo; в консоли после первого запуска. Однако, по сравнению с большинством дефолтных поставок 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 или перезапустить графический терминал &#8211; 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 &#8211; правее. Данный код выводит в левой части разукрашенное &laquo;[ имя_пользователя_@имя_хоста текущий/путь]$ &laquo;, справа &#8211; &laquo;(время) смайлик&raquo;. Просто вставить смайлик было бы глупо, поэтому это особенный смайлик. При успешном выполнении команды он улыбается, при неудачном &#8211; огорчается :).</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" >Для тех, кто не в курсе, что значит клиент-серверное приложение, поясню: это комплекс программ (модулей) состоящий из двух частей &#8211; клиентской и серверной. Серверная часть является &laquo;главной&raquo;- так называемый командный пункт, на который возложена задача поддержания связи со всеми клиентами и раздача команд управления, соответствующих их функционалу (управление клиентами). Клиентская же часть является второстепенной, но не менее важной, так как является важным и связующим элементом, позволяющим выполнять удаленные команды (функции) на компьютере, на котором установлен.</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>, куда распаковывается дистрибутив перед установкой &#8211; <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>&laquo;Add&raquo;</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>&laquo;петлю&raquo;</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>&laquo;ping client&raquo;</strong>.</p>
<p>Вот примерно так выглядит типовой шаблон приложения <strong>&laquo;клиент-сервер&raquo;</strong>.</p>
<p><strong>Примечание</strong></p>
<div class="codesnip-container" >Хотел бы обратить внимание на обработчик <strong>onError</strong> тех, кто ранее не знал как избавиться от злосчастного сообщения &#8211; <strong>&laquo;Asynchronous socket error 10061&#8243;</strong>, возникающее при попытке осуществления подключения к серверу, который недоступен.</div>
<p>Рабочий пример можно скачать <a title="Рабочий пример" href="/forum/downloadf/simples/client-server.rar">отсюда</a>.</p>
<p>Если есть кому что добавить или задать вопрос по теме &#8211; прошу отписываться в комментах ;)</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>5</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, иначе &#8211; второй. Операция or наоборот, возвращает 1й операнд, если он приводится к типу True, иначе &#8211; второй. Всё это связано с &laquo;ленивостью&raquo; (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>2</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" >Если проблема не решится &#8211; попробуйте еще увеличить значение <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>4</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[Статистика &#8211; вещь не только интересная, но иногда и полезная :). Wordpress  &#8211; один из популярнейших движков php для блогов, для него существует огромное количество плагинов, в том числе и плагины для просмотра статистики по посещаемости. Один из таких плагинов &#8211; statpress. Но есть в нём некоторые недостатки, автор плагина добавил распознавание некоторых русских [...]]]></description>
			<content:encoded><![CDATA[<p>Статистика &#8211; вещь не только интересная, но иногда и полезная :). Wordpress  &#8211; один из популярнейших движков php для блогов, для него существует огромное количество плагинов, в том числе и плагины для просмотра статистики по посещаемости. Один из таких плагинов &#8211; statpress. Но есть в нём некоторые недостатки, автор плагина добавил распознавание некоторых русских поисковых движков, но так же некоторые упустил из виду. Хотя даже тот же Яндекс обрабатывается не очень хорошо, не учитываются переходы с yandex.ua, yandex.kz и т.п. Но opensource тем и хорош, что всегда можно поправить исходники, если что-то тебя не устраивает :). Далее пойдёт речь об оптимизации плагина statpress под Российские поисковики.<br />
<span id="more-948"></span></p>
<p>В общем надоело мне то, что не учитывается часть поисковиков, надоело смотреть на ссылки с этих поисковиков в &laquo;последних ссылающихся ресурсах&raquo;, как оказалось, подправить это доваольно легко. С недельку ещё последил для отлова поисковых движков, и вот примерный список улучшений:</p>
<ul>
<li><strong>Yandex</strong> &#8211; улучшено поддержка (теперь распознаётся yandex.kz, yandex.ua. В общем то теперь маска для яндекса выглядит так: yandex.*, в связи с этим так же распознаются переходы вида yandex.ru/schoolsearch?text=* и т.п.);</li>
<li><strong>Nigma</strong> &#8211; добавлена поддержка поисковика nigma.ru</li>
<li><strong>Go Mail.ru</strong> &#8211; добавлена поддержка поисковика Go от Mail.Ru</li>
<li><strong>QIP</strong> &#8211; добавлена поддержка поисковика от QIP&#8217;а</li>
<li><strong>bing.</strong> &#8211; добавлен поисковик bing.com</li>
<li><strong>Rambler</strong> &#8211; улучшена поддержка поисковика от Рамблера</li>
</ul>
<p>Так же из &laquo;ссылающихся ресурсов&raquo; убараны ссылки вида &laquo;*google.*&raquo;, если это нововведение вам не нужно, не заменяйте в своём плагине файл statpress.php. У меня почему-то появилась куча ссылок на меня с гугла, по которым находится что-то вроде &laquo;ресурс zetblog.ru пытается перенаправить вас&raquo;. В случае обновления statpress.php такая проблема исчезнет, но могут так же пропасть и нужные ссылки с google (если они есть вообще).</p>
<p>После обновления файлов плагина необходимо обновить БД статистики (достаточно долгий процесс&#8230; особенно если база большая), делается это через админку wordpress путём одинарного клика по кнопке StatPressUpdate ^__^.</p>
<p>Если что-то какие-то поисковики упустил &#8211; пишите в комменты, обновлю. Ну, либо сам, если узнаю об этом :). Надеюсь, кому-то это поможет.</p>
<p>Ссылки на скачивание всего этого:<br />
<a href="http://depositfiles.com/files/3lujgxn3d">http://depositfiles.com/files/3lujgxn3d</a> &#8211; плагин полностью на депозите.<br />
Позже (по первой просьбе или как дойдут руки)) добавлю ссылку на скачивание с этого ресурса.</p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/programming/201002/wordpress-statpress-russian-optimization/feed/</wfw:commentRss>
		<slash:comments>4</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й &#8211; очевидный, с помощью 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 &#8211; ошибка 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>1</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 со службой профилей пользователей. А именно, при попытке войти в систему (в домене) выводится сообщение о том, что «Служба профилей препятствует входу в систему». Причиной тому могут быть разные ситуации, но наиболее часто встречаемые это:

 некорректный путь к профилю,
были удалены профили «default» [...]]]></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>2</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 не может загрузиться. Это происходит тогда, когда ОС некорректно завершает свою работу &#8211; моргнул свет, нажатие кнопки «reset» или просто по необъяснимой причине =)…

В этом случае [...]]]></description>
			<content:encoded><![CDATA[<p>Случается так, что в один прекрасный день при загрузке Windows на черном экране выводится сообщение, что по причине некорректного файла <strong>system</strong> или <strong>software</strong> операционная система (далее ОС) семейства Windows не может загрузиться. Это происходит тогда, когда ОС некорректно завершает свою работу &#8211; моргнул свет, нажатие кнопки <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>3</slash:comments>
		</item>
		<item>
		<title>Безопасность: удаление вредоносных программ (отправка СМС и т.д.).</title>
		<link>http://zetblog.ru/theory/200912/%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2%d1%80%d0%b5%d0%b4%d0%be%d0%bd%d0%be%d1%81%d0%bd%d1%8b%d1%85-%d0%bf/</link>
		<comments>http://zetblog.ru/theory/200912/%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2%d1%80%d0%b5%d0%b4%d0%be%d0%bd%d0%be%d1%81%d0%bd%d1%8b%d1%85-%d0%bf/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 14:49:49 +0000</pubDate>
		<dc:creator>C0ffe1n</dc:creator>
				<category><![CDATA[Теория]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[вирусы]]></category>

		<guid isPermaLink="false">http://zetblog.ru/?p=881</guid>
		<description><![CDATA[Продолжая курс статей, посвященных удалению вредоносных программ своими силами, спешу поделиться опытом по реанимированию компьютера, умершего в результате вирусного заражения. Описанное ниже относится к классу вирусов, которые блокируют загрузку Windows, требующих отправить смску или еще что. В этом случае не стоит торопиться отправлять SMS. Систему реально восстановить «ручками».

Загружаем операционную систему в безопасном режиме (для этого [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжая курс статей, посвященных удалению вредоносных программ своими силами, спешу поделиться опытом по реанимированию компьютера, умершего в результате вирусного заражения. Описанное ниже относится к классу вирусов, которые блокируют загрузку Windows, требующих отправить смску или еще что. В этом случае не стоит торопиться отправлять SMS. Систему реально восстановить «ручками».<br />
<span id="more-881"></span></p>
<p>Загружаем операционную систему в безопасном режиме (для этого при загрузке жмём F5 и выбираем безопасный режим) и с помощью системы восстановления (в windows vista можно найти так: пуск &#8211;> все программы &#8211;> стандартные &#8211;> служебные &#8211;> восстановление системы) пытаемся откатиться на несколько дней назад (если это возможно), когда, по вашему мнению, ваш компьютер еще не был заражен. После этого грузимся в обычном режиме и в срочном порядке осуществляем сканирование жесткого диска на наличие вирусов и другой твари.</p>
<p>В случае, если при загрузке Windows выводится сообщения, которое оповещает о том, что оно, якобы, пропадет через 30 (в моем случае) дней, то достаточно перевести дату вперед сроком на это время. После этого данный вирус удалится сам. После перезагрузки дату можно вернуть обратно, вирус вас больше не потревожит. ;)</p>
<p>В общем, описанные способы меня выручили не один раз, но, как говорится, здесь 50 на 50 &#8211; либо поможет, либо нет.</p>
<p><strong>Примечание</strong><br />
Для борьбы с вирусами СМС-блокерами пользуйтесь сервисами с официальных сайтах <a href="http://support.kaspersky.ru/viruses/deblocker">Лабаратории Касперского</a> и <a href="http://www.drweb.com/unlocker/index/">Доктор Веб</a>.</p>
<p>Если есть какие вопросы или замечания, отписываем их на <a href="/forum">форуме</a>. Буду очень признателен, если вы поможете в написании более полных и подробных статей, посвященных удалению вредоносных программ.</p>
<p><strong>Полезно:</strong><br />
<a href="/theory/200903/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2%d1%80%d0%b5%d0%b4%d0%be%d0%bd%d0%be%d1%81%d0%bd%d1%8b%d1%85-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc/">Безопасность: Удаление вредоносных программ</a><br />
<a href="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/">Администрирование: Восстановление загрузки Windows</a></p>
]]></content:encoded>
			<wfw:commentRss>http://zetblog.ru/theory/200912/%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2%d1%80%d0%b5%d0%b4%d0%be%d0%bd%d0%be%d1%81%d0%bd%d1%8b%d1%85-%d0%bf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
