<?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>stinger&#039;s thoughts &#187; Linux/UNIX</title>
	<atom:link href="http://www.sthoughts.com/category/linux_unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sthoughts.com</link>
	<description>a place that bites better</description>
	<lastBuildDate>Fri, 09 Apr 2010 14:16:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Save KDE Session Manually</title>
		<link>http://www.sthoughts.com/2009/10/29/save-kde-session-manually/</link>
		<comments>http://www.sthoughts.com/2009/10/29/save-kde-session-manually/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 09:29:56 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=573</guid>
		<description><![CDATA[<p>Наскоро, след едно от поредните обновявания на Debian testing, се сблъсках с нещо изключително дразнещо. След logout графичната среда, поради незнайно каква причина, отказваше да запомни настройките, които й бях задал за уиджетите по десктопа, wallpaper и т.н. След logout, при нов login се оказвах винаги с desktop-настройките по подразбиране. В старата версия на KDE имаше бутон Save Session, който вършеше работа, обаче във версия 4 изглежда разработчиците са сметнали наличието на подобен бутон за излишно.</p>]]></description>
			<content:encoded><![CDATA[<p>Наскоро, след едно от поредните обновявания на Debian testing, се сблъсках с нещо изключително дразнещо. След logout графичната среда, поради незнайно каква причина, отказваше да запомни настройките, които й бях задал за уиджетите по десктопа, wallpaper и т.н. След logout, при нов login се оказвах винаги с desktop-настройките по подразбиране. В старата версия на KDE имаше бутон Save Session, който вършеше работа, обаче във версия 4 изглежда разработчиците са сметнали наличието на подобен бутон за излишно.</p>
<p>Държа да отбележа, че проблема, според мен, се дължи по-скоро на промени в начина по който се записват сессите, отколкото на бъг в самото KDE 4, понеже досега всичко беше наред и подобни неща не се бяха случвали.</p>
<p>Както и да е, факт е, подобно поведение може да изкара от кожата всеки потребител. Проблемът беше как да запиша настройките по desktop-а си и да накарам session manager-а да ги ползва при login.</p>
<p>Оказа се, че макар и да е изчезнал бутонът Save session, DBus call-ът си седи, което и беше решението на проблема ми. Ето го и магическият ред, който оправи нещата:</p>
<pre>dbus-send --type=method_call --dest=org.kde.ksmserver \
/KSMServer org.kde.KSMServerInterface.saveCurrentSession</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/10/29/save-kde-session-manually/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Random passwords</title>
		<link>http://www.sthoughts.com/2009/10/06/random-passwords/</link>
		<comments>http://www.sthoughts.com/2009/10/06/random-passwords/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 07:36:57 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=571</guid>
		<description><![CDATA[<p>Една бърза идейка за генериране на произволни последователности от символи, която можете да използвате за генериране на пароли в конзола под Linux-системи. Числото в края на командата определя дължината на генерираната парола (в случая - 64 символа).</p>

<pre>dd if=/dev/urandom count=1 2> /dev/null &#124; uuencode -m - &#124;  \
sed -ne 2p &#124; cut -c-64</pre>

<p>А ето и резултата от стартирането й 5 пъти:</p>

<pre>zMqzLNZAzVlQWMvEztpgfeY289TEtdUFbPVB8nXoo1PvdUsKVKSHHBmFo7p8
Xr9JfBcb5hb5oKqNre6kF6DXTVAcUycCW8ru+BpqvsxRlJ57dji7MHfoFcN1
5no2uWDeJtkHpO2qm71pyMx7Bt7pomBiJqrILVgPZckXUvMpqzeQPDiwRQ8v
kdTExBa0jFZrQZFjJ8TeQ9AaL0m3M2vWXymPxcrPn4HtepZT0EQh1nzoiA5x
TUPbIeyEluKEOGSVOP33wY8DiJVnWu2Mn8ElMbwYMt/TH08sTsJVOOEN7qkV</pre>]]></description>
			<content:encoded><![CDATA[<p>Една бърза идейка за генериране на произволни последователности от символи, която можете да използвате за генериране на пароли в конзола под Linux-системи. Числото в края на командата определя дължината на генерираната парола (в случая &#8211; 64 символа).</p>
<pre>dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - |  \
sed -ne 2p | cut -c-64</pre>
<p>А ето и резултата от стартирането й 5 пъти:</p>
<pre>zMqzLNZAzVlQWMvEztpgfeY289TEtdUFbPVB8nXoo1PvdUsKVKSHHBmFo7p8
Xr9JfBcb5hb5oKqNre6kF6DXTVAcUycCW8ru+BpqvsxRlJ57dji7MHfoFcN1
5no2uWDeJtkHpO2qm71pyMx7Bt7pomBiJqrILVgPZckXUvMpqzeQPDiwRQ8v
kdTExBa0jFZrQZFjJ8TeQ9AaL0m3M2vWXymPxcrPn4HtepZT0EQh1nzoiA5x
TUPbIeyEluKEOGSVOP33wY8DiJVnWu2Mn8ElMbwYMt/TH08sTsJVOOEN7qkV</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/10/06/random-passwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dependancy Based Boot</title>
		<link>http://www.sthoughts.com/2009/10/02/dependancy-based-boot/</link>
		<comments>http://www.sthoughts.com/2009/10/02/dependancy-based-boot/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 09:57:01 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=570</guid>
		<description><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" /> Една от най-важните промени в Debian testing, напоследък, е миграцията към dependancy based boot. И понеже рискът да прескочите смело някои от съобщенията в конзолата е голям, в крайна сметка може да се окажете със система, която изобщо на може да стартира.</p> 

<p>Затова навсякъде където видите съобщение от сорта на:</p>
<pre>package <em>[somepackagename]</em> removed but not purged</pre>
<p>изпълнете като <code>root</code></p>
<pre>dpkg --purge <em>[somepackagename]</em></pre>

<p>При мен, обаче, освен тези по-дребни проблеми, имаше и един малко по-сериозен.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" /> Една от най-важните промени в Debian testing, напоследък, е миграцията към dependancy based boot. И понеже рискът да прескочите смело някои от съобщенията в конзолата е голям, в крайна сметка може да се окажете със система, която изобщо на може да стартира.</p>
<p>Затова навсякъде където видите съобщение от сорта на:</p>
<pre>package <em>[somepackagename]</em> removed but not purged</pre>
<p>изпълнете като <code>root</code></p>
<pre>dpkg --purge <em>[somepackagename]</em></pre>
<p>При мен, обаче, освен тези по-дребни проблеми, имаше и един малко по-сериозен.</p>
<p>Едно от съобщенията гласеше:</p>
<pre>insserv: warning: script Slibdevmapper1.02 missing LSB tags
and overrides</pre>
<p>След малко ровене в google намерих въпросния header:</p>
<pre>### BEGIN INIT INFO
# Provides:          libdevmapper
# Required-Start:    modutils
# Required-Stop:     modutils
# Should-Start:      hotplug discover udev devfsd
# Default-Start:     S 2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO</pre>
<p>Добавих го в <code>/etc/init.d/libdevmapper1.02</code> веднага под shebang-а (първият ред, започващ с <code>#!</code>) и, за да си конфигурирам успешно миграцията към dependancy based boot, пуснах отново</p>
<pre>dpkg-reconfigure sysv-rc</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/10/02/dependancy-based-boot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian on Sony Vaio NR270N</title>
		<link>http://www.sthoughts.com/2009/02/19/debian-on-sony-vaio-vgn-nr270n/</link>
		<comments>http://www.sthoughts.com/2009/02/19/debian-on-sony-vaio-vgn-nr270n/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 08:39:33 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sony vaio]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=556</guid>
		<description><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" />Преди доста време се бях оплакал от не особено добрата съвместимост на Debian testing с тогава новото Sony Vaio VGN-NR270N. Проблемите ми бяха свързани с нещица от сорта на неработещи функционални клавиши за управление на backlight-а на дисплея, както и дразнещият feature звука от вградените колонки да не спира при включването на слушалки в line out-a. Днес се сетих, че не е лоша идея да споделя как се оправих и с двата проблема… Предупреждавам, постът е дълъг, пълен с команди, или изхода от тях, има и малко listing-и, така че всеки трезвомислещ човек, който няма ядове с някои от тези два проблема, би следвало да го прескочи с чиста съвест.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" />Преди доста време се бях оплакал от не особено добрата съвместимост на Debian testing с тогава новото Sony Vaio VGN-NR270N. Проблемите ми бяха свързани с нещица от сорта на неработещи функционални клавиши за управление на backlight-а на дисплея, както и дразнещият feature звука от вградените колонки да не спира при включването на слушалки в line out-a. Днес се сетих, че не е лоша идея да споделя как се оправих и с двата проблема… Предупреждавам, постът е дълъг, пълен с команди, или изхода от тях, има и малко listing-и, така че всеки трезвомислещ човек, който няма ядове с някои от тези два проблема, би следвало да го прескочи с чиста съвест.</p>
<p>За проблема със слушалките &#8211; в <code>/etc/modprobe.d/alsa-base</code> трябваше да конфигурирам драйвера <code>snd_hda_intel</code> по следния начин:</p>
<pre>options snd_hda_intel model=sony-assamd</pre>
<p>После с rmmod разкарах заредените модули свързани със snd_hda_intel и ги презаредих с което приключи с този проблем.</p>
<p>С осветлението на дисплея, обаче, нещата не бяха толкова розови. Специалните клавиши за него изобщо не работеха. За да получа кодовете на brightness up (Fn+F5) и brightness down (Fn+F6) пуснах от Konsole в KDE <code>xev</code> и с фокус върху него натиснах последователно двете комбинации. Резултата беше следното:</p>
<pre>KeyRelease event, serial 31, synthetic NO, window 0x1a00001,
    root 0x78, subw 0x0, time 3516679, (535,672), root:(538,694),
    state 0x0, keycode 101 (keysym 0xffd1, F20), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
    .... (skipped) ....
KeyRelease event, serial 34, synthetic NO, window 0x1a00001,
    root 0x78, subw 0x0, time 3520374, (535,672), root:(538,694),
    state 0x0, keycode 212 (keysym 0xffd2, F21), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
</pre>
<p>Kодовете, които ми трябваха бяха 101 и 212 (втората секция на всеки трети ред от KeyRelease event-a). Следващата стъпка беше да ги добавя във файла <code>.xmodmaprc</code> в <code>/home/stinger</code>.</p>
<pre># /home/stinger/.xmodmaprc
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 101 = F20
keycode 212 = F21</pre>
<p>Това, обаче не ми реши проблема изобщо. За да накарам тези клавиши да работят, в KDE Control Center > Regional &#038; Acessibility > Keyboard Actions си създадох два action-a от тип Keyboard Shortcut -> Command/URL (simple). Първият кръстих Brightness Up с Shortcut Key F21 и action <code>/etc/acpi/sonybright.sh up</code>, а вторият &#8211; Brightness Down с Shortcut Key F20 и action <code>/etc/acpi/sonybright.sh down</code>.</p>
<p>Сега вече командата се извикваше, но пак не вършеше никаква работа <img src='http://www.sthoughts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Причината беше, че търси за текущата стойност на осветеността на дисплея в <code><span>/sys/class/backlight/sony/</span><wbr><span class="word_break"></span>brightness</code>, а поне на моята машина на съществуваше изобщо директория <code>sony</code> в <code>/sys/class/backlight</code>.</p>
<p>С малко човъркане из Google се спрях на бързото решение с ползването на вградения в X инструмент за управление на backlight-a, кръстен… <code>xbacklight</code>. Копирах си неработещия файл:</p>
<pre>cp /etc/acpi/sonybright.sh /etc/acpi/sonybright.sh.orig</pre>
<p>и на негово място създадох файл <code>sonybright.sh</code> със следното съдържание:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #000000; font-weight: bold;">case</span> $<span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">in</span>
   down<span style="color: #7a0874; font-weight: bold;">&#41;</span>
      xbacklight <span style="color: #660033;">-time</span> <span style="color: #000000;">100</span> <span style="color: #660033;">-steps</span> <span style="color: #000000;">12</span> <span style="color: #660033;">-dec</span> <span style="color: #000000;">12.5</span>
   <span style="color: #000000; font-weight: bold;">;;</span>
   up<span style="color: #7a0874; font-weight: bold;">&#41;</span>
      xbacklight <span style="color: #660033;">-time</span> <span style="color: #000000;">100</span> <span style="color: #660033;">-steps</span> <span style="color: #000000;">12</span> <span style="color: #660033;">-inc</span> <span style="color: #000000;">12.5</span>
   <span style="color: #000000; font-weight: bold;">;;</span>
   <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage /etc/acpi/sonybright.sh {up|down}&quot;</span>
   <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span></pre></div></div>

<p>Забелязах обаче нещо странно &#8211; ACPI не хващаше event-a от клавишите. С малко четене разбрах, че Sony имат два модела контролери за notebooks &#8211; първият беше SNC (Sony Network Controller), вторият &#8211; SPIC. Моята машина беше със SNC, затова mod-нах леко два файла в <code>/etc/acpi/events</code>, докато не получих това:</p>
<pre># /etc/acpi/events/sony-brightness-up

event=sony/hotkey SNC 00000001 00000011
action=/etc/acpi/sonybright.sh up</pre>
<pre># /etc/acpi/events/sony-brightness-down

event=sony/hotkey SNC 00000001 00000010
action=/etc/acpi/sonybright.sh down</pre>
<p>Рестартирах acpi демона и пуснах следната команда, тествайки клавишите:</p>
<pre>acpi_listen</pre>
<p>Клавишите проработиха (поне връщаха event-и от вида <code>sony/hotkey SNC 00000001 00000010</code>), но <code>xbacklight</code> не вършеше никаква работа, защото достъпът до X като root беше забранен. Реших да го оставя така и да разчитам на KDE Input Actions за управление на клавишните комбинации към скрипта. Ако искате да имате управление през ACPI &#8211; разрешете root достъпа до X, или в конзола, като нормален потребител, напишете:</p>
<pre>xhost +</pre>
<p>За мен лично сигурността е по-важна от глезотиите. След това остана само да изпълня следното и всичко тръгна по вода:</p>
<pre>xrandr --output LVDS --set BACKLIGHT_CONTROL native</pre>
<p>За да не ми се налага всеки път като заредя KDE да пиша въпросната команда я сложих в края на <code>.profile</code> в <code>/home/stinger</code>. Малка персонализация на решението беше да сложа и команда, която променяше осветлението на 50% от интензитета му при всеки login, защото 100% ми идваха в повече. Затова, последните два реда на <code>.profile</code> изглеждат така:</p>
<pre>xrandr --output LVDS --set BACKLIGHT_CONTROL native
xbacklight -set 50</pre>
<p>С това машинката започна да си управлява осветлението на екрана, вярно само под KDE, но все пак е нещо. В GNOME получавам notification за статуса на осветлението, дори стойността му в notification-a се променя, но <code>xbacklight</code> не се изпълнява. При разрешаване на root access към X-a нещата ще проработят и там, а и в X изобщо, гарантирам… Друг е въпроса дали това е цената, която сте готови да платите за тази глезотийка. В крайна сметка, винаги в конзола можете да напишете нещо от сорта на:</p>
<pre>xbacklight -set 50</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/02/19/debian-on-sony-vaio-vgn-nr270n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The hardest MySQL backup</title>
		<link>http://www.sthoughts.com/2009/02/18/the-hardest-mysql-backup/</link>
		<comments>http://www.sthoughts.com/2009/02/18/the-hardest-mysql-backup/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 08:11:19 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=555</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/mysql_logo.gif" alt="MySQL" /></div>
<p>Преди повече от половин година стария ми компютър предаде богу дух и остави след себе си купчина железария, която продължава да събира прах. Заместникът му - едно Sony Vaio - засега се справя отлично и единственото с което си спомням старата машина са няколкото лични проекта, останали заровени по хардовете й. Единият от тях беше Flex проект за личното ми портфолио, който видя бял свят <a href="http://www.sthoughts.com/?page_id=370" target="_blank" title="stinger's portfolio">на този адрес</a>. Този, който ми беше по-важен, обаче, по всички закони на Мърфи страдаше от липса на SQL dump от базата данни.</p>]]></description>
			<content:encoded><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/mysql_logo.gif" alt="MySQL" /></div>
<p>Преди повече от половин година стария ми компютър предаде богу дух и остави след себе си купчина железария, която продължава да събира прах. Заместникът му &#8211; едно Sony Vaio &#8211; засега се справя отлично и единственото с което си спомням старата машина са няколкото лични проекта, останали заровени по хардовете й. Единият от тях беше Flex проект за личното ми портфолио, който видя бял свят <a href="http://www.sthoughts.com/?page_id=370" target="_blank" title="stinger's portfolio">на този адрес</a>. Този, който ми беше по-важен, обаче, по всички закони на Мърфи страдаше от липса на SQL dump от базата данни.</p>
<p>Понеже съм мързелив, първата ми работа беше да си копирам <code>.frm</code> файловете от DB-то на другия компютър, само за да установя, че съм ползвам InnoDB като storage engine. Неприятното в случая беше, че InnoDB пази доста голяма част от данните за базата във файла <code>ibdata1</code>, и възстановяването по този начин ставаше почти невъзможно.</p>
<p>Втората опция беше да ползвам <code>chroot</code> за да стартирам MySQL от харда на умрялата машина, но първият опит завърши със следното:</p>
<pre>/dev/null: Permission denied</pre>
<p>Проверката показа следното:</p>
<pre>$ ls -Al /dev | grep null
crw-rw-rw- 1 root root      1,   3 2009-01-18 19:50 null</pre>
<p>Device-a си стоеше, но беше неизползваем по някаква причина. Оказа се, че при mount по подразбиране всичко devices са неизползваеми (nodev) и решението на моя проблем беше ето това:</p>
<pre>mount -o remount,dev /dev/sdb2</pre>
<p>След като <code>remount</code>-нах устройството и <code>chroot</code>-нах вътре пробвах да пусна <code>mysql</code>, но се оказа, че нямам <code>/proc</code> в jail-a. Успях да го създам по следния начин:</p>
<pre>mount -t proc none /mnt/olddeb</pre>
<p>Пускането на mysql сега обаче ревеше за съществуващ <code>PID</code>. Оказа се, че съм забравил да спра локалния mysql, този който е извън <code>chroot</code>-a и след като го направих, този от старата машина запали без никакви ядове. След това dump-a мина по вода, успях да си прехвърля файла и да си възстановя целия проект.</p>
<p>Предполагам горното ще бъде полезно на всеки, който се опитва да пуска услуги от съсипана по една или друга причина дистрибуция, стига поне основните неща от нея да работят. За мен играта с <code>chroot</code> беше нова, но ми даде разни идейки за “затваряне” на несигурни услуги.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/02/18/the-hardest-mysql-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian GNU/Linux 5.0 is here</title>
		<link>http://www.sthoughts.com/2009/02/15/debian-gnulinux-50-is-here/</link>
		<comments>http://www.sthoughts.com/2009/02/15/debian-gnulinux-50-is-here/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 09:39:05 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=552</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/lennybanner_indexed.png" alt="Debian/GNU Linux 5.0" /></div>

<p>Вчерашният Свети Валентин се е оказал target дата за пускането на дълго отлаганата нова версия на най-голямата Linux-дистрибуция - Debian. Всеки, запознат с проекта знае, че излизането на нова версия си е жива мъка - докато бъдат удовлтворени всички изисквания, относно качеството на софтуера, бинарните драйвери и проблемни лицензи обикновено минават поне 5 месеца. И този път случаят е такъв - версия 5.0 трябваше да се появи още септември миналата година, но поради ред причини (най-вече release critical bugs и един дебат, свързан с т.нар. blob драйвери) нещата се позабавиха леко. Ако не знаете, всяка от версиите на Debian е именувана на някой от героите от филмчето на Pixar - Toy Story - и версия 5.0 носи кодовото име Lenny.</p>]]></description>
			<content:encoded><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/lennybanner_indexed.png" alt="Debian/GNU Linux 5.0" /></div>
<p>Вчерашният Свети Валентин се е оказал target дата за пускането на дълго отлаганата нова версия на най-голямата Linux-дистрибуция &#8211; Debian. Всеки, запознат с проекта знае, че излизането на нова версия си е жива мъка &#8211; докато бъдат удовлтворени всички изисквания, относно качеството на софтуера, бинарните драйвери и проблемни лицензи обикновено минават поне 5 месеца. И този път случаят е такъв &#8211; версия 5.0 трябваше да се появи още септември миналата година, но поради ред причини (най-вече release critical bugs и един дебат, свързан с т.нар. blob драйвери) нещата се позабавиха леко. Ако не знаете, всяка от версиите на Debian е именувана на някой от героите от филмчето на Pixar &#8211; Toy Story &#8211; и версия 5.0 носи кодовото име Lenny.</p>
<p>Чакането, обаче, си струва всеки ден, защото едни от най-ключовите неща в този release са свързани със затягането на сигурността &#8211; инсталатора проверява и обновява системата още преди първото стартиране, отделни пакети, засягащи сигурността, са компилирани със специални опции за сигурност на GCC, а като цяло “чистата” система след инсталация отваря много по-малко портове и значително по-малко от приложенията се ползват със setuid root.</p>
<p>Като фен на testing branch-a отдавна ползвам нещо, близко до 5.0, и съм много доволен както от производителността, така и от стабилността на системата. Излизането на Lenny, обаче означава и придвижване на нещата от experimental в unstable, а на тези от unstable &#8211; в testing, което гарантира следващите два-три месеца да са много интересни. Относно сегашният stable &#8211; с този набор пакети не виждам по-добър избор на операционна система за hosting-компаниите. Ако ви е интересно какво се случва преди пускането на release &#8211; ето log от работата на един от членовете на екипа за пускане на Lenny:</p>
<blockquote><ul>
<li>[10:23] turned off all cronjobs</li>
<li>[10:43] Release Team GO</li>
<li>[12:00] etch is now oldstable</li>
<li>[13:07] lenny is now stable</li>
<li>[13:28] squeeze is born (and lot of the work for it was parallel with the lenny work)</li>
<li>[14:18] the cd-builder host gets an exclusive push so people can start building cd images.</li>
<li> [15:34] squeeze is now grown up enough to be ready for the world. Most of the other work that had to be on the ftp-master machine before we are done is also done. ftp-master is ready for regular work again (but won’t do any yet).</li>
<li>[15:40] Lets start the work for the security archive</li>
<li>[16:54] The security archive is ready.</li>
</ul>
</blockquote>
<p>Това, което е ясно от цялата работа е, че следващата версия на Debian ще носи името Squeeze. В името на рекорда Lenny идва във вариант от по 32 CD-та или 5 DVD-та за всяка от 12-те поддържани архитектури. Да ни е честито!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2009/02/15/debian-gnulinux-50-is-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO make a FreeBSD DVD</title>
		<link>http://www.sthoughts.com/2008/05/28/howto-make-a-freebsd-dvd/</link>
		<comments>http://www.sthoughts.com/2008/05/28/howto-make-a-freebsd-dvd/#comments</comments>
		<pubDate>Wed, 28 May 2008 08:02:35 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=380</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/fbsd-logo.jpg" alt="FreeBSD" /></div>

<p>Наскоро се натъкнах на следната ситуация: приятел ме помоли да му запиша FreeBSD, защото искал да се пробва седмица-две с нея на личния си компютър. Това, което ме учуди при свалянето на дисковете от сайта на проекта е липсата на DVD ISO image. Малко търсене в Google ме убеди, че инсталация във формат на DVD е налична само за закупуване, а за свободно сваляне разполагате с избор от три инсталационни диска и един с документация.</p>]]></description>
			<content:encoded><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/fbsd-logo.jpg" alt="FreeBSD" /></div>
