<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I shot the sheriff.</description><title>Sharp's blog</title><generator>Tumblr (3.0; @thesharp)</generator><link>http://blog.thesharp.ru/</link><item><title>tumblr themes</title><description>&lt;p&gt;Seriously, why the bloody hell all the free tumblr themes are ugly as fuck?&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/12343672155</link><guid>http://blog.thesharp.ru/post/12343672155</guid><pubDate>Sat, 05 Nov 2011 03:09:08 +0400</pubDate></item><item><title>New GPG Key</title><description>&lt;p&gt;Today I&amp;#8217;ve decided to renew my GPG key and revoke my old keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My new key (RSA 4096 bits long):&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;pub   4096R/3AD7C937 2011-10-29
      Key fingerprint = 7DC2 7830 9240 D00B 5701  1122 863D F001 3AD7 C937
      uid                  Ilya A. Otyutskiy &amp;lt;sharp@thesharp.ru&amp;gt;
      uid                  Ilya A. Otyutskiy &amp;lt;sharp@ukhta-uug.org&amp;gt;
      uid                  Ilya A. Otyutskiy &amp;lt;ilya.otyutskiy@gmail.com&amp;gt;
      sub   4096R/22BA2768 2011-10-29&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;The following keys were revoked:&lt;/strong&gt;&lt;br/&gt;&lt;code&gt;- 63FDED7B&lt;br/&gt;
- 6497DDB3&lt;br/&gt;
- AFF567C4&lt;br/&gt;
- C55710EF&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve lost the private key of &lt;code&gt;FD535F42&lt;/code&gt; a long long time ago, so you shouldn&amp;#8217;t use it.&lt;/p&gt;

&lt;p&gt;Just in case here&amp;#8217;s the armored version of my new public key:&lt;br/&gt;&lt;!-- more --&gt;&lt;/p&gt;&lt;pre&gt;
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

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
Hu5hQrFZOTiVoWRF8vl8OZ2vy5FvjbGOyfEI+OgdSPsiO9lxyA5104ZbTxCXM+h7
XINAdzMP/4jr/fMWBuwSc/zZbt0kEv1NwTPMKN0EHkCiJv7buGE82Xc1gCZpNIwN
TphsyiZm0lyC9IeB5jJ8sQtSa6drymBJ1iRuWaDCjyTsww1OABlFkJpKkjJUMKXw
sawU7lznN1Q1ts9X+4QgHSxTDEuKkLYtIH4wByPW2+4TuEN4Dq0Xm7B/YPBUKU2s
429aBkdJgR+ywoH0rwiJdqz0VxfeYV9bpvSzt6T5fvYE8HiSx0AqeAEH1mdUh1MA
EQEAAbQnSWx5YSBBLiBPdHl1dHNraXkgPHNoYXJwQHVraHRhLXV1Zy5vcmc+iQI4
BBMBAgAiAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCTqxEuQAKCRCGPfAB
OtfJNw3rD/4o4wVFCNtM3bMdGSky0TwS+kw7qSuXDA7I1+BxLk0fWul9PhIuScKU
l0GmTkDnpXoOY+A5s4bQHftIw/5w7Q9+kbH8cFIiSiVxOBUUKjbOmBCy6cRJ/HHZ
sUFv83vsgcNJ2vPreFEH/HpCREJfCEacI6V4VwXnXRpxqLsVjrYwPsXTBBVlh94j
BRgL5fd8KTepO9mMpmf9iiRzws/Yu/n2kkdSqUCrjhsU5ScIF7yejtfN00OW7AUD
QO+klqzWeeGINKrau7sbx7ilojPII5OlYRNO35B1fPRVMuEmfX2dDuecGaon3QQd
BOO+Zl1cDwvu3+QJdKnBkasBe1xr0iX58AXVeoAQCDZbna4phKrm8GOwsB9+miGU
2+QMvPuhaBoEs2gGOIa/OjswU2PumlS0smKVLYOX/BJLtkVsSf0JuMjilW93z0/z
xN2MsfyGceTZmcrX1HdS9YsK8M5Qt0S0vhxgo+u0g5BqyLCmXo2UYuttuXBvJf7i
YCVkykK7xqOrERblJsFtF6ouwiIc+Br0i4GVgbPzkATtiBA75JF/j61KTfZHBA9E
9JD0OdscrhLce7QIWA8pD2vk8w24Te9w9VrbM6Mm6Y6yJ/djhsn93JksZTn7fPuk
RqADF7op12HvdddcQpau1uf2jZX8DX8RXsq6JaISZsa5Yslt+uAIA7QlSWx5YSBB
LiBPdHl1dHNraXkgPHNoYXJwQHRoZXNoYXJwLnJ1PokCOwQTAQIAJQIbAwYLCQgH
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
=sruE
-----END PGP PUBLIC KEY BLOCK-----
&lt;/pre&gt;</description><link>http://blog.thesharp.ru/post/12082494022</link><guid>http://blog.thesharp.ru/post/12082494022</guid><pubDate>Sat, 29 Oct 2011 22:53:00 +0400</pubDate><category>gpg</category></item><item><title>[SOLVED] speakers and headphones output sound simultaneously on ubuntu natty</title><description>&lt;p&gt;A quick note to myself.
&lt;br/&gt;&lt;br/&gt;
Up-to-dated natty has the subj problem on my Asus 1201T netbook. Here&amp;#8217;s the way to fix it:
&lt;br/&gt;&lt;br/&gt;&lt;code&gt;
# echo "options snd-hda-intel model=auto" &amp;gt;&amp;gt; /etc/modprobe.d/alsa-base.conf&lt;br/&gt;
# alsa force-reload
&lt;/code&gt;&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/5334498270</link><guid>http://blog.thesharp.ru/post/5334498270</guid><pubDate>Mon, 09 May 2011 18:20:39 +0400</pubDate><category>ubuntu</category><category>asus 1201t</category></item><item><title>artificial intelligence in anaconda installer</title><description>&lt;p&gt;A couple of days ago I&amp;#8217;ve decided to play with &lt;code&gt;xen&lt;/code&gt; virtualization. At that moment there were no opportunity to install it on a proper hardware so I decided to deploy it on one of the laptops in the office. It was HP 510 (don&amp;#8217;t like that model cos it has only one RAM slot). I started to install CentOS there and selected only core packages (uncheck all of the checkboxes).&lt;/p&gt;

