<?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>Рабочие будни &#187; Опыт</title>
	<atom:link href="http://gritsinger.com/category/opyt/feed" rel="self" type="application/rss+xml" />
	<link>http://gritsinger.com</link>
	<description>шпаргалки ИТ профа</description>
	<lastBuildDate>Fri, 03 Sep 2010 11:53:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Установка Webmin через yum (CentOS,RHEL)</title>
		<link>http://gritsinger.com/ustanovka-webmin-cherez-yum-centosrhel.html</link>
		<comments>http://gritsinger.com/ustanovka-webmin-cherez-yum-centosrhel.html#comments</comments>
		<pubDate>Fri, 03 Sep 2010 11:53:53 +0000</pubDate>
		<dc:creator>Валентин</dc:creator>
				<category><![CDATA[doc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Опыт]]></category>

		<guid isPermaLink="false">http://gritsinger.com/?p=408</guid>
		<description><![CDATA[Возвращаемся к технических заметкам. echo -e "[Webmin]\nname=Webmin\nbaseurl=http://download.webmin.com/download/yum\n enabled=1" &#62; /etc/yum.repos.d/webmin.repo rpm --import http://www.webmin.com/jcameron-key.asc yum install webmin]]></description>
			<content:encoded><![CDATA[<pre>Возвращаемся к технических заметкам.
echo -e "[Webmin]\nname=Webmin\nbaseurl=http://download.webmin.com/download/yum\n
enabled=1" &gt; /etc/yum.repos.d/webmin.repo
rpm --import http://www.webmin.com/jcameron-key.asc
yum install webmin</pre>
]]></content:encoded>
			<wfw:commentRss>http://gritsinger.com/ustanovka-webmin-cherez-yum-centosrhel.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разбор ломаной на мелкие отрезки</title>
		<link>http://gritsinger.com/razbor_lomanoy_na_melkie_otrezki.html</link>
		<comments>http://gritsinger.com/razbor_lomanoy_na_melkie_otrezki.html#comments</comments>
		<pubDate>Tue, 11 Aug 2009 19:03:11 +0000</pubDate>
		<dc:creator>Валентин</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://gritsinger.com/?p=392</guid>
		<description><![CDATA[Предположим что существует некий массив из координат отрезков составляющих какую то ломанную линию. Требуется разбить эту линию на более мелкие отрезки. Зачем? Да мало ли, мне вот понадобилось. private  ArrayList breakLines (ArrayList aV) //на входе массив координат { int snap=200; //требуемое количество отрезков на выходе ArrayList tPixel = new ArrayList (); //новый массив координат для [...]]]></description>
			<content:encoded><![CDATA[<p>Предположим что существует некий массив из координат отрезков составляющих какую то ломанную линию.<br />
Требуется разбить эту линию на более мелкие отрезки. Зачем? Да мало ли, мне вот понадобилось.</p>
<p>private  ArrayList breakLines (ArrayList aV) //на входе массив координат<br />
{</p>
<p>int snap=200; //требуемое количество отрезков на выходе<br />
ArrayList tPixel = new ArrayList (); //новый массив координат для возврата<br />
ArrayList aPixel = new ArrayList (); //временный массив координат</p>
<p>Point obj1 = new Point ();<br />
int b=0;<br />
foreach (Point obj in aV)<br />
{<br />
if (b != 0)<br />
{<br />
float x1 = obj1.X;<br />
float y1 = obj1.Y;<br />
float x2 = obj.X;<br />
float y2 = obj.Y;<br />
//Алгоритм DDA-линии<br />
int L = (int) Math.Max (Math.Abs (x2&nbsp;&mdash; x1), Math.Abs (y2&nbsp;&mdash; y1));<br />
float dX = (x2&nbsp;&mdash; x1) / L;<br />
float dY = (y2&nbsp;&mdash; y1) / L;<br />
aPixel.Add (new Point ((int) x1, (int) y1)); //Начальную точку в массив</p>
<p>for (int i = 0; i &lt; L; i++)<br />
{<br />
x1 = (x1 + dX);<br />
y1 = (y1 + dY);<br />
aPixel.Add (new Point ((int) x1,(int) y1)); //Следующую точку в массив<br />
}<br />
//aPixel.Add (new Point ((int) x2, (int) y2)); // Можно раскомментировать если требуется дублирование каждой последней точки в отрезке<br />
}<br />
obj1 = obj;<br />
b++;<br />
}<br />
for (int i=0;i&lt;snap;i++)   tPixel.Add (aPixel[(int)(aPixel.Count*i/snap)]);<br />
return tPixel;<br />
}</p>
<p>Такая вот теорема для критики. Если есть кому что добавить, то вэлком.</p>
]]></content:encoded>
			<wfw:commentRss>http://gritsinger.com/razbor_lomanoy_na_melkie_otrezki.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка SVN сервера поверх Apache в gentoo</title>
		<link>http://gritsinger.com/ustanovka-svn-servera-poverh-apache-v-gentoo.html</link>
		<comments>http://gritsinger.com/ustanovka-svn-servera-poverh-apache-v-gentoo.html#comments</comments>
		<pubDate>Thu, 06 Aug 2009 09:02:55 +0000</pubDate>
		<dc:creator>Валентин</dc:creator>
				<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Опыт]]></category>

		<guid isPermaLink="false">http://gritsinger.com/?p=391</guid>
		<description><![CDATA[Ставим Subversion: USE="apache2" emerge subversion Конфигурируем: emerge --config =dev-util/subversion-1.4.6 Редактируем /etc/conf.d/apache2: добавляем -D DAV -D SVN Изменим /etc/apache2/modules.d/47_mod_dav_svn.conf: &#60;Location /svn/repos&#62; DAV svn SVNPath /var/svn/repos AuthType Basic AuthName &#171;Subversion repository&#187; AuthUserFile /var/svn/conf/svnusers Require valid-user &#60;/Location&#62; Создаём файл паролей: htpasswd2 -m -c /var/svn/conf/svnusers USERNAME Создаём других пользователей: htpasswd2 -m /var/svn/conf/svnusers USERNAME Перезапускаем Apache: /etc/init.d/apache2 restart Готово. Теперь [...]]]></description>
			<content:encoded><![CDATA[<p>Ставим Subversion:<br />
USE="apache2" emerge subversion<br />
Конфигурируем:<br />
emerge --config =dev-util/subversion-1.4.6</p>
<p>Редактируем /etc/conf.d/apache2:<br />
добавляем -D DAV -D SVN</p>
<p>Изменим /etc/apache2/modules.d/47_mod_dav_svn.conf:<br />
&lt;Location /svn/repos&gt;<br />
DAV svn<br />
SVNPath /var/svn/repos<br />
AuthType Basic<br />
AuthName &laquo;Subversion repository&raquo;<br />
AuthUserFile /var/svn/conf/svnusers<br />
Require valid-user<br />
&lt;/Location&gt;</p>
<p>Создаём файл паролей:<br />
htpasswd2 -m -c /var/svn/conf/svnusers USERNAME<br />
Создаём других пользователей:<br />
htpasswd2 -m /var/svn/conf/svnusers USERNAME</p>
<p>Перезапускаем Apache:<br />
/etc/init.d/apache2 restart</p>
<p>Готово.<br />
Теперь доступ к репозиториям можно получить как браузером, так и SVN клиентом по адресу http://mydomain/svn/repos/</p>
<p>Легко и просто...</p>
]]></content:encoded>
			<wfw:commentRss>http://gritsinger.com/ustanovka-svn-servera-poverh-apache-v-gentoo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вычисляем длину линии по координатам</title>
		<link>http://gritsinger.com/vychislyaem-dlinu-linii-po-koordinatam.html</link>
		<comments>http://gritsinger.com/vychislyaem-dlinu-linii-po-koordinatam.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 14:48:52 +0000</pubDate>
		<dc:creator>Валентин</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://gritsinger.com/?p=390</guid>
		<description><![CDATA[Этот и последующие статьи будут из серии простейших операций с 2d графикой. Получается так, что с частотой в год или два,  приходится выполнять одинаковые задачи с подобными незатейливыми алгоритмами. И постоянно приходится вспоминать одни и те же действия. Статьи будут краткие  и простые. Текущий заказчик захотел исполнение на C# , следовательно код будет именно на [...]]]></description>
			<content:encoded><![CDATA[<p>Этот и последующие статьи будут из серии простейших операций с 2d графикой. Получается так, что с частотой в год или два,  приходится выполнять одинаковые задачи с подобными незатейливыми алгоритмами. И постоянно приходится вспоминать одни и те же действия. Статьи будут краткие  и простые. Текущий заказчик захотел исполнение на C# , следовательно код будет именно на нём.</p>
<p>private Double length (Double _x1, Double _y1, Double _x2, Double _y2) {<br />
return Math.Sqrt (Math.Pow (_x2&nbsp;&mdash; _x1, 2) + Math.Pow (_y2&nbsp;&mdash; _y1, 2));<br />
}</p>
<p>И да, скажете почему нет подсветки кода? Мне она не нужна.</p>
]]></content:encoded>
			<wfw:commentRss>http://gritsinger.com/vychislyaem-dlinu-linii-po-koordinatam.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Сервер авторизации OpenID на собственном домене</title>
		<link>http://gritsinger.com/server-avtorizacii-openid-na-sobstvennom-domene.html</link>
		<comments>http://gritsinger.com/server-avtorizacii-openid-na-sobstvennom-domene.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 11:42:00 +0000</pubDate>
		<dc:creator>Валентин</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Опыт]]></category>
		<category><![CDATA[интернет]]></category>

		<guid isPermaLink="false">http://gritsinger.com/?p=387</guid>
		<description><![CDATA[Давно хотел приладить OpenID к своему домену в качестве сервера авторизации, что бы при комментировании можно было указывать адрес своего блога в том же ЖЖ. Перепробовал массу готовых php скриптов (Prairie, phpMyID, PHP OpenID Server, Clamshell, NetMesh InfoGrid LID PHP, SimpleID). Одни не устраивали тем, что требуется база данных (зачем она нужна для одного аккаунта?), [...]]]></description>
			<content:encoded><![CDATA[<p>Давно хотел приладить OpenID к своему домену в качестве сервера авторизации, что бы при комментировании можно было указывать адрес своего блога в том же ЖЖ.</p>
<p>Перепробовал массу готовых php скриптов (Prairie, phpMyID, PHP OpenID Server, Clamshell, NetMesh InfoGrid LID PHP, SimpleID). Одни не устраивали тем, что требуется база данных (зачем она нужна для одного аккаунта?), другие тупо не хотели работать с одним сайтом, но работали с другим. Надежного автономного решения так и не нашлось.</p>
<p>Почитав спецификацию OpenID выяснил, что можно делегировать проверку полномочий стороннему серверу. На этом и остановился. Считаю, что лучше пусть этим занимается полноценный сервер, нежели недоделанные скрипты.</p>
<p>А теперь по порядку:<br />
1) Заходим на <a href="http://www.myopenid.com" target="_blank">www.myopenid.com</a> и регистрируемся. В итоге получаем для авторизации адрес типа youraccount.myopenid.com<br />
2) Добавляем следующий код в секцию HEAD своего сайта:<br />
&lt;link rel="openid.server" href="http://www.myopenid.com/server" /&gt;<br />
&lt;link rel="openid.delegate" href="http://youraccount.myopenid.com/" /&gt;<br />
&lt;link rel="openid2.local_id" href="http://youraccount.myopenid.com" /&gt;<br />
&lt;link rel="openid2.provider" href="http://www.myopenid.com/server" /&gt;<br />
&lt;meta http-equiv="X-XRDS-Location" content="http://www.myopenid.com/xrds?username=youraccount.myopenid.com" /&gt;</p>
<p>На этом всё. Не правда ли просто? Теперь при авторизации на любом сайте где требуется OpenID вы можете использовать адрес своего сайта.</p>
<p>Там же в myopenid можно заполнить ваши данные (почта, пол, ФИО, возраст, дата рождения, язык и т.д.) которые если потребуются для какого либо сайта, то будут автоматически выданы сервером.</p>
<p>P.S. youraccount надо заменить на ваш логин полученный при регистрации.</p>
]]></content:encoded>
			<wfw:commentRss>http://gritsinger.com/server-avtorizacii-openid-na-sobstvennom-domene.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>