<p>Наскоро се натъкнах на следната ситуация: приятел ме помоли да му запиша FreeBSD, защото искал да се пробва седмица-две с нея на личния си компютър. Това, което ме учуди при свалянето на дисковете от сайта на проекта е липсата на DVD ISO image. Малко търсене в Google ме убеди, че инсталация във формат на DVD е налична само за закупуване, а за свободно сваляне разполагате с избор от три инсталационни диска и един с документация.</p>
<p>Все пак живеем в 21-ви век, където 4 CD-та със сигурност струват повече от 1 DVD, а и инсталацията от DVD е в пъти по-бърза от варианта с CD, затова потърсих още малко из Google и с това, което открих успях да събера всичките 3 инсталационни диска, както и този с документацията на едно DVD.</p>
<p>Стъпките, които са необходими са сравнително елементарни &#8211; след като изтеглите CD ISO-тата за вашата архитектура (<code>i386</code> или <code>amd64</code>), отворете конзола и в домашната си директория придобийте <code>root</code>-права:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~
$ <span style="color: #c20cb9; font-weight: bold;">su</span>
Password:
<span style="color: #666666; font-style: italic;">#</span></pre></div></div>

<p>След това, като <code>root</code> изпълнете следните команди:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> fbsd7
$ <span style="color: #7a0874; font-weight: bold;">cd</span> fbsd7
$ <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> iso9660 <span style="color: #660033;">-o</span> loop ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">7.0</span>-RELEASE-i386-docs.iso <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst <span style="color: #660033;">-cf</span> - . <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xf</span> - 
$ <span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> iso9660 <span style="color: #660033;">-o</span> loop ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">7.0</span>-RELEASE-i386-disc3.iso <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst <span style="color: #660033;">-cf</span> - . <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xf</span> - 
$ <span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> iso9660 <span style="color: #660033;">-o</span> loop ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">7.0</span>-RELEASE-i386-disc2.iso <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst <span style="color: #660033;">-cf</span> - . <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xf</span> - 
$ <span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> iso9660 <span style="color: #660033;">-o</span> loop ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">7.0</span>-RELEASE-i386-disc1.iso <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst <span style="color: #660033;">-cf</span> - . <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xf</span> - 
$ <span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>tst</pre></div></div>

