<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4876407785098439896</id><updated>2026-02-17T11:59:13.667+03:00</updated><category term="Ada"/><category term="Emacs"/><category term="Gentoo"/><category term="linux"/><category term="GNAT"/><category term="Qt"/><category term="QtAda"/><category term="gcc"/><category term="Jabber"/><category term="firefox"/><category term="kde"/><category term="valgrind"/><category term="Gdb"/><category term="Kernel"/><category term="Ubuntu"/><category term="administration"/><category term="alsa"/><category term="bash"/><category term="bash shell"/><category term="c"/><category term="skype"/><category term="xml"/><category term="Отладка"/><category term="ASIS"/><category term="AVX"/><category term="BUG"/><category term="ELCE"/><category term="Easeter Eggs"/><category term="Embedded"/><category term="FIXME"/><category term="Flight Emulator"/><category term="GTK"/><category term="GoogleEarth"/><category term="HAL"/><category term="ICQ"/><category term="ISP"/><category term="Psi"/><category term="SIMD"/><category term="TODO"/><category term="Thunderbird"/><category term="VirtualBox"/><category term="Wine"/><category term="X"/><category term="X.org"/><category term="X11"/><category term="alias"/><category term="amd"/><category term="apache"/><category term="ati"/><category term="berlios.de"/><category term="books"/><category term="brain"/><category term="code review"/><category term="config"/><category term="convmv"/><category term="corba"/><category term="cups"/><category term="dbus"/><category term="debian"/><category term="defrag"/><category term="distcc"/><category term="dmix"/><category term="docbook"/><category term="easter_eggs"/><category term="ejabberd"/><category term="encoding"/><category term="flash"/><category term="fop"/><category term="gerrit"/><category term="git"/><category term="glib"/><category term="gnutls"/><category term="gprbuild"/><category term="gspca"/><category term="hplip"/><category term="http"/><category term="intenet"/><category term="iptables"/><category term="kde4"/><category term="libc"/><category term="libreoffice"/><category term="man"/><category term="matreshka"/><category term="meltdown"/><category term="memory leaks"/><category term="mtrace"/><category term="mudflap"/><category term="notification"/><category term="opensource"/><category term="pandaboard"/><category term="pdf"/><category term="polyorb"/><category term="postgresql"/><category term="prolog"/><category term="qemu"/><category term="quota"/><category term="remote"/><category term="sex"/><category term="sound"/><category term="ssh"/><category term="ssh svn узелок."/><category term="trac"/><category term="web cam"/><category term="xfs"/><category term="xmodmap"/><category term="xmpp"/><category term="xsl"/><category term="Книги"/><category term="Логика"/><category term="задачка"/><category term="наука"/><category term="скобки"/><category term="узелок на память"/><title type='text'>Linux Maniacs</title><subtitle type='html'>Notes about linux and programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>101</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-8408913513473406395</id><published>2018-02-22T09:27:00.000+03:00</published><updated>2018-02-22T09:27:35.650+03:00</updated><title type='text'>Создание скриншотов в KDE</title><content type='html'>В KDE 4 была прекрасная утилита для создания снимков экрана, которая называлась ksnapshot, которую разработчики почему-то не стали портировать в KDE5.&lt;br /&gt;
В KDE 5, на замену ksnaphost пришла утилита spectacle&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.kde.org/images/screenshots/resized/spectacle.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;330&quot; data-original-width=&quot;540&quot; height=&quot;195&quot; src=&quot;https://www.kde.org/images/screenshots/resized/spectacle.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
которая умеет делать всё тоже самое что и ksnaphost:&lt;br /&gt;
&lt;br /&gt;
- Создавать снимок десктопа.&lt;br /&gt;
- Создавать снимок текущего монитора (если мониторов несколько).&lt;br /&gt;
- Создавать снимок прямоугольной области экрана&lt;br /&gt;
&lt;br /&gt;
За более полным списком сюда:&amp;nbsp;&lt;a href=&quot;https://www.kde.org/applications/graphics/spectacle/&quot; target=&quot;_blank&quot;&gt;https://www.kde.org/applications/graphics/spectacle/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/8408913513473406395/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2018/02/kde.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8408913513473406395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8408913513473406395'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2018/02/kde.html' title='Создание скриншотов в KDE'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-8320731258285940600</id><published>2018-02-16T06:26:00.001+03:00</published><updated>2018-02-16T06:26:39.967+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="meltdown"/><title type='text'>cpu_meltdow spectre_v1 spectre_v2</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Последние версии ядра Linux ( у меня 4.15.3) теперь позволяют посмотреть какие есть баги в процессоре.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
cat /proc/cpuinfo:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-wkDL2jrzt-M/WoZN5MzYbTI/AAAAAAAAyQM/IG_E-MJ5_fo41P4_ksOpZUkCX5Za7P2NgCLcBGAs/s1600/intel_cpu_bugs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;500&quot; data-original-width=&quot;453&quot; src=&quot;https://1.bp.blogspot.com/-wkDL2jrzt-M/WoZN5MzYbTI/AAAAAAAAyQM/IG_E-MJ5_fo41P4_ksOpZUkCX5Za7P2NgCLcBGAs/s1600/intel_cpu_bugs.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Пора обновить микрокод процессора.</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/8320731258285940600/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2018/02/cpumeltdow-spectrev1-spectrev2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8320731258285940600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8320731258285940600'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2018/02/cpumeltdow-spectrev1-spectrev2.html' title='cpu_meltdow spectre_v1 spectre_v2'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-wkDL2jrzt-M/WoZN5MzYbTI/AAAAAAAAyQM/IG_E-MJ5_fo41P4_ksOpZUkCX5Za7P2NgCLcBGAs/s72-c/intel_cpu_bugs.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-6581703374345010238</id><published>2017-02-01T07:19:00.001+03:00</published><updated>2017-02-01T07:19:57.517+03:00</updated><title type='text'>Разработчики chromium без дела не сидят.</title><content type='html'>&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; Running pre-merge checks for &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #18b218;&quot;&gt;www-client/chromium-56.0.2924.76-r1&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;background-color: white; color: #54ff54; font-weight: bold;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; Checking for at least 16 GiB RAM ... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;background-color: white; color: #ff5454; font-weight: bold;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; There is NOT at least 16 GiB RAM&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white; color: #ff5454; font-weight: bold;&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Space constraints set in the ebuild were not met!
&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #ff5454; font-weight: bold;&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;The build will most probably fail, you should enhance the space
&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #ff5454; font-weight: bold;&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;as per failed tests.&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/6581703374345010238/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2017/02/chromium.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/6581703374345010238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/6581703374345010238'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2017/02/chromium.html' title='Разработчики chromium без дела не сидят.'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-4245399649376813330</id><published>2016-07-14T21:54:00.001+03:00</published><updated>2016-07-14T22:03:41.139+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gentoo"/><title type='text'>Gentoo: Как исправить ntp-client failed to start.</title><content type='html'>Очень просто - заменить его на ntpd.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;rc-update del ntp-client&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;rc-service ntpd start&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;rc-update add ntpd default&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/4245399649376813330/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2016/07/ntp-client-failed-to-start.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4245399649376813330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4245399649376813330'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2016/07/ntp-client-failed-to-start.html' title='Gentoo: Как исправить ntp-client failed to start.'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3861795473472578620</id><published>2015-05-01T22:27:00.000+03:00</published><updated>2015-05-01T22:27:01.686+03:00</updated><title type='text'>tunctl больше не нужен</title><content type='html'>Открыл тут для себя что tunctl больше не нужен, и tun/tap устройства можно создавать так:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee; font-family: Verdana, sans-serif;&quot;&gt;ip tuntap add eth0 user USER11 group GROUP11 mode tap&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3861795473472578620/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2015/05/tunctl.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3861795473472578620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3861795473472578620'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2015/05/tunctl.html' title='tunctl больше не нужен'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-666963858318095721</id><published>2015-02-14T10:52:00.001+03:00</published><updated>2015-02-14T10:52:34.357+03:00</updated><title type='text'>Печать errno  в консоли</title><content type='html'>bash&amp;nbsp;+ python для печати &amp;nbsp;errno в удобочитаемом виде:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;strerror () { python -c &quot;import os; print os.strerror($1)&quot;; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Еще есть утилита perror, поставляемая в составе mysql</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/666963858318095721/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2015/02/errno.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/666963858318095721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/666963858318095721'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2015/02/errno.html' title='Печать errno  в консоли'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-1206984471456595577</id><published>2015-02-08T13:27:00.000+03:00</published><updated>2015-02-08T13:27:12.613+03:00</updated><title type='text'>ffmpeg или libav</title><content type='html'>Gentoo теперь предлагает пользователям самим выбирать между libav и ffmpeg.&lt;div&gt;
Не знаю что делать. Судя по всему проекты почти идентичны.&lt;/div&gt;
&lt;div&gt;
Посоветуйте что нибудь.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/1206984471456595577/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2015/02/ffmpeg-libav.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/1206984471456595577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/1206984471456595577'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2015/02/ffmpeg-libav.html' title='ffmpeg или libav'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-8127285364605261707</id><published>2015-01-26T13:35:00.002+03:00</published><updated>2015-01-26T13:35:39.681+03:00</updated><title type='text'>Парочка полезных настроек gdb для отладки</title><content type='html'>Говорим gdb чтобы он сохранял историю команд в &amp;nbsp;~/.gdb_history&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &amp;nbsp; set history filename ~/.gdb_history&lt;br /&gt;&amp;nbsp; &amp;nbsp; set history save&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Заставляем gdb печатать содержимое структур и объединений в виде дерева.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; set print pretty on&lt;br /&gt;
&amp;nbsp; &amp;nbsp; set print union on&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/8127285364605261707/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2015/01/gdb.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8127285364605261707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8127285364605261707'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2015/01/gdb.html' title='Парочка полезных настроек gdb для отладки'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-5368245188375040478</id><published>2015-01-19T18:27:00.002+03:00</published><updated>2015-01-19T18:27:46.735+03:00</updated><title type='text'>Полезная штучка для отладки.</title><content type='html'>&lt;br /&gt;
Отключение рандомизации виртуального адресного пространства:&lt;br /&gt;
setarch x86_64 -v -R</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/5368245188375040478/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2015/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/5368245188375040478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/5368245188375040478'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2015/01/blog-post.html' title='Полезная штучка для отладки.'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3124563839954162777</id><published>2014-10-22T12:51:00.003+04:00</published><updated>2014-10-23T07:35:49.028+04:00</updated><title type='text'>Как правильно определять строки в строке компиляции</title><content type='html'>Многие делают так:&lt;br /&gt;
&lt;br /&gt;
&lt;strike style=&quot;background-color: #eeeeee;&quot;&gt;gcc -DMYSTRING=\&quot;SomeString\&quot;&lt;/strike&gt;&lt;br /&gt;
&lt;br /&gt;
Но правильно так:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;gcc -DMYSTRING=&quot;\&quot;SomeString\&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Допустим у нас есть вот такой код:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;const char * var = &quot;T&quot; MYSTRING &quot;T&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Тогда, в результате его компиляции с помощью строки вида&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;gcc -DMYSTRING=&quot;\&quot;SomeString\&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;мы получим:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
const char * var = &quot;T&quot; &quot;test&quot; &quot;T&quot;;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3124563839954162777/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2014/10/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3124563839954162777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3124563839954162777'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2014/10/blog-post.html' title='Как правильно определять строки в строке компиляции'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-8161763922112150384</id><published>2014-09-02T19:14:00.002+04:00</published><updated>2014-09-02T19:14:57.726+04:00</updated><title type='text'>Российский разработчик Linux ядра арестован на 15 суток.</title><content type='html'>&lt;div&gt;
Российский разработчик Linux ядра арестован на 15 суток за одиночный пикет на Красной площади.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
По информация &amp;nbsp;Theodore Ts&#39;o:&amp;nbsp;&lt;/div&gt;
&lt;a href=&quot;https://plus.google.com/u/0/+TheodoreTso/posts/dPPNYreZiU5&quot;&gt;https://plus.google.com/u/0/+TheodoreTso/posts/dPPNYreZiU5&lt;/a&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
А человек, всего лишь, устроил одиночный пикет, который по нашим законам не запрещен.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/8161763922112150384/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2014/09/linux-15.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8161763922112150384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8161763922112150384'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2014/09/linux-15.html' title='Российский разработчик Linux ядра арестован на 15 суток.'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-2228929200761189102</id><published>2014-08-13T15:23:00.000+04:00</published><updated>2014-08-13T15:23:46.236+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code review"/><category scheme="http://www.blogger.com/atom/ns#" term="gerrit"/><category scheme="http://www.blogger.com/atom/ns#" term="prolog"/><title type='text'>gerrit 2.9 и правило 1 + 1 = 2</title><content type='html'>У нас принято, что, для того, чтобы изменения попали в репозиторий, патч должен получить одобрении как минимум двух сторонних ревьюверов.&lt;br /&gt;
&lt;br /&gt;
После обновления gerrit&#39;a с версии 2.8.1 на 2.9, исчесзла кнопочка submit для разработчиков даже если количество голосов было больше&amp;nbsp;+2.&lt;br /&gt;
&lt;br /&gt;
В логах геррита при этом появилась ошибка:&lt;br /&gt;
&lt;br /&gt;
ERROR com.google.gerrit.server.project.ChangeControl : Submit rule :(user,submit_rule) for change 3368 of test_repository output invalid result: submit(label(Code-Review,ok(_1F935754))). Reason: A label with the status Code-Review: OK must contain a user.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Как оказалось, перестали работать правила отправки изменений, причем даже те, которые есть в примерах.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Вот тут народ завел баг репорт:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://code.google.com/p/gerrit/issues/detail?id=2469&quot; target=&quot;_blank&quot;&gt;https://code.google.com/p/gerrit/issues/detail?id=2469&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
И чтобы не ходить по ссылке, рабочий пример правила 1+1=2, любезно предоставленный неким&amp;nbsp;&lt;a href=&quot;https://code.google.com/u/116754539882543378014/&quot; style=&quot;text-decoration: none;&quot;&gt;benjamin...@gmail.com&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
sum_list([], 0).&lt;br /&gt;
sum_list([H | Rest], Sum) :- sum_list(Rest,Tmp), Sum is H + Tmp.&lt;br /&gt;
&lt;br /&gt;
first_list([], _).&lt;br /&gt;
first_list([F], F).&lt;br /&gt;
first_list([F | Rest], F).&lt;br /&gt;
&lt;br /&gt;
score(Category, Score, User) :-&lt;br /&gt;
&amp;nbsp; gerrit:commit_label(label(Category, Score), User).&lt;br /&gt;
&lt;br /&gt;
add_category_min_score(In, Category, Min, &amp;nbsp;P) :-&lt;br /&gt;
&amp;nbsp; findall(Score, score(Category, Score, User), Scores),&lt;br /&gt;
&amp;nbsp; findall(User, score(Category, Score, User), Users),&lt;br /&gt;
&amp;nbsp; sum_list(Scores, Sum),&lt;br /&gt;
&amp;nbsp; Sum &amp;gt;= Min, !,&lt;br /&gt;
&amp;nbsp; first_list(Users, FirstUser),&lt;br /&gt;
&amp;nbsp; P = [label(Category, ok(FirstUser)) | In].&lt;br /&gt;
&lt;br /&gt;
add_category_min_score(In, Category, Min, P) :-&lt;br /&gt;
&amp;nbsp; P = [label(Category, need(Min)) | In].&lt;br /&gt;
&lt;br /&gt;
submit_rule(S) :-&lt;br /&gt;
&amp;nbsp; gerrit:default_submit(X),&lt;br /&gt;
&amp;nbsp; X =.. [submit | Ls],&lt;br /&gt;
&amp;nbsp; gerrit:remove_label(Ls, label(&#39;Code-Review&#39;, _), NoCR),&lt;br /&gt;
&amp;nbsp; add_category_min_score(NoCR, &#39;Code-Review&#39;, 2, Labels),&lt;br /&gt;
&amp;nbsp; S =.. [submit | Labels].&lt;br /&gt;
&lt;br /&gt;
До сих пор не понимаю, почему авторы gerrit&#39;a выбрали prolog.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/2228929200761189102/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2014/08/gerrit-29-1-1-2.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/2228929200761189102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/2228929200761189102'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2014/08/gerrit-29-1-1-2.html' title='gerrit 2.9 и правило 1 + 1 = 2'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-2878057644814760301</id><published>2014-02-10T13:25:00.001+04:00</published><updated>2014-02-10T13:25:14.189+04:00</updated><title type='text'>Импорт существующих git-репозиториев в gerrit</title><content type='html'>Если вам понадобилось перенести существующие репозитории в gerrit то делается это так:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;В gerrit создается новый проект, например &amp;nbsp;myProject.&lt;/li&gt;
&lt;li&gt;В уже имеющийся репозиторий добавляется remote MyProject.&lt;/li&gt;
&lt;li&gt;Заливаем набор изменений в MyProject.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;git remote add gerrit_MyProject /path/to/gerrit/repo/MyProject.git&lt;/li&gt;
&lt;li&gt;git push --mirror gerrit_MyProject&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/2878057644814760301/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2014/02/git-gerrit.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/2878057644814760301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/2878057644814760301'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2014/02/git-gerrit.html' title='Импорт существующих git-репозиториев в gerrit'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3493459120576612446</id><published>2013-12-27T08:08:00.000+04:00</published><updated>2013-12-27T08:08:59.220+04:00</updated><title type='text'>Обновление Apache с версии 2.2 на версию 2.4</title><content type='html'>Если при обновлении Apache с версии 2.2 на версию 2.4 у вас вдруг перестал работать Reverse Proxy на внутренний домен по https у которого есть самоподписанный сертификат, и выдается сообщение типа:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3;&quot;&gt;[proxy:error] [pid 21402] (502)Unknown error 502: [client 127.0.0.1:44485] AH01084: pass request body failed to 127.0.0.1:8081 (127.0.0.1)&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
То скорее всего дело в следующих опциях, которые в версии 2.2 по умолчанию были выставлены в off, а в 2.4 по умолчанию on:&lt;/div&gt;
&lt;br /&gt;
SSLProxyCheckPeerCN off&lt;br /&gt;
SSLProxyCheckPeerExpire off&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Новый Apache теперь по умолчанию не доверяет самоподписанным сертификатам.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3493459120576612446/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2013/12/apache-22-24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3493459120576612446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3493459120576612446'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2013/12/apache-22-24.html' title='Обновление Apache с версии 2.2 на версию 2.4'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3046571088258877986</id><published>2013-12-03T11:13:00.002+04:00</published><updated>2013-12-03T11:14:18.203+04:00</updated><title type='text'>Средства для CodeReview</title><content type='html'>Народ, подскажите кто какими средствами пользуется для CodeReview?&lt;br /&gt;
Мы пытались использовать &lt;a href=&quot;https://www.atlassian.com/software/crucible/overview&quot;&gt;Crucible&lt;/a&gt; - но оно нам не понравилось.&lt;br /&gt;
Сейчас мы выбираем между &lt;a href=&quot;http://www.reviewboard.org/&quot;&gt;ReviewBoard&lt;/a&gt; и &lt;a href=&quot;https://code.google.com/p/gerrit/&quot;&gt;Gerrit&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
И вообще, расскажите как этот процесс поставлен у вас?&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3046571088258877986/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2013/12/codereview.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3046571088258877986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3046571088258877986'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2013/12/codereview.html' title='Средства для CodeReview'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3601549175919526400</id><published>2013-07-01T10:09:00.000+04:00</published><updated>2013-07-01T10:09:12.886+04:00</updated><title type='text'>Немного про volatile</title><content type='html'>В языках C и C++ есть такое замечательно ключевое слово &lt;b&gt;&lt;i&gt;volatile&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
Согласно стандарту языка C, переменная обозначенная типом с квалификатором &lt;b&gt;volatile&lt;/b&gt;&amp;nbsp;может быть изменена каким-то неизвестным способом (may be modified in ways, unknown to the implementation).&lt;br /&gt;
&lt;br /&gt;
Допустим у нас есть вот такой код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;int a = 0;


int main (void) {

&amp;nbsp; &amp;nbsp;while (*(int*)&amp;amp;a == 0)

&amp;nbsp; &amp;nbsp; &amp;nbsp; /* do smth. */ ;

&amp;nbsp; &amp;nbsp;return 0;

}

&lt;/pre&gt;
&lt;br /&gt;
Компилятор, скорее всего во время оптимизации этого кода отбросит все ненужные шаги по инициализации переменной, проверки ее на 0 и т.д., т.к. для него очевидно что это просто бесконечный цикл, и можно сгенерировать следующий код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;00008294&amp;lt;main&amp;gt;:

&amp;nbsp; &amp;nbsp;8294:&amp;nbsp;&amp;nbsp; eafffff&amp;nbsp;&amp;nbsp;&amp;nbsp; b&amp;nbsp;&amp;nbsp;&amp;nbsp; 8294 &amp;lt;main&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Очевидно, что для того, чтобы заставить компилятор сгенерировать код, который бы проверял каждый раз значение переменной a, нужно использовать ключевое слово volatile при объявлении a&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;volatile int a = 0;


int main (void) {

&amp;nbsp; &amp;nbsp;while (*(int*)&amp;amp;a == 0)

&amp;nbsp; &amp;nbsp; &amp;nbsp; /* do smth. */ ;

&amp;nbsp; &amp;nbsp;return 0;

}

&lt;/pre&gt;
&lt;br /&gt;
Но если скомпилировать эту программу мы увидим все тот же бесконечный цикл:&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;00008294&amp;lt;main&amp;gt;:

&amp;nbsp; &amp;nbsp;8294:&amp;nbsp;&amp;nbsp; eafffff&amp;nbsp;&amp;nbsp;&amp;nbsp; b&amp;nbsp;&amp;nbsp;&amp;nbsp; 8294 &amp;lt;main&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Это все происходит из-за того, что при преобразовании в теле цикла к указателю на int, снимается квалификатор типа volatile, и когда мы разыменовываем указатель, то уже имеем переменную типа int, которая и сравнивается с 0.&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Поэтому, чтобы добиться желаемого эффекта volatile нужно употребить сразу в двух местах:&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;volatile int a = 0;


int main (void) {

&amp;nbsp; &amp;nbsp;while (*(volatile int*)&amp;amp;a == 0)

&amp;nbsp; &amp;nbsp; &amp;nbsp; /* do smth. */ ;

&amp;nbsp; &amp;nbsp;return 0;

}

&lt;/pre&gt;
&lt;br /&gt;
И тогда наконец-то мы получим то, что хотели:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:c&quot;&gt;00008294&amp;lt;main&amp;gt;:

      &amp;nbsp;&amp;nbsp; 8294:&amp;nbsp;&amp;nbsp; e59f2010&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, [pc, #16]&amp;nbsp;&amp;nbsp; ; 82ac
      &amp;lt;main+0x18&amp;gt;
      &amp;nbsp;&amp;nbsp; 8298:&amp;nbsp;&amp;nbsp; e5923000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2]
      &amp;nbsp;&amp;nbsp; 829c:&amp;nbsp;&amp;nbsp; e3530000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #0
      &amp;nbsp;&amp;nbsp; 82a0:&amp;nbsp;&amp;nbsp; 0afffffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8298 &amp;lt;main+0x4&amp;gt;
      &amp;nbsp;&amp;nbsp; 82a4:&amp;nbsp;&amp;nbsp; e3a00000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #0
      &amp;nbsp;&amp;nbsp; 82a8:&amp;nbsp;&amp;nbsp; e12fff1e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lr
      &amp;nbsp;&amp;nbsp; 82ac:&amp;nbsp;&amp;nbsp; 000104f4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; 0x000104f4
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3601549175919526400/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2013/07/volatile.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3601549175919526400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3601549175919526400'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2013/07/volatile.html' title='Немного про volatile'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-7775548184309528211</id><published>2012-07-23T23:47:00.001+04:00</published><updated>2013-06-03T20:26:33.016+04:00</updated><title type='text'>не работает ptrace  в Ubuntu</title><content type='html'>&lt;pre&gt;Обнаружили тут, что системный вызов ptrace не работает в Ubuntu&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;и вываливается с ошибкой &#39;operation not permitted&#39;.&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;Оказывается такое поведение по умолчанию включено в Ubuntu начиная с версии 10.10&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;Чтобы изменить поведение по умолчанию нужно немного поправить настройки ядра:&lt;/pre&gt;
&lt;pre&gt;echo 0 &amp;gt; &lt;tt class=&quot;backtick&quot;&gt;/proc/sys/kernel/yama/ptrace_scope&lt;/tt&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;Или поправить файлик:&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;/etc/sysctl.d/10-ptrace.conf &lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/7775548184309528211/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/07/ptrace-ubuntu.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/7775548184309528211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/7775548184309528211'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/07/ptrace-ubuntu.html' title='не работает ptrace  в Ubuntu'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-729001630558808527</id><published>2012-03-26T21:49:00.000+04:00</published><updated>2012-03-26T21:49:09.814+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gcc"/><title type='text'>Визуализация разработки компилятора GCC в 1989-2012</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Ребята с помощью утилиты &lt;a href=&quot;http://code.google.com/p/gource&quot; target=&quot;_blank&quot;&gt;Gource&lt;/a&gt; визуализировали процесс разработки компилятора gcc.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
На мой взгляд получилось и наглядно и красиво.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/ZEAlhVOZ8qQ?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span id=&quot;goog_95770785&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_95770786&quot;&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/729001630558808527/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/03/gcc-1989-2012.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/729001630558808527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/729001630558808527'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/03/gcc-1989-2012.html' title='Визуализация разработки компилятора GCC в 1989-2012'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-7469383748612572751</id><published>2012-03-22T17:12:00.000+04:00</published><updated>2012-03-22T18:11:31.666+04:00</updated><title type='text'>GCC - 25 лет.</title><content type='html'>Ровно 25 лет назад, в далеком 1987 году Ричард Столлман анонсировал первый публичный релиз набора компиляторов GCC.&lt;br /&gt;
&lt;br /&gt;
И к этой знаменательно дате приурочен выход новой версии GCC-4.7.0.&lt;br /&gt;
&lt;br /&gt;
Компилятор GCC-4.7.0 содержит много новых возможностей, которых не было в ветке 4.6.x.&lt;br /&gt;
Из основных можно отметить: &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Транзакционная память. &lt;/li&gt;
&lt;li&gt;Поддержка большого количества фич стандарта ISO C++11, таких как atomics и новая модель памяти, определяемы пользователем литералы и т.д.&lt;/li&gt;
&lt;li&gt;Значительно улучшен фреймворк оптимизации на этапе линковки (link-time optimization framework (LTO))&lt;/li&gt;
&lt;li&gt;Улучшена поддержка расширений формата отладочной информации DWARF ()&lt;/li&gt;
&lt;li&gt;Добавлена поддержка аппаратных платформ:&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Adapteva&#39;s Epiphany process&lt;/li&gt;
&lt;li&gt;National Semiconductor&#39;s CR16&amp;nbsp;&lt;/li&gt;
&lt;li&gt;TI&#39;s C6X&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Tilera&#39;s TILE-Gx and TILEPro.&lt;/li&gt;
&lt;li&gt;Intel Haswell&lt;/li&gt;
&lt;li&gt;AMD Piledriver&amp;nbsp;&lt;/li&gt;
&lt;li&gt;ARM Cortex-A7 family. &lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
Более подробно об изменениях можно почитать тут:&lt;br /&gt;
&lt;a href=&quot;http://gcc.gnu.org/gcc-4.7/changes.html&quot;&gt;http://gcc.gnu.org/gcc-4.7/changes.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/7469383748612572751/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/03/gcc-25.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/7469383748612572751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/7469383748612572751'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/03/gcc-25.html' title='GCC - 25 лет.'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-8788251590002300407</id><published>2012-03-22T16:42:00.000+04:00</published><updated>2012-03-23T13:35:56.268+04:00</updated><title type='text'>Как узнать версию библиотеки libc?</title><content type='html'>Достаточно просто запустить файл библиотеки:&lt;br /&gt;
&lt;br /&gt;
/lib/libc.so.6&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;GNU C Library stable release version 2.14.1, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.5.3.
Compiled on a Linux 3.2.0 system on 2012-01-18.
Available extensions:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C stubs add-on version 2.1.2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crypt add-on version 2.1 by Michael Glad and others
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gentoo patchset 3
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GNU Libidn by Simon Josefsson
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Native POSIX Threads Library by Ulrich Drepper et al
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Support for some architectures added on, not maintained in glibc core.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
&lt;http: bugs.html=&quot;&quot; libc=&quot;&quot; software=&quot;&quot; www.gnu.org=&quot;&quot;&gt;.&lt;/http:&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/8788251590002300407/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/03/libc.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8788251590002300407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/8788251590002300407'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/03/libc.html' title='Как узнать версию библиотеки libc?'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-6109325182543298022</id><published>2012-02-15T22:22:00.000+04:00</published><updated>2012-02-15T23:08:07.185+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AVX"/><category scheme="http://www.blogger.com/atom/ns#" term="Gentoo"/><category scheme="http://www.blogger.com/atom/ns#" term="libreoffice"/><category scheme="http://www.blogger.com/atom/ns#" term="SIMD"/><title type='text'>libreoffice + Gentoo = SIGILL</title><content type='html'>Ну вот как так можно собирать libreoffice-bin чтобы он падал по SIGILL? &lt;br /&gt;
После очередного обновления он именно этим и начал заниматься.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После расследования оказалось что падает при попытке исполнения  инструкции vmovsd, которая является SIMD инструкцией AVX расширения процессора Intel и&amp;nbsp; на моем процессоре  не поддерживается.&lt;br /&gt;
&lt;br /&gt;
Багрепорт и немного расследования:&lt;br /&gt;
&lt;a href=&quot;https://bugs.gentoo.org/show_bug.cgi?id=403931&quot;&gt;https://bugs.gentoo.org/show_bug.cgi?id=403931&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Лечится сборкой LO из исходников или откатом на предыдущую версию.</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/6109325182543298022/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/02/libreoffice-gentoo-sigill.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/6109325182543298022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/6109325182543298022'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/02/libreoffice-gentoo-sigill.html' title='libreoffice + Gentoo = SIGILL'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-4940959534233320080</id><published>2012-02-06T10:59:00.000+04:00</published><updated>2012-02-07T00:14:53.996+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Переезжаем с Postgresql 8.4 на Postgresql 9.1 в Ubuntu</title><content type='html'>&lt;br /&gt;
Делается это так:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;$ su - postgres&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Делаем backup на всякий случай: &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;$ pg_dumpall &amp;gt;backup_db&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Останавливаем сервер:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;$ pg_dropcluster --stop 9.1 main&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Переносим данные со старого сервера: &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;$ pg_upgradecluster 8.4 main&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Удаляем старый сервер: &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;$ pg_dropcluster 8.4 main&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;...&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Profit ! &lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/4940959534233320080/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/02/postgresql-84-postgresql-91-ubuntu.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4940959534233320080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4940959534233320080'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/02/postgresql-84-postgresql-91-ubuntu.html' title='Переезжаем с Postgresql 8.4 на Postgresql 9.1 в Ubuntu'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-1320465655075633456</id><published>2012-02-01T22:11:00.000+04:00</published><updated>2012-02-01T23:22:24.542+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gentoo"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="skype"/><title type='text'>Linux_x86_64 и Skype</title><content type='html'>21 век на дворе а skype до сих пор не распространяется для 64-х битных&lt;br /&gt;
линуксов.&lt;br /&gt;
Постоянно приходится извращаться, потому что при каждом обновлении в Gentoo появляются проблемы с камерой и каждый раз при обновлении&lt;br /&gt;
приходится добавлять в /usr/bin/skype вот такую строчку:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;export LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Чего-то надоело уже.&lt;br /&gt;
&lt;br /&gt;
Может кто знает, чем его можно заменить, но так, чтобы было возможность общаться с контактами из skype&#39;а?&lt;br /&gt;
Есть какой нибудь транспорт, как например в xmpp?&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;p.s. Пост был&amp;nbsp; из будущего&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/1320465655075633456/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2012/02/linuxx8664-skype.html#comment-form' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/1320465655075633456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/1320465655075633456'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2012/02/linuxx8664-skype.html' title='Linux_x86_64 и Skype'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-4548633846221172801</id><published>2012-01-27T09:42:00.000+04:00</published><updated>2012-02-02T13:37:55.788+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="trac"/><title type='text'>Настройка Apache + git + trac</title><content type='html'>&lt;br /&gt;
Для хранения кода своих мелких проектов я частенько использую репозитории обычно или git или svn и систему багтрекинга trac. &lt;br /&gt;
&lt;br /&gt;
Ниже для того, чтобы не забыть как это настраивается опишу все шаги на примере Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;1. Установка необходимого софта.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем весь необходимый софт:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ apt-get install apache2 git subversion postgresql trac python-psycopg2 libapache2-mod-python&lt;/div&gt;
&lt;br /&gt;
Включаем в апаче модули, которые нужны для доступа к репозиторию: &lt;br /&gt;
&lt;span style=&quot;background-color: black; color: #cccccc;&quot;&gt;$ a2enmod dav dav_fs &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;2. Настройка git репозитория &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Для примера создам тестовый репозитория с именем my_proj.&lt;br /&gt;
Для этого на сервер создаем каталог где у нас будут храниться данные,&lt;br /&gt;
как для bare репозитори, так и для обычного &lt;br /&gt;
&lt;div style=&quot;color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ mkdir -p /proj/git_repos_bare&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ cd /proj/git_repos_bare&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ git init --bare my_proj_init&lt;/div&gt;
&lt;span style=&quot;background-color: black;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
Далее создаем каталог, где будут храниться репозитории:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ mkdir -p /proj/git_repos&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ cd /proj/git_repos&lt;/div&gt;
&lt;br /&gt;
Создаем пустой репозиторий:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ git clone --bare /proj/git_repos_bare/my_proj_init my_proj&lt;/div&gt;
&lt;br /&gt;
Даем права на доступ в репозиторий пользователю www-data от имени&lt;br /&gt;
которого будет хозяйничать апач:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ chown -R www-data:www-data /proj/git_repos&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3. Настройка Trac&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Для того чтобы настроить trac сначала потребуется настроить базу данных в которой он будет хранить информацию о коммитах, логи и прочее.&lt;br /&gt;
Trac поддерживает много всяких БД: SQLite, MySQL, PostgreSQL.&lt;br /&gt;
Мне больше всего нравится PostgreSQL, но и с любой другой БД проблем возникнуть не должно.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.1 Настройка postgres:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Создаем пользователя:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ psql -d template1 -U postgres&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ template1=# CREATE USER trac WITH PASSWORD &#39;trac&#39;;&lt;/div&gt;
&lt;br /&gt;
Создаем базу в которой trac будет хранить свои данные:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ template1=# CREATE DATABASE &quot;trac-my_proj&quot; WITH OWNER = trac TABLESPACE = pg_default CONNECTION LIMIT = -1;&lt;/div&gt;
&lt;br /&gt;
На этом этапе настройка базы данных завершена.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.2 Настройка Trac&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
Теперь нужно настроить окружение Trac.&lt;br /&gt;
&lt;br /&gt;
Создаем каталог где будут храниться окружения Trac&#39;а:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ mkdir -p /var/trac&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ cd /var/trac&lt;/div&gt;
&lt;br /&gt;
Настраиваем окружение:&lt;br /&gt;
trac-admin {Название проекта} initenv {Имя репозитория} {Строка соединения с БД} {Тип репозитория} {Путь к репозиторию}&lt;br /&gt;
&lt;br /&gt;
В нашем случае это будет выглядеть так:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ trac-admin my_proj initenv my_proj postgres://trac:trac@localhost/trac-my_proj git /proj/git_repos/my_proj&lt;/div&gt;
&lt;br /&gt;
Добавляем пользователя который будет являться администратором в Trac :&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ trac-admin my_proj permission add test TRAC_ADMIN&lt;/div&gt;
&lt;br /&gt;
Разрешаем апачу хозяйничать в каталоге с файлами Trac&#39;а:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ chown -R www-data:www-data /var/trac/my_proj&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3.3 Установка плагина для git репозитория&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Поумолчанию trac в качестве системы контроля версий поддерживает только subversion, поэтому нужно установить дополнительный плагин для того, чтобы можно было использовать git репозиторий:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ easy_install http://github.com/hvr/trac-git-plugin/tarball/master&lt;/div&gt;
&lt;br /&gt;
Чтобы проверить что Trac заработал нужно запустить tracd:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ tracd --port 8000 /var/trac/my_proj&lt;/div&gt;
&lt;br /&gt;
Теперь на результаты деятельности можно посмотреть через браузер:&lt;br /&gt;
&lt;b&gt;http://127.0.0.1:8000/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Если все ок, то должна отобразиться заглавная Wiki страничка.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. Настройка Apache&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь для того чтобы иметь унифицированные механизм аутентификации и доступа к репозиториям и баг трекеру настраиваем apache.&lt;br /&gt;
&lt;br /&gt;
Сначала добавим пользователя которому нужно дать доступ в репозитории и в баг трекер:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ htpasswd -c /var/trac/users.auth test&lt;/div&gt;
&lt;br /&gt;
Вводим пароль и готово.&lt;br /&gt;
&lt;br /&gt;
Далее правим конфигурационный файл апача:&lt;br /&gt;
&lt;i&gt; /etc/apache2/sites-enabled/000-default&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Если же хочется использовать https, то править нужно:&lt;br /&gt;
&lt;i&gt; /etc/apache2/sites-enabled/default-ssl&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Сначала устанавливаем&amp;nbsp; Python handler который будет выводить список проектов при заходе на страничку yourdomain/trac:&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;&amp;lt;Location /trac/ &amp;gt; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetHandler mod_python
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonInterpreter main_interpreter
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonHandler trac.web.modpython_frontend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonOption TracEnvParentDir /var/trac
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonOption TracUriRoot /trac/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonOption PYTHON_EGG_CACHE /tmp/.eggs

&amp;lt;/Location&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
После этого, нужно сказать апачу чтобы он не разрешал неавторизованным пользователям ходить в баг трекер.&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LocationMatch /trac/*&amp;gt; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthName &quot;Input your username and password to access.&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUserFile /var/trac/users.auth
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LocationMatch&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
Далее настраиваем git.&lt;br /&gt;
Прописываем переменные окружения, в которых указываем корень каталога с репозиториями, http-бэкенд и прописываем алиас пути к репозиториям через web: &lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv GIT_PROJECT_ROOT /proj/git_repos

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv GIT_HTTP_EXPORT_ALL

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptAlias /gitweb &quot;/usr/lib/cgi-bin/gitweb.cgi&quot;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptAlias /git/ /usr/lib/git-core/git-http-backend

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alias /git &quot;/proj/git_repos&quot;

&lt;/pre&gt;
&lt;br /&gt;
и запрещаем вход без пароля:&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;&amp;lt;Locationmatch /git/*&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAV on
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthName &quot;Git Access&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUserFile /var/trac/users.auth
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user

&amp;lt;/LocationMatch&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Делаем в каталоге с репозиторием:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ git update-server-info&lt;/div&gt;
&lt;br /&gt;
И ,наконец, перезапускаем апач:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ service apache2 restart&lt;/div&gt;
&lt;br /&gt;
На этом настройка апача завершена.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5. Проверка что все работает.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем что репозиторий работает:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
$ git clone http://test@mydomain/git/my_proj&lt;/div&gt;
&lt;div style=&quot;background-color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
Cloning into &#39;my_proj&#39;...&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
Password for &#39;mydomain&#39;:&lt;/div&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
warning: You appear to have cloned an empty repository.&lt;/div&gt;
&lt;br /&gt;
Добавляем файлы в репозиторий, и делаем начальный коммит:&lt;br /&gt;
&lt;div style=&quot;background-color: black; color: #cccccc;&quot;&gt;
git push origin master:master&lt;/div&gt;
&lt;br /&gt;
Вот как-то так. &lt;br /&gt;
&lt;br /&gt;
Если возникли какие-то проблемы, то посмотреть что идет не так можно в логах:&lt;br /&gt;
/var/log/apache2</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/4548633846221172801/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2011/10/apache-git-trac.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4548633846221172801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/4548633846221172801'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2011/10/apache-git-trac.html' title='Настройка Apache + git + trac'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4876407785098439896.post-3438564653283482462</id><published>2011-12-21T10:00:00.000+04:00</published><updated>2011-12-21T10:00:08.932+04:00</updated><title type='text'>Code @ C++: Find sum of elements in the array</title><content type='html'>&lt;a href=&quot;http://jia3ep.blogspot.com/2011/04/find-sum-of-elements-in-array.html?spref=bl&quot;&gt;Code @ C++: Find sum of elements in the array&lt;/a&gt;: Наткнулся на задачу, которую предлагают в Yandex на собеседовании:  Ниже приведены три варианта суммирования чисел с плавающей точкой (предп...</content><link rel='replies' type='application/atom+xml' href='http://lindev.blogspot.com/feeds/3438564653283482462/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://lindev.blogspot.com/2011/12/code-c-find-sum-of-elements-in-array.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3438564653283482462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4876407785098439896/posts/default/3438564653283482462'/><link rel='alternate' type='text/html' href='http://lindev.blogspot.com/2011/12/code-c-find-sum-of-elements-in-array.html' title='Code @ C++: Find sum of elements in the array'/><author><name>Alex</name><uri>http://www.blogger.com/profile/07688849026396952965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>