&lt;p&gt;After successful installation I discovered that it has &lt;code&gt;xen&lt;/code&gt; installed. And I was like &amp;#8220;oh what the hell is that I&amp;#8217;ve unchecked everything it should be the minimal installation&amp;#8221;. But it wasn&amp;#8217;t. It had &lt;code&gt;xen&lt;/code&gt; there.&lt;/p&gt;

&lt;p&gt;Here is my &lt;code&gt;anaconda-ks.cfg&lt;/code&gt; from that host:
&lt;/p&gt;&lt;pre&gt;
# Kickstart file automatically generated by anaconda.

install
url --url &lt;a href="http://mirror.yandex.ru/centos/5.5/os/i386"&gt;http://mirror.yandex.ru/centos/5.5/os/i386&lt;/a&gt;
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp &lt;strong&gt;--hostname xen01&lt;/strong&gt;
rootpw --iscrypted [ hash was there :) ]
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone Europe/Moscow
bootloader --location=mbr --driveorder=hda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux
#part / --fstype ext3 --size=10240 --asprimary
#part swap --size=2048 --asprimary
#part pv.9 --size=100 --grow --asprimary
#volgroup vg00 --pesize=32768 pv.9

&lt;strong&gt;%packages
@core&lt;/strong&gt;
&lt;/pre&gt;

&lt;p&gt;As you can see there is only @core stuff in %packages section. But the hostname says &amp;#8220;xen01&amp;#8221;. So what&amp;#8217;s that? An artificial intelligence in anaconda? :)&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/2312688352</link><guid>http://blog.thesharp.ru/post/2312688352</guid><pubDate>Tue, 14 Dec 2010 17:40:59 +0300</pubDate></item><item><title>ubuntu 10.04 hostapd and htc hero wifi: how the problem was solved.</title><description>&lt;p&gt;I have an Android-driven HTC Hero phone. During past few weeks I’ve noticed that my battery is almost dead at the end of the day. It was very strange because my phone told me that the battery condition is ‘Good’. Usually I’m charging my phone once in two days. So I started to thinking about what it could be. I realized that one thing changed during that period: I started to experience a wireless problems at work. So eight hours a day I’m using battery-draining 3G connection to update gmail, twitter and stuff.&lt;/p&gt;

&lt;p&gt;Here at office we have two different wireless access points. First one is D-Link DWL-900AP+. I just can’t connect to it. The phone keeps printing “Connecting&amp;#8230;” line and nothing happens next no matter how long you will wait. We had a Linksys one before and it worked just fine. And I have Asus WL-500GPV2 at home and it perfectly works.&lt;/p&gt;

&lt;p&gt;The second one is our current topic of interest. It is a IBM ThinkPad A31 laptop with D-Link DWL-AG660 pcmcia-card plugged in. That whole setup was made by my junior admin. He just grabbed the first installation CD from the box and it was Ubuntu Lucid. So we have here a wireless access point with gnome and stuff. It has a software called &lt;code&gt;hostapd&lt;/code&gt; which turns it into access point. That access point previously worked fine but couple of weeks ago the problem appeared.&lt;/p&gt;