<p>Ако сте предпочели друга подредба при <code>mount</code>-ване на дисковете, уверете се, че вторият ред във файла <code>cdrom.inf</code> е set-нат на 1:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cat</span> cdrom.inf 
CD_VERSION = <span style="color: #000000;">7.0</span>-RELEASE
CD_VOLUME = <span style="color: #000000;">1</span></pre></div></div>

<p>След това, отново като <code>root</code>, изпълнете следните команди:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> packages
$ <span style="color: #c20cb9; font-weight: bold;">cat</span> INDEX <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">&quot;s/||2/||1/g&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ix
$ <span style="color: #c20cb9; font-weight: bold;">cat</span> ix <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">&quot;s/||3/||1/g&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ix2
$ <span style="color: #c20cb9; font-weight: bold;">mv</span> ix2 INDEX 
$ <span style="color: #c20cb9; font-weight: bold;">rm</span> ix
$ <span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>..
$ <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-r</span> fbsd7<span style="color: #000000; font-weight: bold;">/</span>rr_moved</pre></div></div>

<p>Сега вече имате цялата директорийна структура, необходима за записването на DVD-то. Можете да го запишете на диск със следната команда (заменете устройството с това на Вашата система и сменете скоростта за записване, ако устойството Ви е по-бавно, или диска изисква по-малка скорост) :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ growisofs <span style="color: #660033;">-Z</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>cd0 <span style="color: #660033;">-speed</span> <span style="color: #000000;">16</span> <span style="color: #660033;">-J</span> <span style="color: #660033;">-R</span> \
<span style="color: #660033;">-no-emul-boot</span> <span style="color: #660033;">-b</span> boot<span style="color: #000000; font-weight: bold;">/</span>cdboot <span style="color: #660033;">-iso-level</span> <span style="color: #000000;">3</span> fbsd7</pre></div></div>

<p>След като тествате DVD-то, можете спокойно да изтриете както свалените ISO-та, така и директорията <code>fbsd7</code>, тъй като няма да са Ви необходими повече.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2008/05/28/howto-make-a-freebsd-dvd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slackware 12.1</title>
		<link>http://www.sthoughts.com/2008/05/08/slackware-121/</link>
		<comments>http://www.sthoughts.com/2008/05/08/slackware-121/#comments</comments>
		<pubDate>Thu, 08 May 2008 14:12:10 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[favorites]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=376</guid>
		<description><![CDATA[<p><img src="http://www.sthoughts.com/uploads/slackware.jpg" style="float: right; padding-left: 12px" />Почивните дни по Гергьовден очевидно са били само за местна консумация. За 4-те дена в които бях далеч от обсега на каквито и да било средства за осведомяване се случиха доста неща, основно в областта на отворения код. Доста странно се почувствах когато, сядайки за сефте пред компютъра в края на почивния период, научих за появата на нова стабилна версия на една от най-уважаваните от мен дистрибуции - Slackware.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sthoughts.com/uploads/slackware.jpg" style="float: right; padding-left: 12px" />Почивните дни по Гергьовден очевидно са били само за местна консумация. За 4-те дена в които бях далеч от обсега на каквито и да било средства за осведомяване се случиха доста неща, основно в областта на отворения код. Доста странно се почувствах когато, сядайки за сефте пред компютъра в края на почивния период, научих за появата на нова стабилна версия на една от най-уважаваните от мен дистрибуции &#8211; Slackware.</p>
<p>Както обикновено повечето промени са &#8220;под повърхността&#8221;. Няма лъскави скрийншоти, няма я и типичната за други дистрибуции пропаганда в мрежата&#8230;. Всичко е като при всеки предишен release. И този път в инсталационните дискове ще намерите най-новите версии на KDE, XFCE, ядрото и развойните инструменти. И, както е било досега, нито едно от приложенията не е patch-вано или модифицирано по какъвто и било начин. Slackware Linux е известен именно с това &#8211; ядрото е във версията от kernel.org, а desktop-а не предлага дори буквичка брендиране <img src='http://www.sthoughts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Всъщност, единственото място, на което разработчиците на Slackware са модифицирали някакъв пакет е <a href="http://www.sthoughts.com/uploads/lilo.png" rel="lightbox[376]">boot-екрана на LInux LOader (LILO)</a>, а ето и каква е причината:</p>
<blockquote><p>Added a simple splash screen (the default one had too many colors and was making my eyes hurt <img src='http://www.sthoughts.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Thanks to the unknown Slacker who submitted the idea ages ago when we were dead-set against &#8220;branding&#8221;.</p></blockquote>
<p>Инсталационната процедура отново изисква малко команден ред, но, ако следвате текстовите инструкции от инсталационния диск, моята препоръка е за разделяне на харддиска да използвате по-удобния инструмент <code>cfdisk</code>, вместо <code>fdisk</code>. Другата ми препоръка е задължтелно след инсталация на системата да отделите време за прочитането на файла <code>CHANGES_AND_HINTS.txt</code>, намиращ се в основната директория на инсталационния диск. Оттам можете да научите за включването (най-накрая) на HAL (Hardware Abstraction Layer) в дистрибуцията, как да го накарате да работи с KDE, за някои аргументи относно избора на ядро, както и разни дребни подсказки свързани с организацията на системата.</p>
<p>Макар повече от година да съм с Debian, 4-годишния период със Slackware всъщност ме научи на доста от тънкостите в работата с Linux. В резултат на това съм абсолютно съгласен с твърдението &#8220;once a slacker &#8211; forever a slacker&#8221;. Още повече, Slackware в момента се води най-старата оцеляваща Linux-дистрибуция и аз определено не съм единствения, оценил качествата й.</p>
<p>Та честито на всички фенове, аз чакам удобен момент да почовъркам повече DVD-то&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2008/05/08/slackware-121/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real Player 11 for Linux</title>
		<link>http://www.sthoughts.com/2008/04/23/real-player-11-for-linux/</link>
		<comments>http://www.sthoughts.com/2008/04/23/real-player-11-for-linux/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 14:50:19 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=374</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/nautilus.jpg" alt="Remove Real Player file associations and restore defaults" /></div>

<p>11-тата версия на Real Player за Linux беше анонсирана преди повече от година, но стана факт едва в началото на миналата седмица. С тези темпове разработчиците могат да са абсолютно спокойни - вече са изтървали влака. MPlayer отдавна предлага Real Media support, а и <a href="http://mplayerplug-in.sourceforge.net/" target="_blank">плъгина му за Firefox</a> е по-стабилен. Вероятно за да компенсират изоставането, хората от Real не само не са се постарали да добавят нещо интересно, но и типично по Windows-маниер са опитали да повлияят на environment-a дотолкова, че да досадят на потребителите повече от прилично...</p>]]></description>
			<content:encoded><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/nautilus.jpg" alt="Remove Real Player file associations and restore defaults" /></div>
<p>11-тата версия на Real Player за Linux беше анонсирана преди повече от година, но стана факт едва в началото на миналата седмица. С тези темпове разработчиците могат да са абсолютно спокойни &#8211; вече са изтървали влака. MPlayer отдавна предлага Real Media support, а и <a href="http://mplayerplug-in.sourceforge.net/" target="_blank">плъгина му за Firefox</a> е по-стабилен. Вероятно за да компенсират изоставането, хората от Real не само не са се постарали да добавят нещо интересно, но и типично по Windows-маниер са опитали да повлияят на environment-a дотолкова, че да досадят на потребителите повече от прилично&#8230;</p>
<p>Колко пъти ви се е случвало в Windows да инсталирате някакъв софтуер и да установите, че файловите асоциации и иконите за определен тип файлове са променени в резултат на инсталацията? Редовен номер е Update на Media Player да смени асоциацията на всякакви медийни формати без да се интересува, че искате да слушате MP3-ките си с WinAmp, примерно. Е, Real Player за Linux, в новата си версия, &#8220;страда&#8221; от същата &#8220;болест&#8221;&#8230;</p>
<p>Може да видите &#8220;симптомите&#8221; веднага след инсталация под GNOME или, ако като мен ползвате KDE, при стартиране на Nautilus или Save-диалога на Firefox. Лошото при GNOME е, че асоциациите обикновено са базирани на единица и, макар да имате възможност да промените иконата на произволен файл, няма удобна графична възможност за промяна на иконите на група файлове, в зависимост от техния тип.</p>
<p>За щастие, Linux инсталацията на Real Player е базирана на скриптове и възстановяването на &#8220;оригиналните&#8221; асоциации и икони не е кой знае колко сложно. В директорията, където сте инсталирали програмата (при мен <code>/usr/local/RealPlayer</code>) има поддиректория, наречена <code>postinst</code>, a в нея освен инсталационни, има и деинсталационни скриптове. </p>
<p>За да възстановите файловите си асоциации, просто се log-нете като root и изпълнете следното:</p>
<pre>./uninstall_icon_resource.sh
./unregister_mime_types.sh</pre>
<p>Това не премахва RealPlayer, а само досадните икони и файловите асоциации, така, че MP3-ките Ви ще продължат да се отварят с предпочитаното от Вас преди инсталирането му приложение.</p>
<p>Така и не разбрах едно нещо, обаче &#8211; така или иначе версията е забавена с година, толкова ли е било трудно да сложат два checkbox-a в инсталационните панели с опции &#8220;Associate Real Player with supported media types&#8221; и &#8220;Install Real Player media icons&#8221;, примерно? Мистерия&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2008/04/23/real-player-11-for-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux gets some AIR</title>
		<link>http://www.sthoughts.com/2008/04/03/linux-gets-some-air/</link>
		<comments>http://www.sthoughts.com/2008/04/03/linux-gets-some-air/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 15:23:18 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=372</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/air_icon.jpeg" alt="Adobe AIR" /></div>

<p>С появата на Flex 3, потребителите на GNU/Linux се докоснаха до света на RIA, поне според начина по който виждат нещата хората от Adobe. Една досадна подробност беше отсъствието на AIR (Adobe Integrated Runtime), което ограничаваше Flex-потребителите само до web-базирани разработки. Макар и alpha версия, AIR вече е наличен от сайта <a href="http://labs.adobe.com/downloads/air_linux.html" target="_blank">labs.adobe.com</a> и за Linux, след като преди месец дебютира на Windows и Mac OS.</p>]]></description>
			<content:encoded><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/air_icon.jpeg" alt="Adobe AIR" /></div>