&lt;p&gt;Once again I tried to connect to our second access point but it simply refused my correct password. That’s the problem I mentioned in the end of the previous paragraph. I double checked it with &lt;code&gt;hostapd.conf&lt;/code&gt; and it was correct. &lt;/p&gt;

&lt;p&gt;There was something like that in logfiles:
&lt;code&gt;&lt;br/&gt;
Dec  3 17:37:03 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 IEEE 802.11: authenticated&lt;br/&gt;
Dec  3 17:37:03 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 IEEE 802.11: associated (aid 1)&lt;br/&gt;
Dec  3 17:37:06 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 IEEE 802.11: deauthenticated due to local deauth request
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In dpkg log files (&lt;code&gt;/var/log/dpkg*&lt;/code&gt;) I saw that the system was installed at 23rd of September (that’s why it was Lucid, there was no Maverick at that date) and was never updated. Also motd had a notice about enormous amount of packages for upgrade. I ran an upgrade using aptitude via screen and went home. Next morning I rebooted the laptop into new kernel after updates and tried once again.&lt;/p&gt;

&lt;p&gt;That time connection went well and everything worked as it was supposed to be. And we could see this:&lt;br/&gt;&lt;code&gt;
Dec  7 11:14:42 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 IEEE 802.11: authenticated&lt;br/&gt;
Dec  7 11:14:42 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 IEEE 802.11: associated (aid 2)&lt;br/&gt;
Dec  7 11:14:43 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 WPA: received EAPOL-Key 2/4 Pairwise with unexpected replay counter&lt;br/&gt;
Dec  7 11:14:43 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 RADIUS: starting accounting session 4CFCFCD8-00000013&lt;br/&gt;
Dec  7 11:14:43 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 WPA: pairwise key handshake completed (WPA)&lt;br/&gt;
Dec  7 11:14:43 wi-fi hostapd: wlan0: STA 00:23:76:3f:31:29 WPA: group key handshake completed (WPA)&lt;br/&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The mainline here is to update everything to latest available version before starting to fix the problem.&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/2153489837</link><guid>http://blog.thesharp.ru/post/2153489837</guid><pubDate>Thu, 09 Dec 2010 14:21:00 +0300</pubDate><category>ubuntu</category><category>android</category><category>wifi</category></item><item><title>molly-guard @ centos part two: installing package on bunch of servers</title><description>&lt;p&gt;As I mentioned &lt;a href="http://blog.thesharp.ru/post/2131814818"&gt;before&lt;/a&gt; now we have a &lt;code&gt;molly-guard&lt;/code&gt; package for CentOS. My amount of CentOS servers at work is huge. Luckily I’m successfully using &lt;code&gt;puppet&lt;/code&gt; software to configure my servers. As all of them are in &lt;code&gt;puppet&lt;/code&gt; I can install a package on all of them with a little effort.

First of all, I decided to setup a repository for &lt;code&gt;molly-guard&lt;/code&gt;. I did &lt;code&gt;yum install lighttpd&lt;/code&gt; on one of my servers and put in its www-root a directory called &lt;code&gt;molly&lt;/code&gt;. Then I moved my package there. The package itself has &lt;code&gt;noarch&lt;/code&gt; architecture so I decided that I don’t need a proper directory structure for my repo. A handy tool which helped me to build a repo is &lt;code&gt;createrepo&lt;/code&gt; (&lt;code&gt;yum install createrepo&lt;/code&gt;). I did &lt;code&gt;createrepo /var/www/lighttpd/molly&lt;/code&gt; and the repository was ready.

To use that repository we need a &lt;code&gt;.repo&lt;/code&gt;-file which we will put in &lt;code&gt;/etc/yum.repos.d&lt;/code&gt; directory. Mine is something like this:
&lt;pre&gt;
[molly]
name=molly-guard noarch
baseurl=http://domain.tld/molly/
enabled=1
gpgcheck=0
&lt;/pre&gt;

Now we have a valid repository from which we can install &lt;code&gt;molly-guard&lt;/code&gt; via &lt;code&gt;yum&lt;/code&gt;. It’s time for &lt;code&gt;puppet&lt;/code&gt; to do its job. I decided to make two separate modules for puppet: one to add a repository and another to install a package. It is completely your call to keep it separated or united, I just felt to do like this.

My fist module called &lt;code&gt;yumrepo&lt;/code&gt; looks like this:
&lt;pre&gt;
class yumrepo {
	file { "/etc/yum.repos.d/molly.repo":
		owner =&amp;gt; "root",
		group =&amp;gt; "root",
		mode =&amp;gt; "644",
		source =&amp;gt; [ "puppet:///yumrepo/default/molly.repo" ],
	}
}
&lt;/pre&gt;