<p>С появата на Flex 3, потребителите на GNU/Linux се докоснаха до света на RIA, поне според начина по който виждат нещата хората от Adobe. Една досадна подробност беше отсъствието на AIR (Adobe Integrated Runtime), което ограничаваше Flex-потребителите само до web-базирани разработки. Макар и alpha версия, AIR вече е наличен от сайта <a href="http://labs.adobe.com/downloads/air_linux.html" target="_blank">labs.adobe.com</a> и за Linux, след като преди месец дебютира на платформите Windows и Mac OS.</p>
<p>Въпреки, че е все още alpha стадий, runtime-а предлага доста добри възможности, лесна инсталация и солидна документация, а липсващата функционалност ще бъде добавена в следващите няколко месеца. Приложения, написани за AIR вече се намират на много места из мрежата, а възможността освен Flex за създаване на приложения да се използва и HTML/JavaScript дава на framework-a отлична гъвкавост.</p>
<p>Изглежда, битката с Microsoft е накарала мениджмънта на Adobe да вземе някои доста интересни решения. Редом с обявяването на alpha-та, от press release-а на фирмата обявиха <a href="http://opensource.adobe.com/wiki/display/site/2008/03/31/Adobe+joins+the+Linux+Foundation" target="_blank">присъединяване към Linux Foundation</a>, а като капак на всичко части от продукта LifeCycle бяха пуснати като Open Source под името <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank">BlazeDS</a>. Междувременно <a href="http://labs.adobe.com/technologies/flex/flexbuilder_linux/" target="_blank">Flex Builder за Linux</a> стигна до версия Alpha 3, осигурявайки поддръжка на AIR, a според главния софтуерен архитект на Cold Fusion, продукта ще последва съдбата на Flex, отваряйки кода си.</p>
<p>Хубаво нещо е конкуренцията, особено когато от цялата работа печеливш се оказва крайният потребител <img src='http://www.sthoughts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2008/04/03/linux-gets-some-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian: Using Compiz with KDE</title>
		<link>http://www.sthoughts.com/2007/09/19/compiz-052-and-kde-357-on-debian/</link>
		<comments>http://www.sthoughts.com/2007/09/19/compiz-052-and-kde-357-on-debian/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 14:56:29 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=344</guid>
		<description><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" alt=""/>От днес Debian testing се гордее с последната development версия на <a href="http://en.wikipedia.org/wiki/Compiz" target="_blank">compiz</a>. Всъщност "гордее" е много силен израз, понеже поддръжката на compiz е меко казано бъгава. Все пак, пакетът във версия 0.5.2 е доста по-добър от предшественика си и след малко пипване дори става за що-годе нормална употреба.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;" alt=""/>От днес Debian testing се гордее с последната development версия на <a href="http://en.wikipedia.org/wiki/Compiz" target="_blank">compiz</a>. Всъщност &#8220;гордее&#8221; е много силен израз, понеже поддръжката на compiz е меко казано бъгава. Все пак, пакетът във версия 0.5.2 е доста по-добър от предшественика си и след малко пипване дори става за що-годе нормална употреба.</p>