And my second module called &lt;code&gt;molly_guard&lt;/code&gt; looks like this:
&lt;pre&gt;
class molly_guard {
	package {
		"molly-guard": ensure =&amp;gt; present;
	}	
}
&lt;/pre&gt;

So now we can include those two modules in node definitions and all the magic will be done. And do not forget to edit your &lt;code&gt;fileserver.conf&lt;/code&gt; to correctly serve &lt;code&gt;molly.repo&lt;/code&gt; file.&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/2132169801</link><guid>http://blog.thesharp.ru/post/2132169801</guid><pubDate>Tue, 07 Dec 2010 16:00:00 +0300</pubDate><category>centos</category><category>puppet</category></item><item><title>molly-guard @ centos part one: finding a package</title><description>&lt;p&gt;As I mentioned before in my &lt;a href="http://blog.thesharp.ru/post/2131207186"&gt;previous&lt;/a&gt; post, &lt;code&gt;molly-guard&lt;/code&gt; is pretty neat package. But it is written for Debian/Ubuntu and officially available only in those distributions. I have a large amount of CentOS servers at work and I want to have &lt;code&gt;molly-guard&lt;/code&gt; there. I decided to write a .spec file for &lt;code&gt;molly-guard&lt;/code&gt; and make a .rpm package. Just after I did an update for my personal builder, I thought that there is a chance that someone has already made such package. So I did a google search and found one. It is mirrored &lt;a href="http://thesharp.ru/junk/rpm/molly-guard-0.3-1.noarch.rpm"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The package has &lt;code&gt;/etc/profile.d/molly-guard.sh&lt;/code&gt; and &lt;code&gt;/etc/profile.d/molly-guard.csh&lt;/code&gt; files which purpose is to reorder the &lt;code&gt;$PATH&lt;/code&gt; environment, because Redhat’s &lt;code&gt;$PATH&lt;/code&gt; ordering differs from Debian’s. Redhat’s has &lt;code&gt;/sbin&lt;/code&gt; before &lt;code&gt;/usr/sbin&lt;/code&gt;.&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/2131814818</link><guid>http://blog.thesharp.ru/post/2131814818</guid><pubDate>Tue, 07 Dec 2010 15:00:07 +0300</pubDate><category>debian</category><category>ubuntu</category><category>centos</category></item><item><title>molly-guard: protects machines from accidental shutdowns/reboots</title><description>&lt;p&gt;There is a neat package in debian/ubuntu repository called &lt;code&gt;molly-guard&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Its main purpose is to protect a host from accidental shutdown/reboot. I believe every adminstrator typed &amp;#8216;poweroff&amp;#8217; command into wrong terminal at least once. Unplanned downtime is such a pain in the arse. It&amp;#8217;s no big deal if it was your personal router or something but IT IS a big deal if it was a web-frontend of a big corporate project. And the explanation &amp;#8220;I accidently typed &lt;code&gt;poweroff&lt;/code&gt; into wrong terminal&amp;#8221; for 15 minutes downtime (usual time here in Moscow to call DC&amp;#8217;s NOCs and make a ticket to press the power button on the host) of very important project is just unacceptable. So it&amp;#8217;s better to be prepared for such things.&lt;/p&gt;

&lt;p&gt;The package consists of bunch of shell scripts (&lt;code&gt;poweroff&lt;/code&gt;, &lt;code&gt;halt&lt;/code&gt;, &lt;code&gt;reboot&lt;/code&gt;, &lt;code&gt;shutdown&lt;/code&gt;) deployed in &lt;code&gt;/usr/sbin&lt;/code&gt;. When you type, for example, a &lt;code&gt;halt&lt;/code&gt; command, &lt;code&gt;molly-guard&lt;/code&gt;&amp;#8217;s wrapper will run instead of your original &lt;code&gt;halt&lt;/code&gt; binary, because it&amp;#8217;s located in &lt;code&gt;/usr/sbin&lt;/code&gt; directory which is before &lt;code&gt;/sbin&lt;/code&gt; in your &lt;code&gt;$PATH&lt;/code&gt; environment.&lt;/p&gt;

&lt;p&gt;So here&amp;#8217;s a little request to any debian/ubuntu administrator out there: type &lt;code&gt;apt-get install molly-guard&lt;/code&gt; and have a cute solution for such annoying problem.&lt;/p&gt;</description><link>http://blog.thesharp.ru/post/2131207186</link><guid>http://blog.thesharp.ru/post/2131207186</guid><pubDate>Tue, 07 Dec 2010 12:56:40 +0300</pubDate><category>ubuntu</category><category>debian</category></item></channel></rss>