<p>Понеже така или иначе не ползвах 0.2.2 най-вече заради проблеми с производителността, първото нещо което ми направи сериозно впечатление е количеството труд, вложено в тази посока. Новият compiz е доста &#8220;по-пъргав&#8221; и дори досадният проблем с видеокартите на nvidia, при който след превключване във виртуален терминал и връщане към X-сесия машината увисва, вече има решение. За да нямате проблеми от този род, единственото необходимо е през <code>gconf-editor</code> да премахнете checkmark-а в опцията:</p>
<pre>/apps/compiz/general/screen0/options/detect_refresh_rate</pre>
<p>Един леко дразнещ пропуск от страна на maintainer-a на пакета е свързан с невъзможността да се избере window decorator измежду <code>gtk-window-decorator</code> (наличен по подразбиране), <code>kde-window-decorator</code> и <code>compiz-decorator</code>. Понеже работя с KDE,  опцията gnome-window-decorator не ме устройва кой-знае колко, а и kwin има доста полезни настройки за размерите и позиционирането на прозорците при стартиране на приложения. Поради тази причина ми се наложи да създам patch, който редактира файла <code>/usr/bin/compiz</code>, указвайки използване на <code>kde-window-decorator</code> вместо този по подразбиране. Всъщност по-чистото решение е да има 3 различни файла за всеки от decorator-ите, със съдържание, подобно на сегашният <code>compiz</code> (промерно <code>compiz.kde</code>, <code>compiz.gtk</code> и <code>compiz.native</code>), които да се сменят чрез <code>update-alternatives</code>, а самият пакет да поддържа кофигуриране на decorator-ите по време на инсталация, но подобно решение изглежда не е на дневен ред за хората, поддържащи текущите deb пакети. Предполагам по времето, когато testing стане със статус freeze подобни неща ще намерят място при финалните фиксове преди официалния release.</p>
<p class="download">Download <a href="http://www.sthoughts.com/dl/compiz.patch">compiz.patch</a> (0,5 KB)</p>
<p>Ако като мен използвате KDE, изпълнете горния patch като root в директория <code>/usr/bin</code> (разбира се преди това трябва да сте инсталирали <code>compiz-kde</code> от някое от repository-тата):</p>
<pre># cd /usr/bin
# patch -p0 &#060; /path/to/compiz.patch</pre>
<p>Когато обаче стартирате compiz ще останете неприятно изненадани от поведението на pager-а в KDE. Нямам си идея чия умна глава е решила, че всеки Desktop трябва да има по 4 workspaces, обаче 16 бутона за вируални дектопи ми идват в повече. На всичко отгоре изглежда pager-a, компилиран с текущата версия на KDE не е съвместим с compiz, и ако не искате да имате проблеми с поведението му, можете да инсталирате следния пакет:</p>
<p class="download">Download <a href="http://www.sthoughts.com/dl/kicker-compiz_3.5.4-1_i386.deb">kicker-compiz_3.5.4-1_i386.deb</a> (70,3 KB)</p>
<p>В него ще намерите patch-нат Pager аплет с име &#8220;Desktop Preview &#038 Pager &#8211; Compiz&#8221;, който <strong>НЕ ЗАМЕНЯ</strong> оригиналните файлове на pager-a от KDE и може да се използва като негов заместител при работа в compiz-среда. Ако решите да го използвате ще трябва да укажете в настройките му да използва само един Desktop, като и през <code>gconf-editor</code> ще се наложи да сетнете на &#8220;1&#8243; (без кавички) опцията:</p>
<pre>/apps/metacity/general/num_workspaces</pre>
<p>С настройките по-горе KDE се държи прилично, използва OpenGL ефектите на compiz при доста добра производителност дори с вехта видеокарта от вида на GeForce4 MX 440, но заради проблемите с Pager така и не успява да ме убеди, че си заслужава пускането им заедно в реална среда, поне на този етап. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2007/09/19/compiz-052-and-kde-357-on-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Splashy on Debian</title>
		<link>http://www.sthoughts.com/2007/08/17/splashy-on-debian/</link>
		<comments>http://www.sthoughts.com/2007/08/17/splashy-on-debian/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 08:38:13 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=333</guid>
		<description><![CDATA[<p><img src="http://www.sthoughts.com/uploads/topicdebian.gif" style="float: right; padding-left: 10px;">В сравнение с комерсиалните операционни системи, процесът на стартиране при Linux изглежда като излязъл от каменната ера - макар и атрактивни и полезни, съобщенията в конзолата рядко говорят нещо на обикновения потребител. Bootsplash изглежда скоро ще отиде в небитието, тъй като вече има достоен наследник - Splashy.</p>]]></description>
			<content:encoded><![CDATA[<p>Спомням си как, когато започнах да ползвам Linux, всички дистрибуции ползваха текстов режим по време на зареждане. Всъщност, всички, освен една &#8211; SuSE. По онова време SuSE използваше картинка за фон, върху който излизаха съобщенията от стартиращия процес, придавайки малко по-завършен вид на продукта. После се появи технологията <a href="http://www.bootsplash.org/" target="_blank">bootsplash,</a> която, въпреки че беше добра като идея, така и не успя да се наложи убедително, понеже изискваше patch-ване на ядрото, при това за всяка нова версия се налагаше да изчакате поне 2-3 дена период за изготвянето на patch-a.</p>
<p>В сравнение с комерсиалните операционни системи, процесът на стартиране при Linux изглежда като излязъл от каменната ера &#8211; макар и атрактивни и полезни, съобщенията в конзолата рядко говорят нещо на обикновения потребител. Bootsplash изглежда скоро ще отиде в небитието, тъй като вече има достоен наследник &#8211; <a href="http://splashy.alioth.debian.org/wiki/" target="_blank">Splashy</a>.</p>
<p>Рожба на проекта Debian, Splashy представлява user-space приложение, което не изисква patch-ване на ядрото, и може да работи с initramfs, правейки процеса на стартиране доста по-приятен за окото. Като недостатък (заради все още ранния стадий на разработка) мога да посоча работата му във verbose-режим, както и някои недоразуемния в управлението на шрифтовете, но съм сигурен, че с набирането на повече потребителска маса ще има видими подобрения в тази насока. Можете да погледнете <a href="http://splashy.alioth.debian.org/wiki/installation" target="_blank">ръководството за инсталиране</a> за подробно описание на процеса.</p>
<p>Макар, че сайтове от сорта на <a href="http://kde-look.org/" target="_blank">kde-look.org</a> и <a href="http://gnome-look.org/" target="_blank">gnome-look.org</a> вече предлагат теми за splashy, аз лично така и не успях да си харесам нещо, което да отразява виждането ми за boot екран на личният ми компютър. За сметка на това splashy е отлично документиран, предлага инструмент за направа на теми, както и такъв за тестване, без да се налага да рестартирате машината си, и всеки който не харесва темите по подразбиране може да си направи собствена.</p>
<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/splashy.jpg" alt="Swirl on black - splashy theme preview" title="Swirl on black - splashy theme preview"/></div>
<p>Моят вариант за стартиращ екран можете да видите на картинката по-горе, а самата тема може да свалите оттук:</p>
<p class="download">Download <a href="http://www.sthoughts.com/dl/swirlonblack.tar.gz">swirlonblack.tar.gz</a> (Compressed gzip archive, 280 KB)</p>
<p>За да я инсталирате изпълнете следното като root:</p>
<pre>cd /etc/splashy/themes
tar xzvf /path/to/downloaded/swirlonblack.tar.gz
splashy_config -s swirlonblack</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2007/08/17/splashy-on-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LIRC with dev/input</title>
		<link>http://www.sthoughts.com/2007/08/15/lirc-with-devinput/</link>
		<comments>http://www.sthoughts.com/2007/08/15/lirc-with-devinput/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 08:36:53 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lirc]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=332</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/rc.jpg" alt=""/></div>
<p>Ако някога сте ползвали дистанционно за управление на музикалния си плейър, или при гледане на филми с компютър, със сигурност ще оцените липсата му в първия момент, в който то не работи. </p>]]></description>
			<content:encoded><![CDATA[<p>Неведнъж съм имал проблеми с <code>lirc_gpio</code> &#8211; драйвера за работа с дистанционните управления на някои от най-популярните  TV Tuner-и. В последните версии на ядрото, секцията за поддръжка на видеокамери, TV tuner-и и всякакви подобни мултимедийни устройства, е обект на непрестанни промени, и в крайна сметка се стигна дотам, че <code>lirc_gpio</code> се оказа абсолютно неадекватен към текущата версия &#8211; 2.6.22. Опитът за зареждане на драйвера спира със следното съобщение:</p>
<pre># modprobe lirc_gpio
FATAL: Error inserting lirc_gpio
(/lib/modules/2.6.22/misc/lirc_gpio.ko):
Unknown symbol in module, or unknown parameter (see dmesg)</pre>
<p>Причината за невъзможността на <code>lirc_gpio</code> дори да зареди е в някои премахнати символи в <code>bttv</code> секцията на ядрото (<a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3bfb7398e2554fb54acb2900b81de144eb41c3ac">виж тук</a> за повече информация). Работата е там, че въпросните символи не са премахнати от раз &#8211; поне 6-7 версии назад зареждането на <code>lirc_gpio</code> беше придружено от краткия, но ясен текст:</p>
<pre>The bttv_* interface is obsolete and will go away, please use the
new, sysfs based interface instead.</pre>
<p>Разбира се, първата работа, след като вече имах работещо ядро 2.6.22, беше да пратя съобщение до mailing list-а на LIRC за проблема. Изглежда нещата са по-сериозни, или точно този драйвер в момента няма разработчик, защото вече почти месец няма fix на въпросния проблем.</p>
<p>Ако някога сте ползвали дистанционно за управление на музикалния си плейър, или при гледане на филми с компютър, със сигурност ще оцените липсата му в първия момент, в който то не работи. Понеже ми писна от дребните проблемчета при <code>lirc_gpio</code>, започнах да преглеждам варианти за използване на дистанционното без да ми се налага да прибягвам до услугите на въпросния драйвер.</p>
<p>Оказа се, че някои от картите в <code>bttv</code> регистрират собствен event device, който всъщност представлява интерфейс към дистанционното управление на тунер-а. Наличието или липсата на event device зависи от опцията <code>card</code> при зареждане на драйвера (за някои от картите е известно адресирането на infrared приемника, за други липсва). При мен досега <code>card</code> беше установена на 13 и, както можете да предположите, event device нямаше. Преглеждайки списъка с поддържани карти (файлът <code>CARDLIST.bttv</code> в директория <code>Documentation/video4linux</code> от изходния код на ядрото), установих, че варианти за моят модел са опциите 6 и 41. Пробата с 41 не даде резултат, но с 6 нещата започнаха да си идват на мястото. Във файла <code>/etc/modprobe.d/bttv</code> сложих следните опции:</p>
<pre>alias char-major-81     videodev
alias char-major-81-0   bttv
options bttv            card=6 radio=1 pll=1 tuner=5</pre>
<p>С тях, при зареждането си, драйвера започна да създава и необходимият event device:</p>
<pre>$ cat /proc/bus/input/devices
...
I: Bus=0001 Vendor=109e Product=036e Version=0001
N: Name="bttv IR (card=6)"
P: Phys=pci-0000:00:0a.0/ir0
S: Sysfs=/class/input/input2
U: Uniq=
H: Handlers=kbd event2
B: EV=100003
B: KEY=40fc310 82140000 0 0 0 0 2048000 180 4001 9e0000 0 0 ff</pre>
<p>След като имах готовия интерфейс, оставаше да накарам LIRC да работи с него. Небходима ми беше малко информация от списъка с input-устройствата по-горе. Тя се намира на реда, започващ с H: и показва името на устройството, създадено в <code>/dev/input</code>. В моят случай устройството е <code>event2</code> и за да създам <code>lircd.conf</code> за него, изпълних следното:</p>
<pre># irrecord -H dev/input -d /dev/input/event2 lircd.conf</pre>
<p>Следвайки инструкциите създадох файла и го копирах в <code>/etc/lirc</code>, замествайки старият <code>lircd.conf</code>. Последната стъпка беше да редактирам файла <code>hardware.conf</code> в същата директория. Ето как изглеждаше той след промените:</p>
<pre># /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=false

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="dev/input"
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0
# will be automatically used instead
DEVICE="/dev/input/by-path/pci-0000:00:0a.0--event-ir"
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""</pre>
<p>Обърнете внимание на реда, който започва с <code>DEVICE=</code>. Първоначално там седеше <code>DEVICE="/dev/input/event2"</code>, но това доведе до объркване с event device на мишката. За да не ми се налага да пипам <code>udev</code>-правила използвах автоматично създаваният symlink към всеки event device в директория <code>/dev/input/by-path</code>. Ако не сте сигурни кое от устройствата в тази директория е дистанционното, или имате повече от един TV tuner &#8211; погледнете реда, започващ с P: при изпълнението на командата:</p>
<pre>cat /proc/bus/input/devices
...
P: Phys=pci-0000:00:0a.0/ir0
...
</pre>
<p>При мен, както виждате, дистанционно се регистрира като pci-0000:00:0a.0/ir0, и в <code>/dev/input/by_path</code> имам кореспондиращ symlink към <code>/dev/input/event2</code> с име <code>pci-0000:00:0a.0--event-ir</code>. След като нанесете промените, запишете <code>hardware.conf</code> и рестартирайте LIRC:</p>
<pre>/etc/init.d/lirc restart</pre>
<p>При мен това доведе до успех &#8211; LIRC захапа дистанционното и без никакви грижи започна да реагира на сигналите от него без необходимост да ползвам проблемния драйвер <code>lirc_gpio</code>, от което съм повече от доволен.</p>
<p><strong>Update (04.04.2008):</strong> Версия 0.8.2 на lirc за Debian идва с преработен init script, който проверява за наличие на модулите, указани в реда <code>MODULES=</code> на файла <code>/etc/lirc/hardware.conf</code>. Поддръжката на <code>/dev/input</code> устройства не изисква наличието на никакви модули от lirc пакета, затова реда изглежда така:</p>
<pre>MODULES=""</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2007/08/15/lirc-with-devinput/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Colorify grep output</title>
		<link>http://www.sthoughts.com/2007/08/10/colorify-grep-output/</link>
		<comments>http://www.sthoughts.com/2007/08/10/colorify-grep-output/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 10:43:29 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=330</guid>
		<description><![CDATA[<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/grep.jpg" alt="colorful grep output" /></div>
<p>Не зная колко често Ви се е налагало да търсите сред файловете в дадена директория (дори включително и в нейните поддиректории) за съдържанието на определена дума или комбинация, но лично аз в ежедневната си работа поне два-три пъти дневно се възползвам от услугите на <code>grep</code> за целта.</p>]]></description>
			<content:encoded><![CDATA[<p>Заради невероятно бързата си и точна работа, <code>grep</code> вероятно е най-полезният инструмент при търсене на определен низ в списък от резултати, файлове или устройства и е сред причините, заради които харесвам командният ред в Linux/Unix. Не зная колко често Ви се е налагало да търсите сред файловете в дадена директория (дори включително и в нейните поддиректории) за съдържанието на определена дума или комбинация, но лично аз в ежедневната си работа поне два-три пъти дневно се възползвам от услугите на <code>grep</code> за целта.</p>
<p>Преди време попаднах на статия, в която се споменаваха някои от по-рядко използваните опции от функционалността на програмата. Една от тях е оцветяване на резултатите, подобно на начина по който някои от търсачките оцветяват ключовите думи, по които извършвате търсенето си. Ето как изглежда резултатът от работата на <code>grep</code> при използване на оцветяване:</p>
<div class="serendipity_center"><img src="http://www.sthoughts.com/uploads/grep.jpg" alt="colorful grep output" /></div>
<p>За да накарате <code>grep</code> да оцветява резултатите е достатъчно да добавите следните два реда във файла <code>~/.bashrc</code> (разбира се, ако ползвате друг shell ще трябва да добавите опциите във файла, от който конфигурирате поведението му):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GREP_OPTIONS</span>=<span style="color: #ff0000;">'--color=always'</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GREP_COLOR</span>=<span style="color: #000000;">32</span></pre></div></div>

<p>Стойността на <code>GREP_COLOR</code> е цифра между 30 и 37 и означава, както следва:</p>
<pre>30	black
31	red
32	green
33	yellow
34	blue
35	purple
36	cyan
37	white</pre>
<p>Не вярвам да има някой, който да се усъмни в полезността на оцветяването на срещанията &#8211; на мен поне със сигурност ми помагат да се ориентирам в пъти по-бързо сред върнатите резултати. Bonus feature е опцията <code> --line-buffered</code> която буферира всеки ред, правейки търсенията в дълги текстови файлове значително по-бързи.</p>
<p><strong>Update:</strong> Преди малко установих, че set-ването на <code>GREP_OPTIONS</code> като root причинява проблем при компилиране на ядрото &#8211; при изпълнение на <code>make modules</code> процесът спира веднага след навлизане във втория стадий на компилацията, издавайки следното съобщение:</p>
<pre>Building modules, stage 2.
MODPOST 0 modules</pre>
<p>Изглежда make-файловете на ядрото ползват променливата <code>GREP_OPTIONS</code> по някакъв по-специфичен начин и решението е да избегнете директното й set-ване, като за целта е достатъчно във файла <code>~/.bashrc</code>,  да замените реда</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GREP_OPTIONS</span>=<span style="color: #ff0000;">'--color=always'</span></pre></div></div>

<p>с този:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">grep</span></span>=<span style="color: #ff0000;">'grep --color=always'</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2007/08/10/colorify-grep-output/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails: Apache 2.2.3 vs Nginx 0.5.30</title>
		<link>http://www.sthoughts.com/2007/08/06/rails-on-debian-with-mongrel_cluster-and-nginx/</link>
		<comments>http://www.sthoughts.com/2007/08/06/rails-on-debian-with-mongrel_cluster-and-nginx/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 11:56:30 +0000</pubDate>
		<dc:creator>stinger</dc:creator>
				<category><![CDATA[Linux/UNIX]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.sthoughts.com/?p=329</guid>
		<description><![CDATA[<div class="center"><img src="http://www.sthoughts.com/uploads/rails_perf_t.jpg" alt="" /></div>
<p>Тест на производителността на Apache 2.2 и Nginx в ролята на proxy сървъри пред mongrel_cluster за хостинг на Ruby On Rails приложения</p>]]></description>
			<content:encoded><![CDATA[<p>Разглеждайки форуми и блогове, посветени на оптимизирането на производителността на решенията за хостинг на Rails попаднах на непознат продукт &#8211; <a href="http://www.nginx.net">Nginx</a>. Оказа се, че според много benchmark-ове, Nginx е решението, осигуряващо върхова производителност между <code>mongrel_cluster</code> и Интернет. От друга страна, Apache се хвалят с пренаписания си <code>mod_proxy</code>, който в комбинация с версия 2.2 на сървъра дава много по-добра производителност. </p>
<p>Реших да тествам и двата варианта като proxy-та пред mongrel cluster-а, seeing is believing &#8216;дето викат хората. За целта използвах собствената си Debian-базирана машина. Вярно, цифрите в Benchmark-a не са за завиждане, но и хардуера не е първа младост.</p>
<p>За конфигуриране на Mongrel cluster, вижте страхотната <a href="http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/" target="_blank">статия на Coda Hale</a>.  За коректна Debian-базирана инсталация на Rails &#8211; <a href="http://www.debian-administration.org/articles/329">вижте първата част от тази статия</a></p>
<p>Макар че в Debian има пакет за Nginx, в този за версия 0.5.26 има проблем &#8211; процесът по деинсталиране спира с досадна грешка, налагайки ви да редактирате init script-a за да можете да изчистите пакета в случай че не Ви е необходим повече. Поради тази причина изтеглих source на Nginx (версия 5.0.30 към момента на написване на статията) и компилирах собствен <code>.deb</code> пакет, ползвайки конфигурационните опции на официалния maintainer.</p>
<p class="download">Download <a href="http://www.sthoughts.com/dl/nginx_0.5.30-1_i386.deb" target="_blank">nginx_0.5.30-1_i386.deb</a> (232 KB)</p>
<p>За да инсталирате пакета, първо спрете процеса на Apache, ако имате пуснат такъв:</p>
<pre>/etc/init.d/apache2 stop</pre>
<p>След това изпълнете следното:</p>
<pre>dpkg -i nginx_0.5.30-1_i386.deb</pre>
<p>В слуай, че искате да премахнете Nginx, след като вече е инсталиран:</p>
<pre>dpkg --purge nginx</pre>
<p>От конфигурационните файлове, които използвах за benchmark-a, съм направил полуготови темплейти. Заместете навсякъде във файловете <code>projectname</code> с името на вашия сървър, а <code>yourproject</code> с името на проекта. И двете решения разчитат, че приложението Ви е разположено (изпълнен е cap deploy) в директория <code>/var/www/apps/</code>:</p>
<p class="download">Apache virtual host config template (<a href="http://www.sthoughts.com/dl/rails_project_apache.conf" target="_blank">rails_project_apache.conf</a> &#8211; 2.1 KB)<br />Nginx virtual host config template (<a href="http://www.sthoughts.com/dl/rails_project_nginx.conf" target="_blank">rails_project_nginx.conf</a> &#8211; 0.9 KB)<br />Nginx daemon config example (<a href="http://www.sthoughts.com/dl/nginx.conf" target="_blank">nginx.conf</a> &#8211; 0.5 KB)</p>
<p>За да конфигурирате виртуалните хостове следвайте стандартната процедура &#8211; копирайте файловете <code>rails_project_apache</code> и <code>rails_project_nginx</code> съответно в <code>/etc/apache2/sites-available</code> и <code>/etc/nginx/sites-available</code>. Сменетe имената им с нещо, което има значение за Вас, редактирайте ги, така че да отразят местоположението на проекта и добавете символни връзки към тях в съответните <code>sites-enabled</code> директории.</p>
<p>Понеже машинката ми е слаба, използвах симулация на 100 паралелни заявки, повтарящи се само 1000 пъти. Командата с която стартирах bechmark-а е следната:</p>
<pre>ab -c 100 -n 1000 http://projectname/</pre>
<div class="center"><img src="http://www.sthoughts.com/uploads/rails_perf_t.jpg" alt="" /></div>
<div class="center"><img src="http://www.sthoughts.com/uploads/rails_perf_r.jpg" alt="" /></div>
<p>Повече детайли можете да намерите в следните файлове (в конфигурацията на Apache съм забранил показването на server credentials, което е и причината да виждате Mongrel като име на сървъра):</p>
<p class="download">Apache benchmark results (<a href="http://www.sthoughts.com/dl/apache2.txt">apache2.txt</a> &#8211; 1.3 KB)<br />
Nginx benchmark results (<a href="http://www.sthoughts.com/dl/nginx.txt">nginx.txt</a> &#8211; 1.3 KB)</p>
<p>Изглежда на еднопроцесорна машина Apache 2.2 има леко предимство, и разработчиците с право могат да се гордеят с резултатите. От друга страна nginx изглежда интересен, но имам чувството, че с добавянето на повече функционалност сървърът няма да остане толкова лек и бърз.</p>
<p>Все пак няма да е зле да има вариант за benchmark върху дву- или четирипроцесорна машина за да проверя скалируемостта на двете решения &#8211; Apache има навика да fork-ва процеси и да пълни сериозно паметта, докато nginx е доста по-непретенциозен. Ако някой има по-яка машинка под ръка и му се занимава с ръчкане ще съм доволен да сподели своите резултати&#8230;</p>
<p><strong>Update:</strong> Debian testing вече съдържа пакет с версия 0.5.30 на nginx, който обаче страда от същият проблем като по-старата версия &#8211; <code>prerm</code> скрипта извиква два пъти спиране на демона на nginx, проваляйки по този начин премахването му. Поради тази причина можете да използвате или по-горната версия, с която са направени тестовете, или пакета с по-актуална версия от тук:</p>
<p class="download">Download <a href="http://www.sthoughts.com/dl/nginx_0.5.31-1_i386.deb" target="_blank">nginx_0.5.31-1_i386.deb</a> (232 KB)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sthoughts.com/2007/08/06/rails-on-debian-with-mongrel_cluster-and-nginx/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
