<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7240745851013002049</id><updated>2012-02-10T09:52:09.071+02:00</updated><category term='lame'/><category term='linux'/><category term='multiprocessing'/><category term='callbot'/><category term='mysql'/><category term='phun'/><category term='security'/><category term='convert'/><category term='macosx'/><category term='add'/><category term='leak'/><category term='malware'/><category term='ping'/><category term='real_me'/><category term='win'/><category term='erepublik'/><category term='hosting'/><category term='memory'/><category term='bash'/><category term='malmon'/><category term='mplayer'/><category term='misc'/><category term='mp4'/><category term='exploits'/><category term='opensource'/><category term='ati'/><category term='python'/><category term='clock'/><category term='shared data'/><category term='kernel'/><category term='Истина'/><category term='snmp'/><category term='mp3'/><category term='irc'/><category term='backdoors'/><category term='fun'/><category term='group'/><category term='guppy'/><category term='opensolaris'/><category term='pyhon'/><category term='load-balance'/><category term='lnx'/><category term='iptables'/><category term='spambox'/><category term='database'/><category term='db'/><title type='text'>kernel/panic.c</title><subtitle type='html'>real h4x0rz don't die ...their TTL just expirez ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default?start-index=101&amp;max-results=100'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>186</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6032355500051498102</id><published>2012-02-10T09:52:00.001+02:00</published><updated>2012-02-10T09:52:09.087+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python-ping lib update (pull request link)</title><content type='html'>https://github.com/jedie/python-ping/pulls/l4m3rx&lt;br /&gt;Here's a better way to get the updated version of the lib.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6032355500051498102?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://github.com/jedie/python-ping/pulls/l4m3rx' title='python-ping lib update (pull request link)'/><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6032355500051498102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6032355500051498102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6032355500051498102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6032355500051498102'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2012/02/python-ping-lib-update-pull-request.html' title='python-ping lib update (pull request link)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7068985731864238030</id><published>2012-01-31T10:59:00.000+02:00</published><updated>2012-01-31T10:59:16.388+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyhon'/><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><title type='text'>python-ping lib update</title><content type='html'>python-ping lib update.&lt;br /&gt;* Fixed Python2/3 support&lt;br /&gt;* Added quiet_ping function&lt;br /&gt;* Removed all global stuff&lt;br /&gt;* Fixed multiple resolv issue&lt;br /&gt;Get it at: https://github.com/l4m3rx/python-ping&lt;br /&gt;&lt;br /&gt;This lib is fork of:&lt;br /&gt;http://www.falatic.com/index.php/39/pinging-with-python/comment-page-1#comment-4346&lt;br /&gt;https://github.com/jedie/python-ping&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7068985731864238030?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://github.com/l4m3rx/python-ping' title='python-ping lib update'/><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7068985731864238030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7068985731864238030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7068985731864238030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7068985731864238030'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2012/01/python-ping-lib-update.html' title='python-ping lib update'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8412461907568730454</id><published>2011-12-21T12:13:00.004+02:00</published><updated>2011-12-21T12:13:52.929+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='load-balance'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Linux load-balancing / multiple ISPs</title><content type='html'>Routing for multiple uplinks/providers&lt;br /&gt;&lt;br /&gt;A common configuration is the following, in which there are two providers that connect a local network (or even a single machine) to the big Internet.&lt;br /&gt;&lt;br /&gt;                                                                 ________&lt;br /&gt;                                          +------------+        /&lt;br /&gt;                                          |            |       |&lt;br /&gt;                            +-------------+ Provider 1 +-------&lt;br /&gt;        __                  |             |            |     /&lt;br /&gt;    ___/  \_         +------+-------+     +------------+    |&lt;br /&gt;  _/        \__      |     if1      |                      /&lt;br /&gt; /             \     |              |                      |&lt;br /&gt;| Local network -----+ Linux router |                      |     Internet&lt;br /&gt; \_           __/    |              |                      |&lt;br /&gt;   \__     __/       |     if2      |                      \&lt;br /&gt;      \___/          +------+-------+     +------------+    |&lt;br /&gt;                            |             |            |     \&lt;br /&gt;                            +-------------+ Provider 2 +-------&lt;br /&gt;                                          |            |       |&lt;br /&gt;                                          +------------+        \________&lt;br /&gt;&lt;br /&gt;There are usually two questions given this setup.&lt;br /&gt;4.2.1. Split access&lt;br /&gt;&lt;br /&gt;The first is how to route answers to packets coming in over a particular provider, say Provider 1, back out again over that same provider.&lt;br /&gt;&lt;br /&gt;Let us first set some symbolical names. Let $IF1 be the name of the first interface (if1 in the picture above) and $IF2 the name of the second interface. Then let $IP1 be the IP address associated with $IF1 and $IP2 the IP address associated with $IF2. Next, let $P1 be the IP address of the gateway at Provider 1, and $P2 the IP address of the gateway at provider 2. Finally, let $P1_NET be the IP network $P1 is in, and $P2_NET the IP network $P2 is in.&lt;br /&gt;&lt;br /&gt;One creates two additional routing tables, say T1 and T2. These are added in /etc/iproute2/rt_tables. Then you set up routing in these tables as follows:&lt;br /&gt;&lt;br /&gt;   ip route add $P1_NET dev $IF1 src $IP1 table T1&lt;br /&gt;   ip route add default via $P1 table T1&lt;br /&gt;   ip route add $P2_NET dev $IF2 src $IP2 table T2&lt;br /&gt;   ip route add default via $P2 table T2&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Nothing spectacular, just build a route to the gateway and build a default route via that gateway, as you would do in the case of a single upstream provider, but put the routes in a separate table per provider. Note that the network route suffices, as it tells you how to find any host in that network, which includes the gateway, as specified above.&lt;br /&gt;&lt;br /&gt;Next you set up the main routing table. It is a good idea to route things to the direct neighbour through the interface connected to that neighbour. Note the `src' arguments, they make sure the right outgoing IP address is chosen.&lt;br /&gt;&lt;br /&gt;     ip route add $P1_NET dev $IF1 src $IP1&lt;br /&gt;     ip route add $P2_NET dev $IF2 src $IP2&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;Then, your preference for default route:&lt;br /&gt;&lt;br /&gt;     ip route add default via $P1&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;Next, you set up the routing rules. These actually choose what routing table to route with. You want to make sure that you route out a given interface if you already have the corresponding source address:&lt;br /&gt;&lt;br /&gt;     ip rule add from $IP1 table T1&lt;br /&gt;     ip rule add from $IP2 table T2&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;This set of commands makes sure all answers to traffic coming in on a particular interface get answered from that interface.&lt;br /&gt;&lt;br /&gt;Now, this is just the very basic setup. It will work for all processes running on the router itself, and for the local network, if it is masqueraded. If it is not, then you either have IP space from both providers or you are going to want to masquerade to one of the two providers. In both cases you will want to add rules selecting which provider to route out from based on the IP address of the machine in the local network.&lt;br /&gt;4.2.2. Load balancing&lt;br /&gt;&lt;br /&gt;The second question is how to balance traffic going out over the two providers. This is actually not hard if you already have set up split access as above.&lt;br /&gt;&lt;br /&gt;Instead of choosing one of the two providers as your default route, you now set up the default route to be a multipath route. In the default kernel this will balance routes over the two providers. It is done as follows (once more building on the example in the section on split-access):&lt;br /&gt;&lt;br /&gt;     ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \&lt;br /&gt;     nexthop via $P2 dev $IF2 weight 1&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;This will balance the routes over both providers. The weight parameters can be tweaked to favor one provider over the other.&lt;br /&gt;&lt;br /&gt;Note that balancing will not be perfect, as it is route based, and routes are cached. This means that routes to often-used sites will always be over the same provider.&lt;br /&gt;&lt;br /&gt;Furthermore, if you really want to do this, you probably also want to look at Julian Anastasov's patches at http://www.linuxvirtualserver.org/~julian/#routes , Julian's route patch page. They will make things nicer to work with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8412461907568730454?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/Adv-Routing-HOWTO.html' title='Linux load-balancing / multiple ISPs'/><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8412461907568730454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8412461907568730454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8412461907568730454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8412461907568730454'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/12/linux-load-balancing-multiple-isps.html' title='Linux load-balancing / multiple ISPs'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5417929204331087393</id><published>2011-12-21T12:13:00.001+02:00</published><updated>2011-12-21T12:13:13.138+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Linux ruting policy database</title><content type='html'>Rules - routing policy database&lt;br /&gt;&lt;br /&gt;If you have a large router, you may well cater for the needs of different people, who should be served differently. The routing policy database allows you to do this by having multiple sets of routing tables.&lt;br /&gt;&lt;br /&gt;If you want to use this feature, make sure that your kernel is compiled with the "IP: advanced router" and "IP: policy routing" features.&lt;br /&gt;&lt;br /&gt;When the kernel needs to make a routing decision, it finds out which table needs to be consulted. By default, there are three tables. The old 'route' tool modifies the main and local tables, as does the ip tool (by default).&lt;br /&gt;&lt;br /&gt;The default rules:&lt;br /&gt;&lt;br /&gt;[ahu@home ahu]$ ip rule list&lt;br /&gt;0: from all lookup local &lt;br /&gt;32766: from all lookup main &lt;br /&gt;32767: from all lookup default&lt;br /&gt;&lt;br /&gt;This lists the priority of all rules. We see that all rules apply to all packets ('from all'). We've seen the 'main' table before, it is output by ip route ls, but the 'local' and 'default' table are new.&lt;br /&gt;&lt;br /&gt;If we want to do fancy things, we generate rules which point to different tables which allow us to override system wide routing rules.&lt;br /&gt;&lt;br /&gt;For the exact semantics on what the kernel does when there are more matching rules, see Alexey's ip-cref documentation.&lt;br /&gt;4.1. Simple source policy routing&lt;br /&gt;&lt;br /&gt;Let's take a real example once again, I have 2 (actually 3, about time I returned them) cable modems, connected to a Linux NAT ('masquerading') router. People living here pay me to use the Internet. Suppose one of my house mates only visits hotmail and wants to pay less. This is fine with me, but they'll end up using the low-end cable modem.&lt;br /&gt;&lt;br /&gt;The 'fast' cable modem is known as 212.64.94.251 and is a PPP link to 212.64.94.1. The 'slow' cable modem is known by various ip addresses, 212.64.78.148 in this example and is a link to 195.96.98.253.&lt;br /&gt;&lt;br /&gt;The local table:&lt;br /&gt;&lt;br /&gt;[ahu@home ahu]$ ip route list table local&lt;br /&gt;broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 &lt;br /&gt;local 10.0.0.1 dev eth0  proto kernel  scope host  src 10.0.0.1 &lt;br /&gt;broadcast 10.0.0.0 dev eth0  proto kernel  scope link  src 10.0.0.1 &lt;br /&gt;local 212.64.94.251 dev ppp0  proto kernel  scope host  src 212.64.94.251 &lt;br /&gt;broadcast 10.255.255.255 dev eth0  proto kernel  scope link  src 10.0.0.1 &lt;br /&gt;broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 &lt;br /&gt;local 212.64.78.148 dev ppp2  proto kernel  scope host  src 212.64.78.148 &lt;br /&gt;local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 &lt;br /&gt;local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 &lt;br /&gt;&lt;br /&gt;Lots of obvious things, but things that need to be specified somewhere. Well, here they are. The default table is empty.&lt;br /&gt;&lt;br /&gt;Let's view the 'main' table:&lt;br /&gt;&lt;br /&gt;[ahu@home ahu]$ ip route list table main &lt;br /&gt;195.96.98.253 dev ppp2  proto kernel  scope link  src 212.64.78.148 &lt;br /&gt;212.64.94.1 dev ppp0  proto kernel  scope link  src 212.64.94.251 &lt;br /&gt;10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0.0.1 &lt;br /&gt;127.0.0.0/8 dev lo  scope link &lt;br /&gt;default via 212.64.94.1 dev ppp0 &lt;br /&gt;&lt;br /&gt;We now generate a new rule which we call 'John', for our hypothetical house mate. Although we can work with pure numbers, it's far easier if we add our tables to /etc/iproute2/rt_tables.&lt;br /&gt;&lt;br /&gt;# echo 200 John &gt;&gt; /etc/iproute2/rt_tables&lt;br /&gt;# ip rule add from 10.0.0.10 table John&lt;br /&gt;# ip rule ls&lt;br /&gt;0: from all lookup local &lt;br /&gt;32765: from 10.0.0.10 lookup John&lt;br /&gt;32766: from all lookup main &lt;br /&gt;32767: from all lookup default&lt;br /&gt;&lt;br /&gt;Now all that is left is to generate John's table, and flush the route cache:&lt;br /&gt;&lt;br /&gt;# ip route add default via 195.96.98.253 dev ppp2 table John&lt;br /&gt;# ip route flush cache&lt;br /&gt;&lt;br /&gt;And we are done. It is left as an exercise for the reader to implement this in ip-up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5417929204331087393?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5417929204331087393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5417929204331087393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5417929204331087393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5417929204331087393'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/12/linux-ruting-policy-database.html' title='Linux ruting policy database'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3346661525138758088</id><published>2011-12-21T12:11:00.000+02:00</published><updated>2011-12-21T12:11:12.721+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Linu kernel network settings</title><content type='html'>Generic ipv4&lt;br /&gt;&lt;br /&gt;As a generic note, most rate limiting features don't work on loopback, so don't test them locally. The limits are supplied in 'jiffies', and are enforced using the earlier mentioned token bucket filter.&lt;br /&gt;&lt;br /&gt;The kernel has an internal clock which runs at 'HZ' ticks (or 'jiffies') per second. On Intel, 'HZ' is mostly 100. So setting a *_rate file to, say 50, would allow for 2 packets per second. The token bucket filter is also configured to allow for a burst of at most 6 packets, if enough tokens have been earned.&lt;br /&gt;&lt;br /&gt;Several entries in the following list have been copied from /usr/src/linux/Documentation/networking/ip-sysctl.txt, written by Alexey Kuznetsov &lt;kuznet@ms2.inr.ac.ru&gt; and Andi Kleen &lt;ak@muc.de&gt;&lt;br /&gt;&lt;br /&gt;/proc/sys/net/ipv4/icmp_destunreach_rate&lt;br /&gt;&lt;br /&gt;    If the kernel decides that it can't deliver a packet, it will drop it, and send the source of the packet an ICMP notice to this effect.&lt;br /&gt;/proc/sys/net/ipv4/icmp_echo_ignore_all&lt;br /&gt;&lt;br /&gt;    Don't act on echo packets at all. Please don't set this by default, but if you are used as a relay in a DoS attack, it may be useful.&lt;br /&gt;/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts [Useful]&lt;br /&gt;&lt;br /&gt;    If you ping the broadcast address of a network, all hosts are supposed to respond. This makes for a dandy denial-of-service tool. Set this to 1 to ignore these broadcast messages.&lt;br /&gt;/proc/sys/net/ipv4/icmp_echoreply_rate&lt;br /&gt;&lt;br /&gt;    The rate at which echo replies are sent to any one destination.&lt;br /&gt;/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses&lt;br /&gt;&lt;br /&gt;    Set this to ignore ICMP errors caused by hosts in the network reacting badly to frames sent to what they perceive to be the broadcast address.&lt;br /&gt;/proc/sys/net/ipv4/icmp_paramprob_rate&lt;br /&gt;&lt;br /&gt;    A relatively unknown ICMP message, which is sent in response to incorrect packets with broken IP or TCP headers. With this file you can control the rate at which it is sent.&lt;br /&gt;/proc/sys/net/ipv4/icmp_timeexceed_rate&lt;br /&gt;&lt;br /&gt;    This the famous cause of the 'Solaris middle star' in traceroutes. Limits number of ICMP Time Exceeded messages sent. &lt;br /&gt;/proc/sys/net/ipv4/igmp_max_memberships&lt;br /&gt;&lt;br /&gt;    Maximum number of listening igmp (multicast) sockets on the host. FIXME: Is this true?&lt;br /&gt;/proc/sys/net/ipv4/inet_peer_gc_maxtime&lt;br /&gt;&lt;br /&gt;    FIXME: Add a little explanation about the inet peer storage? Minimum interval between garbage collection passes. This interval is in effect under low (or absent) memory pressure on the pool. Measured in jiffies.&lt;br /&gt;/proc/sys/net/ipv4/inet_peer_gc_mintime&lt;br /&gt;&lt;br /&gt;    Minimum interval between garbage collection passes. This interval is in effect under high memory pressure on the pool. Measured in jiffies.&lt;br /&gt;/proc/sys/net/ipv4/inet_peer_maxttl&lt;br /&gt;&lt;br /&gt;    Maximum time-to-live of entries. Unused entries will expire after this period of time if there is no memory pressure on the pool (i.e. when the number of entries in the pool is very small). Measured in jiffies.&lt;br /&gt;/proc/sys/net/ipv4/inet_peer_minttl&lt;br /&gt;&lt;br /&gt;    Minimum time-to-live of entries. Should be enough to cover fragment time-to-live on the reassembling side. This minimum time-to-live is guaranteed if the pool size is less than inet_peer_threshold. Measured in jiffies.&lt;br /&gt;/proc/sys/net/ipv4/inet_peer_threshold&lt;br /&gt;&lt;br /&gt;    The approximate size of the INET peer storage. Starting from this threshold entries will be thrown aggressively. This threshold also determines entries' time-to-live and time intervals between garbage collection passes. More entries, less time-to-live, less GC interval.&lt;br /&gt;/proc/sys/net/ipv4/ip_autoconfig&lt;br /&gt;&lt;br /&gt;    This file contains the number one if the host received its IP configuration by RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero.&lt;br /&gt;/proc/sys/net/ipv4/ip_default_ttl&lt;br /&gt;&lt;br /&gt;    Time To Live of packets. Set to a safe 64. Raise it if you have a huge network. Don't do so for fun - routing loops cause much more damage that way. You might even consider lowering it in some circumstances.&lt;br /&gt;/proc/sys/net/ipv4/ip_dynaddr&lt;br /&gt;&lt;br /&gt;    You need to set this if you use dial-on-demand with a dynamic interface address. Once your demand interface comes up, any local TCP sockets which haven't seen replies will be rebound to have the right address. This solves the problem that the connection that brings up your interface itself does not work, but the second try does.&lt;br /&gt;/proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;    If the kernel should attempt to forward packets. Off by default.&lt;br /&gt;/proc/sys/net/ipv4/ip_local_port_range&lt;br /&gt;&lt;br /&gt;    Range of local ports for outgoing connections. Actually quite small by default, 1024 to 4999.&lt;br /&gt;/proc/sys/net/ipv4/ip_no_pmtu_disc&lt;br /&gt;&lt;br /&gt;    Set this if you want to disable Path MTU discovery - a technique to determine the largest Maximum Transfer Unit possible on your path. See also the section on Path MTU discovery in the Cookbook chapter.&lt;br /&gt;/proc/sys/net/ipv4/ipfrag_high_thresh&lt;br /&gt;&lt;br /&gt;    Maximum memory used to reassemble IP fragments. When ipfrag_high_thresh bytes of memory is allocated for this purpose, the fragment handler will toss packets until ipfrag_low_thresh is reached.&lt;br /&gt;/proc/sys/net/ipv4/ip_nonlocal_bind&lt;br /&gt;&lt;br /&gt;    Set this if you want your applications to be able to bind to an address which doesn't belong to a device on your system. This can be useful when your machine is on a non-permanent (or even dynamic) link, so your services are able to start up and bind to a specific address when your link is down.&lt;br /&gt;/proc/sys/net/ipv4/ipfrag_low_thresh&lt;br /&gt;&lt;br /&gt;    Minimum memory used to reassemble IP fragments.&lt;br /&gt;/proc/sys/net/ipv4/ipfrag_time&lt;br /&gt;&lt;br /&gt;    Time in seconds to keep an IP fragment in memory.&lt;br /&gt;/proc/sys/net/ipv4/tcp_abort_on_overflow&lt;br /&gt;&lt;br /&gt;    A boolean flag controlling the behaviour under lots of incoming connections. When enabled, this causes the kernel to actively send RST packets when a service is overloaded.&lt;br /&gt;/proc/sys/net/ipv4/tcp_fin_timeout&lt;br /&gt;&lt;br /&gt;    Time to hold socket in state FIN-WAIT-2, if it was closed by our side. Peer can be broken and never close its side, or even died unexpectedly. Default value is 60sec. Usual value used in 2.2 was 180 seconds, you may restore it, but remember that if your machine is even underloaded WEB server, you risk to overflow memory with kilotons of dead sockets, FIN-WAIT-2 sockets are less dangerous than FIN-WAIT-1, because they eat maximum 1.5K of memory, but they tend to live longer. Cf. tcp_max_orphans.&lt;br /&gt;/proc/sys/net/ipv4/tcp_keepalive_time&lt;br /&gt;&lt;br /&gt;    How often TCP sends out keepalive messages when keepalive is enabled. Default: 2hours.&lt;br /&gt;/proc/sys/net/ipv4/tcp_keepalive_intvl&lt;br /&gt;&lt;br /&gt;    How frequent probes are retransmitted, when a probe isn't acknowledged. Default: 75 seconds.&lt;br /&gt;/proc/sys/net/ipv4/tcp_keepalive_probes&lt;br /&gt;&lt;br /&gt;    How many keepalive probes TCP will send, until it decides that the connection is broken. Default value: 9. Multiplied with tcp_keepalive_intvl, this gives the time a link can be non-responsive after a keepalive has been sent.&lt;br /&gt;/proc/sys/net/ipv4/tcp_max_orphans&lt;br /&gt;&lt;br /&gt;    Maximal number of TCP sockets not attached to any user file handle, held by system. If this number is exceeded orphaned connections are reset immediately and warning is printed. This limit exists only to prevent simple DoS attacks, you _must_ not rely on this or lower the limit artificially, but rather increase it (probably, after increasing installed memory), if network conditions require more than default value, and tune network services to linger and kill such states more aggressively. Let me remind you again: each orphan eats up to  64K of unswappable memory.&lt;br /&gt;/proc/sys/net/ipv4/tcp_orphan_retries&lt;br /&gt;&lt;br /&gt;    How may times to retry before killing TCP connection, closed by our side. Default value 7 corresponds to  50sec-16min depending on RTO. If your machine is a loaded WEB server, you should think about lowering this value, such sockets may consume significant resources. Cf. tcp_max_orphans.&lt;br /&gt;/proc/sys/net/ipv4/tcp_max_syn_backlog&lt;br /&gt;&lt;br /&gt;    Maximal number of remembered connection requests, which still did not receive an acknowledgment from connecting client. Default value is 1024 for systems with more than 128Mb of memory, and 128 for low memory machines. If server suffers of overload, try to increase this number. Warning! If you make it greater than 1024, it would be better to change TCP_SYNQ_HSIZE in include/net/tcp.h to keep TCP_SYNQ_HSIZE*16&lt;=tcp_max_syn_backlog and to recompile kernel.&lt;br /&gt;/proc/sys/net/ipv4/tcp_max_tw_buckets&lt;br /&gt;&lt;br /&gt;    Maximal number of timewait sockets held by system simultaneously. If this number is exceeded time-wait socket is immediately destroyed and warning is printed. This limit exists only to prevent simple DoS attacks, you _must_ not lower the limit artificially, but rather increase it (probably, after increasing installed memory), if network conditions require more than default value.&lt;br /&gt;/proc/sys/net/ipv4/tcp_retrans_collapse&lt;br /&gt;&lt;br /&gt;    Bug-to-bug compatibility with some broken printers. On retransmit try to send bigger packets to work around bugs in certain TCP stacks.&lt;br /&gt;/proc/sys/net/ipv4/tcp_retries1&lt;br /&gt;&lt;br /&gt;    How many times to retry before deciding that something is wrong and it is necessary to report this suspicion to network layer. Minimal RFC value is 3, it is default, which corresponds to  3sec-8min depending on RTO.&lt;br /&gt;/proc/sys/net/ipv4/tcp_retries2&lt;br /&gt;&lt;br /&gt;    How may times to retry before killing alive TCP connection. RFC 1122 says that the limit should be longer than 100 sec. It is too small number. Default value 15 corresponds to  13-30min depending on RTO.&lt;br /&gt;/proc/sys/net/ipv4/tcp_rfc1337&lt;br /&gt;&lt;br /&gt;    This boolean enables a fix for 'time-wait assassination hazards in tcp', described in RFC 1337. If enabled, this causes the kernel to drop RST packets for sockets in the time-wait state. Default: 0&lt;br /&gt;/proc/sys/net/ipv4/tcp_sack&lt;br /&gt;&lt;br /&gt;    Use Selective ACK which can be used to signify that specific packets are missing - therefore helping fast recovery.&lt;br /&gt;/proc/sys/net/ipv4/tcp_stdurg&lt;br /&gt;&lt;br /&gt;    Use the Host requirements interpretation of the TCP urg pointer field. Most hosts use the older BSD interpretation, so if you turn this on Linux might not communicate correctly with them. Default: FALSE &lt;br /&gt;/proc/sys/net/ipv4/tcp_syn_retries&lt;br /&gt;&lt;br /&gt;    Number of SYN packets the kernel will send before giving up on the new connection.&lt;br /&gt;/proc/sys/net/ipv4/tcp_synack_retries&lt;br /&gt;&lt;br /&gt;    To open the other side of the connection, the kernel sends a SYN with a piggybacked ACK on it, to acknowledge the earlier received SYN. This is part 2 of the threeway handshake. This setting determines the number of SYN+ACK packets sent before the kernel gives up on the connection.&lt;br /&gt;/proc/sys/net/ipv4/tcp_timestamps&lt;br /&gt;&lt;br /&gt;    Timestamps are used, amongst other things, to protect against wrapping sequence numbers. A 1 gigabit link might conceivably re-encounter a previous sequence number with an out-of-line value, because it was of a previous generation. The timestamp will let it recognize this 'ancient packet'.&lt;br /&gt;/proc/sys/net/ipv4/tcp_tw_recycle&lt;br /&gt;&lt;br /&gt;    Enable fast recycling TIME-WAIT sockets. Default value is 1. It should not be changed without advice/request of technical experts.&lt;br /&gt;/proc/sys/net/ipv4/tcp_window_scaling&lt;br /&gt;&lt;br /&gt;    TCP/IP normally allows windows up to 65535 bytes big. For really fast networks, this may not be enough. The window scaling options allows for almost gigabyte windows, which is good for high bandwidth*delay products.&lt;br /&gt;&lt;br /&gt;13.2.2. Per device settings&lt;br /&gt;&lt;br /&gt;DEV can either stand for a real interface, or for 'all' or 'default'. Default also changes settings for interfaces yet to be created.&lt;br /&gt;&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/accept_redirects&lt;br /&gt;&lt;br /&gt;    If a router decides that you are using it for a wrong purpose (ie, it needs to resend your packet on the same interface), it will send us a ICMP Redirect. This is a slight security risk however, so you may want to turn it off, or use secure redirects.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/accept_source_route&lt;br /&gt;&lt;br /&gt;    Not used very much anymore. You used to be able to give a packet a list of IP addresses it should visit on its way. Linux can be made to honor this IP option.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/bootp_relay&lt;br /&gt;&lt;br /&gt;    Accept packets with source address 0.b.c.d with destinations not to this host as local ones. It is supposed that a BOOTP relay daemon will catch and forward such packets.&lt;br /&gt;&lt;br /&gt;    The default is 0, since this feature is not implemented yet (kernel version 2.2.12).&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/forwarding&lt;br /&gt;&lt;br /&gt;    Enable or disable IP forwarding on this interface.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/log_martians&lt;br /&gt;&lt;br /&gt;    See the section on Reverse Path Filtering.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/mc_forwarding&lt;br /&gt;&lt;br /&gt;    If we do multicast forwarding on this interface&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/proxy_arp&lt;br /&gt;&lt;br /&gt;    If you set this to 1, this interface will respond to ARP requests for addresses the kernel has routes to. Can be very useful when building 'ip pseudo bridges'. Do take care that your netmasks are very correct before enabling this! Also be aware that the rp_filter, mentioned elsewhere, also operates on ARP queries!&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/rp_filter&lt;br /&gt;&lt;br /&gt;    See the section on Reverse Path Filtering.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/secure_redirects&lt;br /&gt;&lt;br /&gt;    Accept ICMP redirect messages only for gateways, listed in default gateway list. Enabled by default.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/send_redirects&lt;br /&gt;&lt;br /&gt;    If we send the above mentioned redirects.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/shared_media&lt;br /&gt;&lt;br /&gt;    If it is not set the kernel does not assume that different subnets on this device can communicate directly. Default setting is 'yes'.&lt;br /&gt;/proc/sys/net/ipv4/conf/DEV/tag&lt;br /&gt;&lt;br /&gt;    FIXME: fill this in&lt;br /&gt;&lt;br /&gt;13.2.3. Neighbor policy&lt;br /&gt;&lt;br /&gt;Dev can either stand for a real interface, or for 'all' or 'default'. Default also changes settings for interfaces yet to be created.&lt;br /&gt;&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/anycast_delay&lt;br /&gt;&lt;br /&gt;    Maximum for random delay of answers to neighbor solicitation messages in jiffies (1/100 sec). Not yet implemented (Linux does not have anycast support yet).&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/app_solicit&lt;br /&gt;&lt;br /&gt;    Determines the number of requests to send to the user level ARP daemon. Use 0 to turn off.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/base_reachable_time&lt;br /&gt;&lt;br /&gt;    A base value used for computing the random reachable time value as specified in RFC2461.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/delay_first_probe_time&lt;br /&gt;&lt;br /&gt;    Delay for the first time probe if the neighbor is reachable. (see gc_stale_time)&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/gc_stale_time&lt;br /&gt;&lt;br /&gt;    Determines how often to check for stale ARP entries. After an ARP entry is stale it will be resolved again (which is useful when an IP address migrates to another machine). When ucast_solicit is greater than 0 it first tries to send an ARP packet directly to the known host When that fails and mcast_solicit is greater than 0, an ARP request is broadcast.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/locktime&lt;br /&gt;&lt;br /&gt;    An ARP/neighbor entry is only replaced with a new one if the old is at least locktime old. This prevents ARP cache thrashing.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/mcast_solicit&lt;br /&gt;&lt;br /&gt;    Maximum number of retries for multicast solicitation.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/proxy_delay&lt;br /&gt;&lt;br /&gt;    Maximum time (real time is random [0..proxytime]) before answering to an ARP request for which we have an proxy ARP entry. In some cases, this is used to prevent network flooding.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/proxy_qlen&lt;br /&gt;&lt;br /&gt;    Maximum queue length of the delayed proxy arp timer. (see proxy_delay).&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/retrans_time&lt;br /&gt;&lt;br /&gt;    The time, expressed in jiffies (1/100 sec), between retransmitted Neighbor Solicitation messages. Used for address resolution and to determine if a neighbor is unreachable.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/ucast_solicit&lt;br /&gt;&lt;br /&gt;    Maximum number of retries for unicast solicitation.&lt;br /&gt;/proc/sys/net/ipv4/neigh/DEV/unres_qlen&lt;br /&gt;&lt;br /&gt;    Maximum queue length for a pending arp request - the number of packets which are accepted from other layers while the ARP address is still resolved.&lt;br /&gt;Internet QoS: Architectures and Mechanisms for Quality of Service, Zheng Wang, ISBN 1-55860-608-4&lt;br /&gt;&lt;br /&gt;    Hardcover textbook covering topics related to Quality of Service. Good for understanding basic concepts.&lt;br /&gt;&lt;br /&gt;13.2.4. Routing settings&lt;br /&gt;&lt;br /&gt;/proc/sys/net/ipv4/route/error_burst&lt;br /&gt;&lt;br /&gt;    These parameters are used to limit the warning messages written to the kernel log from the routing code. The higher the error_cost factor is, the fewer messages will be written. Error_burst controls when messages will be dropped. The default settings limit warning messages to one every five seconds.&lt;br /&gt;/proc/sys/net/ipv4/route/error_cost&lt;br /&gt;&lt;br /&gt;    These parameters are used to limit the warning messages written to the kernel log from the routing code. The higher the error_cost factor is, the fewer messages will be written. Error_burst controls when messages will be dropped. The default settings limit warning messages to one every five seconds.&lt;br /&gt;/proc/sys/net/ipv4/route/flush&lt;br /&gt;&lt;br /&gt;    Writing to this file results in a flush of the routing cache.&lt;br /&gt;/proc/sys/net/ipv4/route/gc_elasticity&lt;br /&gt;&lt;br /&gt;    Values to control the frequency and behavior of the garbage collection algorithm for the routing cache. This can be important for when doing fail over. At least gc_timeout seconds will elapse before Linux will skip to another route because the previous one has died. By default set to 300, you may want to lower it if you want to have a speedy fail over.&lt;br /&gt;&lt;br /&gt;    Also see this post by Ard van Breemen.&lt;br /&gt;/proc/sys/net/ipv4/route/gc_interval&lt;br /&gt;&lt;br /&gt;    See /proc/sys/net/ipv4/route/gc_elasticity.&lt;br /&gt;/proc/sys/net/ipv4/route/gc_min_interval&lt;br /&gt;&lt;br /&gt;    See /proc/sys/net/ipv4/route/gc_elasticity.&lt;br /&gt;/proc/sys/net/ipv4/route/gc_thresh&lt;br /&gt;&lt;br /&gt;    See /proc/sys/net/ipv4/route/gc_elasticity.&lt;br /&gt;/proc/sys/net/ipv4/route/gc_timeout&lt;br /&gt;&lt;br /&gt;    See /proc/sys/net/ipv4/route/gc_elasticity.&lt;br /&gt;/proc/sys/net/ipv4/route/max_delay&lt;br /&gt;&lt;br /&gt;    Delays for flushing the routing cache.&lt;br /&gt;/proc/sys/net/ipv4/route/max_size&lt;br /&gt;&lt;br /&gt;    Maximum size of the routing cache. Old entries will be purged once the cache reached has this size.&lt;br /&gt;/proc/sys/net/ipv4/route/min_adv_mss&lt;br /&gt;&lt;br /&gt;    FIXME: fill this in&lt;br /&gt;/proc/sys/net/ipv4/route/min_delay&lt;br /&gt;&lt;br /&gt;    Delays for flushing the routing cache.&lt;br /&gt;/proc/sys/net/ipv4/route/min_pmtu&lt;br /&gt;&lt;br /&gt;    FIXME: fill this in&lt;br /&gt;/proc/sys/net/ipv4/route/mtu_expires&lt;br /&gt;&lt;br /&gt;    FIXME: fill this in&lt;br /&gt;/proc/sys/net/ipv4/route/redirect_load&lt;br /&gt;&lt;br /&gt;    Factors which determine if more ICMP redirects should be sent to a specific host. No redirects will be sent once the load limit or the maximum number of redirects has been reached.&lt;br /&gt;/proc/sys/net/ipv4/route/redirect_number&lt;br /&gt;&lt;br /&gt;    See /proc/sys/net/ipv4/route/redirect_load.&lt;br /&gt;/proc/sys/net/ipv4/route/redirect_silence&lt;br /&gt;&lt;br /&gt;    Timeout for redirects. After this period redirects will be sent again, even if this has been stopped, because the load or number limit has been reached.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3346661525138758088?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/Adv-Routing-HOWTO.html' title='Linu kernel network settings'/><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3346661525138758088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3346661525138758088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3346661525138758088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3346661525138758088'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/12/linu-kernel-network-settings.html' title='Linu kernel network settings'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3188471626074366604</id><published>2011-12-21T12:10:00.000+02:00</published><updated>2011-12-21T12:10:11.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Reverse Path Filtering</title><content type='html'>Reverse Path Filtering&lt;br /&gt;&lt;br /&gt;By default, routers route everything, even packets which 'obviously' don't belong on your network. A common example is private IP space escaping onto the Internet. If you have an interface with a route of 195.96.96.0/24 to it, you do not expect packets from 212.64.94.1 to arrive there.&lt;br /&gt;&lt;br /&gt;Lots of people will want to turn this feature off, so the kernel hackers have made it easy. There are files in /proc where you can tell the kernel to do this for you. The method is called "Reverse Path Filtering". Basically, if the reply to this packet wouldn't go out the interface this packet came in, then this is a bogus packet and should be ignored.&lt;br /&gt;&lt;br /&gt;The following fragment will turn this on for all current and future interfaces.&lt;br /&gt;&lt;br /&gt;# for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do&lt;br /&gt;&gt;  echo 2 &gt; $i &lt;br /&gt;&gt; done&lt;br /&gt;&lt;br /&gt;Going by the example above, if a packet arrived on the Linux router on eth1 claiming to come from the Office+ISP subnet, it would be dropped. Similarly, if a packet came from the Office subnet, claiming to be from somewhere outside your firewall, it would be dropped also.&lt;br /&gt;&lt;br /&gt;The above is full reverse path filtering. The default is to only filter based on IPs that are on directly connected networks. This is because the full filtering breaks in the case of asymmetric routing (where packets come in one way and go out another, like satellite traffic, or if you have dynamic (bgp, ospf, rip) routes in your network. The data comes down through the satellite dish and replies go back through normal land-lines).&lt;br /&gt;&lt;br /&gt;If this exception applies to you (and you'll probably know if it does) you can simply turn off the rp_filter on the interface where the satellite data comes in. If you want to see if any packets are being dropped, the log_martians file in the same directory will tell the kernel to log them to your syslog.&lt;br /&gt;&lt;br /&gt;# echo 1 &gt;/proc/sys/net/ipv4/conf/&lt;interfacename&gt;/log_martians&lt;br /&gt;&lt;br /&gt;FIXME: is setting the conf/{default,all}/* files enough? - martijn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3188471626074366604?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3188471626074366604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3188471626074366604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3188471626074366604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3188471626074366604'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/12/reverse-path-filtering.html' title='Reverse Path Filtering'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7607581917753504668</id><published>2011-12-15T09:30:00.002+02:00</published><updated>2011-12-15T09:30:54.386+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><title type='text'>real time snmp stats (port traffic)</title><content type='html'>statistic ~ # ifstat -w -s public@10.155.0.8&lt;br /&gt;Port1: 1000Base-SX  Port2: 1000Base-SX  Port7: Dual Media   Port8: Dual Media&lt;br /&gt; KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out&lt;br /&gt;18719.73  23470.45    410.72   6435.71   2140.43    750.60  28274.31  17297.05&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7607581917753504668?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7607581917753504668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7607581917753504668' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7607581917753504668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7607581917753504668'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/12/real-time-snmp-stats-port-traffic.html' title='real time snmp stats (port traffic)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7144212573026392783</id><published>2011-10-16T22:16:00.000+03:00</published><updated>2011-10-16T22:16:30.477+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='clock'/><title type='text'>Linux ATI Catalyst Commands (Temp and clock)</title><content type='html'>To display the temperature of your cores:&lt;br /&gt;&lt;br /&gt;aticonfig --odgt --adapter=all&lt;br /&gt;&lt;br /&gt;To display the clock speeds of your cores:&lt;br /&gt;&lt;br /&gt;aticonfig --odgc --adapter=all&lt;br /&gt;&lt;br /&gt;To show or set your fan speed:&lt;br /&gt;&lt;br /&gt;Shows fan speed&lt;br /&gt;aticonfig --pplib-cmd "get fanspeed 0"&lt;br /&gt;&lt;br /&gt;Sets fan speed to 100%&lt;br /&gt;aticonfig --pplib-cmd "set fanspeed 0 100"&lt;br /&gt;&lt;br /&gt;If you have multiple cores, you'll need to export a different display variable to access the different cores, like this:&lt;br /&gt;&lt;br /&gt;Show fan speed on 2nd card:  &lt;br /&gt;export DISPLAY=:0.1; aticonfig --pplib-cmd "get fanspeed 0"&lt;br /&gt;&lt;br /&gt;You can change the .1 to .2, .3 etc... for how many cards you have in the system.&lt;br /&gt;&lt;br /&gt;To change your clock rates:&lt;br /&gt;&lt;br /&gt;Set your core clock to 900MHz and your memory clock to 1000MHz on all cards. Change according to your desire.&lt;br /&gt;aticonfig --od-setclocks=900,1000 --adapter=all&lt;br /&gt;&lt;br /&gt;To set for a particular card, change --adapter=all to the adapter number you want to change.&lt;br /&gt;&lt;br /&gt;That should take care of just about everything you need to do to mine in a Bitcoin pool.&lt;br /&gt;  &lt;br /&gt;Any time you add an additional card, don't forget to run:&lt;br /&gt;$ sudo aticonfig --initial -f --adapter=all&lt;br /&gt;$ sudo chmod 644 /etc/X11/xorg.conf&lt;br /&gt;and they will immediately show up&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7144212573026392783?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7144212573026392783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7144212573026392783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7144212573026392783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7144212573026392783'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/10/linux-ati-catalyst-commands-temp-and.html' title='Linux ATI Catalyst Commands (Temp and clock)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8938226967073794854</id><published>2011-10-14T14:02:00.001+03:00</published><updated>2011-10-14T14:02:03.562+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='group'/><category scheme='http://www.blogger.com/atom/ns#' term='add'/><title type='text'>add user to group (linux)</title><content type='html'># gpasswd -a yourusername audio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8938226967073794854?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8938226967073794854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8938226967073794854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8938226967073794854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8938226967073794854'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/10/add-user-to-group-linux.html' title='add user to group (linux)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4911195756985441843</id><published>2011-09-08T16:58:00.000+03:00</published><updated>2011-09-08T16:58:03.758+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shared data'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='multiprocessing'/><title type='text'>Python multiprocessing - shared class/object</title><content type='html'>Simple way to use the buildin multiprocessing functions to share&lt;br /&gt;object (maybe data class) between processes.&lt;br /&gt;&lt;br /&gt;For a long time now, i've been writing an network/server monitoring&lt;br /&gt;shit ...I think its around version 4 now.. (I bump up the version&lt;br /&gt;on every re-write). I've started this project more to learn python&lt;br /&gt;then anything else... and when I have time and feel like coding...&lt;br /&gt;i go add/fix/edit stuff on it.... Actually the project (btw it's&lt;br /&gt;called xmon) is quite the thing (at it was from version 1.0+)&lt;br /&gt;It uses at lest 5-6 processes and 5-6 threads (if its monitoring&lt;br /&gt;more boxes this number can grow). Its listening on port for reports,&lt;br /&gt;another thread is an snmp trap daemon, there's an graph creating&lt;br /&gt;process, data handeling process, process for the database connection,&lt;br /&gt;another one witch handles unix socket for communication with the &lt;br /&gt;daemon.... and so on , and so on....&lt;br /&gt;Anyway, between version 0.1 and 4.0 i've switched between 3-4 different&lt;br /&gt;ways to handle the shared data (its kind of a bitch to share data&lt;br /&gt;between processes in python :/)&lt;br /&gt;So in this post I'll talk about the conclusions I got from testing&lt;br /&gt;different ways to share the data....(there are quite a few ways to do it!)&lt;br /&gt;So ...i think i'll do it chronoilogicly ....at the begining i've started&lt;br /&gt;with threads ...so shareding the data was easy ...I think it was around&lt;br /&gt;version 1.0 where i've started using processes....At first i've stared&lt;br /&gt;using the manager Dict and List objects witch the multiprocessing module&lt;br /&gt;gives you...they are nice if you don't need to handle a lot of data,&lt;br /&gt;they are easy to create and you use them as normal dict/list... you&lt;br /&gt;don't need to worry about Locks and stuff, its all done internaly...&lt;br /&gt;Around version 2.0 (this one i've deleted by accident and had to start&lt;br /&gt;from scratch :/) I've had to much data to use the multiprocessing&lt;br /&gt;dict/list objects... (My data class had around 60-70 dicts :P) &lt;br /&gt;so I've done something else.... i've moved the DataClass to a separate&lt;br /&gt;process, witch had multiprocessing.Pipe() and multiprocessing.Lock()&lt;br /&gt;and all other processes can get/set data using the Pipe (and the Lock&lt;br /&gt;is just to be sure we'll not have 2 clients writing in the Pipe at &lt;br /&gt;the same time..this makes the multiprocessing module crazy).&lt;br /&gt;This way everything works great...the loginc of getting/setting&lt;br /&gt;shared data just needed few minior changes (to get the lock before&lt;br /&gt;the data and release it after that).... but with Pipes you can't&lt;br /&gt;can't send/recv unpackable objects :/&lt;br /&gt;So finally now i've decided ('ive decided a long time ago, but &lt;br /&gt;i've finding time to do it just now) to use the multiprocessing&lt;br /&gt;BaseManager, to share class DataClass(object) between the processes.&lt;br /&gt;This way my data objects is more like an object insted of socket (at&lt;br /&gt;it was while i was using Pipe())&lt;br /&gt;Its quite better to have to use:&lt;br /&gt;&lt;blockquote&gt;dataObject.set('somedata','value1')&lt;br /&gt;result = dataObject.get('somedata')&lt;/blockquote&gt;&lt;br /&gt;insted of:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sharedLock.aquire()&lt;br /&gt;sharedPipe.send('set', ['somedata', 'value1'])&lt;br /&gt;sharedPipe.release()&lt;br /&gt;&lt;br /&gt;sharedLock.aquire()&lt;br /&gt;sharedPipe.send('get', ['somedata'])&lt;br /&gt;result = sharedPipe.recv()&lt;br /&gt;sharedLock.release()&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So here's a short example of what i'm talking about:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;dataProcess.py:&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;from multiprocessing.managers import BaseManager&lt;br /&gt;&lt;br /&gt;class DataManager(BaseManager): pass&lt;br /&gt;class DataObject(object):&lt;br /&gt; def __init__(self): self.mlist = []&lt;br /&gt; def add(self, a): self.mlist.append(a)&lt;br /&gt; def get(self, a): return self.mlist&lt;br /&gt;&lt;br /&gt;data = DataObject()&lt;br /&gt;data.add(2); data.add(100)&lt;br /&gt;&lt;br /&gt;DataManager.register('get_dataObject', callable=lambda:data)&lt;br /&gt;m = DataManager(address=('127.0.0.1', 7350),authkey='somekey')&lt;br /&gt;m.set_server()&lt;br /&gt;s.serve_forever()&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;dataClient.py:&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;from multiprocessing.managers import BaseManager&lt;br /&gt;&lt;br /&gt;class DataManager(BaseManager): pass&lt;br /&gt;&lt;br /&gt;DataManager.register('get_dataObject')&lt;br /&gt;m = DataManager(address=('127.0.0.1', 7350), authkey='somekey')&lt;br /&gt;m.connect()&lt;br /&gt;data = m.get_dataObject()&lt;br /&gt;print(data.get())&lt;br /&gt;&lt;br /&gt;data.add(5)&lt;br /&gt;print(data.get())&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[root@gh0st ~]# python2 dataClient.py&lt;br /&gt;[2, 100]&lt;br /&gt;[2, 100, 5]&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4911195756985441843?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4911195756985441843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4911195756985441843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4911195756985441843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4911195756985441843'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/09/python-multiprocessing-shared.html' title='Python multiprocessing - shared class/object'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6412238500210224184</id><published>2011-09-08T14:20:00.000+03:00</published><updated>2011-09-08T14:20:39.116+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Speed Tips</title><content type='html'>&lt;b&gt;String Concatenation&lt;/b&gt;&lt;br /&gt;Strings in Python are immutable. This fact frequently sneaks up and bites novice Python programmers on the rump. Immutability confers some advantages and disadvantages. In the plus column, strings can be used as keys in dictionaries and individual copies can be shared among multiple variable bindings. (Python automatically shares one- and two-character strings.) In the minus column, you can't say something like, "change all the 'a's to 'b's" in any given string. Instead, you have to create a new string with the desired properties. This continual copying can lead to significant inefficiencies in Python programs.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Avoid this:&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;s = ""&lt;br /&gt;for substring in list:&lt;br /&gt;    s += substring&lt;/blockquote&gt;&lt;br /&gt;Use s = "".join(list) instead. The former is a very common and catastrophic mistake when building large strings. Similarly, if you are generating bits of a string sequentially instead of:&lt;br /&gt;&lt;blockquote&gt;s = ""&lt;br /&gt;for x in list:&lt;br /&gt;    s += some_function(x)&lt;br /&gt;&lt;/blockquote&gt;&lt;i&gt;use&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;slist = [some_function(elt) for elt in somelist]&lt;br /&gt;s = "".join(slist)&lt;br /&gt;&lt;/blockquote&gt;&lt;i&gt;Avoid:&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;out = "&lt;html&gt;" + head + prologue + query + tail + "&lt;/html&gt;"&lt;br /&gt;&lt;/blockquote&gt;&lt;i&gt;Instead, use&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;out = "&lt;html&gt;%s%s%s%s&lt;/html&gt;" % (head, prologue, query, tail)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Loops&lt;/b&gt;&lt;br /&gt;Python supports a couple of looping constructs. The for statement is most commonly used. It loops over the elements of a sequence, assigning each to the loop variable. If the body of your loop is simple, the interpreter overhead of the for loop itself can be a substantial amount of the overhead. This is where the map function is handy. You can think of map as a for moved into C code. The only restriction is that the "loop body" of map must be a function call. Besides the syntactic benefit of list comprehensions, they are often as fast or faster than equivalent use of map.&lt;br /&gt;&lt;br /&gt;Here's a straightforward example. Instead of looping over a list of words and converting them to upper case: &lt;br /&gt;&lt;blockquote&gt;newlist = []&lt;br /&gt;for word in oldlist:&lt;br /&gt;    newlist.append(word.upper())&lt;/blockquote&gt;&lt;br /&gt;&lt;i&gt;you can use map to push the loop from the interpreter into compiled C code:&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;newlist = map(str.upper, oldlist)&lt;br /&gt;&lt;/blockquote&gt;List comprehensions were added to Python in version 2.0 as well. They provide a syntactically more compact and more efficient way of writing the above for loop:&lt;br /&gt;&lt;blockquote&gt;newlist = [s.upper() for s in oldlist]&lt;br /&gt;&lt;/blockquote&gt;Generator expressions were added to Python in version 2.4. They function more-or-less like list comprehensions or map but avoid the overhead of generating the entire list at once. Instead, they return a generator object which can be iterated over bit-by-bit:&lt;br /&gt;&lt;blockquote&gt;iterator = (s.upper() for s in oldlist)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avoiding dots...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Suppose you can't use map or a list comprehension? You may be stuck with the for loop. The for loop example has another inefficiency. Both newlist.append and word.upper are function references that are reevaluated each time through the loop. The original loop can be replaced with:&lt;br /&gt;&lt;blockquote&gt;upper = str.upper&lt;br /&gt;newlist = []&lt;br /&gt;append = newlist.append&lt;br /&gt;for word in oldlist:&lt;br /&gt;    append(upper(word))&lt;/blockquote&gt;&lt;br /&gt;This technique should be used with caution. It gets more difficult to maintain if the loop is large. Unless you are intimately familiar with that piece of code you will find yourself scanning up to check the definitions of append and upper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6412238500210224184?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wiki.python.org/moin/PythonSpeed/PerformanceTips' title='Python Speed Tips'/><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6412238500210224184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6412238500210224184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6412238500210224184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6412238500210224184'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/09/python-speed-tips.html' title='Python Speed Tips'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1951521102424767215</id><published>2011-07-22T10:06:00.000+03:00</published><updated>2011-07-22T10:06:36.989+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Kernel 3.0 changes</title><content type='html'>1.5. Berkeley Packet Filter just-in-time filtering&lt;br /&gt;&lt;br /&gt;Recommended LWN article: A JIT for packet filters&lt;br /&gt;&lt;br /&gt;The Berkeley Packet Filter filtering capabilities, used by tools like libpcap/tcpdump, are normally handled by an interpreter. This release adds a simple JIT that generates native code when filter is loaded in memory (something already done by other OSes, like FreeBSD). Admin need to enable this feature writting "1" to /proc/sys/net/core/bpf_jit_enable&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1951521102424767215?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1951521102424767215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1951521102424767215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1951521102424767215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1951521102424767215'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/07/kernel-30-changes.html' title='Kernel 3.0 changes'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-53208366368728607</id><published>2011-06-28T10:58:00.001+03:00</published><updated>2011-06-28T10:58:02.639+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>proc sutff</title><content type='html'>echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;&lt;br /&gt;# the following two parametes will break at least emule and are way too low to make sense.&lt;br /&gt;#echo 1024 &gt; /proc/sys/net/ipv4/ipfrag_high_thresh&lt;br /&gt;#echo 512 &gt; /proc/sys/net/ipv4/ipfrag_low_thresh&lt;br /&gt;echo 64000 &gt; /proc/sys/net/ipv4/ipfrag_high_thresh&lt;br /&gt;echo 48000 &gt; /proc/sys/net/ipv4/ipfrag_low_thresh&lt;br /&gt;echo 10 &gt; /proc/sys/net/ipv4/ipfrag_time&lt;br /&gt;echo 5 &gt; /proc/sys/net/ipv4/icmp_ratelimit&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/accept_source_route&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/accept_redirects&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/conf/eth0/log_martians&lt;br /&gt;echo 10 &gt; /proc/sys/net/ipv4/neigh/eth0/locktime&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/proxy_arp&lt;br /&gt;echo 50 &gt; /proc/sys/net/ipv4/neigh/eth0/gc_stale_time&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/send_redirects&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/secure_redirects&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses&lt;br /&gt;echo 5 &gt; /proc/sys/net/ipv4/igmp_max_memberships&lt;br /&gt;echo 2 &gt; /proc/sys/net/ipv4/igmp_max_msf&lt;br /&gt;echo 1024 &gt; /proc/sys/net/ipv4/tcp_max_orphans&lt;br /&gt;echo 2 &gt; /proc/sys/net/ipv4/tcp_syn_retries&lt;br /&gt;echo 2 &gt; /proc/sys/net/ipv4/tcp_synack_retries&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/tcp_abort_on_overflow&lt;br /&gt;echo 10 &gt; /proc/sys/net/ipv4/tcp_fin_timeout&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/route/redirect_number&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/conf/all/rp_filter&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/conf/eth0/rp_filter&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies&lt;br /&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/all/accept_source_route&lt;br /&gt;echo 61 &gt; /proc/sys/net/ipv4/ip_default_ttl&lt;br /&gt;# DoS protection by tweaking the timeouts&lt;br /&gt;echo “1800″ &gt; /proc/sys/net/ipv4/tcp_keepalive_time&lt;br /&gt;echo “0″ &gt; /proc/sys/net/ipv4/tcp_window_scaling&lt;br /&gt;echo “0″ &gt; /proc/sys/net/ipv4/tcp_sack&lt;br /&gt;# We pretend to be a Checkpoint firewall on Windows XP&lt;br /&gt;echo 4096 87380 4194304 &gt;/proc/sys/net/ipv4/tcp_rmem&lt;br /&gt;echo 4096 87380 4194304 &gt;/proc/sys/net/ipv4/tcp_wmem&lt;br /&gt;# Check network overload (explicit congestion notification)&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/tcp_ecn&lt;br /&gt;echo “30000 60000″ &gt; /proc/sys/net/ipv4/ip_local_port_range&lt;br /&gt;echo 4096 &gt; /proc/sys/net/ipv4/ip_conntrack_max&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-53208366368728607?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/53208366368728607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=53208366368728607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/53208366368728607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/53208366368728607'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/06/proc-sutff.html' title='proc sutff'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1345450980111124098</id><published>2011-06-16T11:47:00.001+03:00</published><updated>2011-06-16T11:47:53.605+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Авиокомпанията Quantas</title><content type='html'>Авиокомпанията Quantas е известна с това, че е единствената голяма компания, чиито самолет никога не е претърпявал катастрофа. Навярно заслуга за това има и строгата процедура по тестване на самолетите преди полет и попълваните за целта дневници по поддръжката. В тях пилотите вписват своите забележки (З), а механиците от наземния персонал - своите отговори (О). Тъй като и двете страни се отличават с особеното си чуство за дружелюбен, но понякога черен хумор, с годините се е натрупала доста своеобразна колекция от лаконични задочни разговори. Предлагаме ви малка част от тях: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Лявата вътрешна гума е почти наложително да бъде заменена. &lt;br /&gt;&lt;br /&gt;О: Почти заменихме лявата вътрешна гума. &lt;br /&gt; &lt;br /&gt;З: Нещо подрънква в пилотската кабина.&lt;br /&gt;&lt;br /&gt;О: Нещо беше затегнато в пилотската кабина. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Има умрели бръмбари по челното стъкло. &lt;br /&gt;&lt;br /&gt;О: Поръчани са живи такива. Ще ги инсталираме след следващия полет. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Има признаци за протичане на течност по десния колесник. &lt;br /&gt;&lt;br /&gt;О: Признаците са отстранени. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Системата "Свой-Чужд" не работи. &lt;br /&gt;&lt;br /&gt;О: Системата "Свой-Чужд" никога не работи, когато е изключена. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Двигател, инв. № 380-8006FAF-89-19, липсва под лявото крило. &lt;br /&gt;&lt;br /&gt;О: След кратко разследване, двигател, инв. № 380-8006FAF-89-19, беше открит под дясното крило. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: В пилотската кабина има мишка. &lt;br /&gt;&lt;br /&gt;О: В оборудването на пилотската кабина е добавена котка. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Полетът мина нормално, но помощната система за управление при приземяване работи доста грубо. &lt;br /&gt;&lt;br /&gt;О: На този тип самолет няма помощна система за управление при приземяване. &lt;br /&gt;&lt;br /&gt;З: В момента на включване на автопилота самолетът губи 30 м височина. &lt;br /&gt;&lt;br /&gt;О: Проверено неколкократно в хангара - самолетът държи височината стабилно. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: При заключване на ръчката на газта, същата се движи много трудно. &lt;br /&gt;&lt;br /&gt;О: Ключалката е сложена там с цел ръчката на газта да се движи ТРУДНО, идиот такъв! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Подозирам, че в челното стъкло има пукнатина. &lt;br /&gt;&lt;br /&gt;О: Подозирам, че си прав. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Самолетът се държи странно. &lt;br /&gt;&lt;br /&gt;О: На самолета бе наредено да се държи прилично. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Иззад контролния блок на радиста се чува силен звук - като че ли там седи някаво джудже и блъска с чук по плоскостите. &lt;br /&gt;&lt;br /&gt;О: Джуджето е открито. Чукът - иззет. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;З: Радарът пищи неистово. &lt;br /&gt;&lt;br /&gt;О: Радарът е препрограмиран. Сега ще чурулика тихо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1345450980111124098?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1345450980111124098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1345450980111124098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1345450980111124098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1345450980111124098'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/06/quantas.html' title='Авиокомпанията Quantas'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1162330538084976084</id><published>2011-06-11T12:23:00.003+03:00</published><updated>2011-06-11T12:30:07.539+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erepublik'/><category scheme='http://www.blogger.com/atom/ns#' term='irc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='callbot'/><title type='text'>irc callbot :)</title><content type='html'>So... I had some time to lose, and a friend of mine from Macedonia, (we are playing the same game! erepublik) asked me if I can help him find callbot*... I was bored at the time and decided, what the hell ..i'll write one .... this was about a week ago, now the bot is about 500 lines of code (python) , when I started , the first version was only 200-210 lines... anyway now it has separete thread do fetch information from the game API , it has userfile, admins, multiple commands for some&lt;br /&gt;stuff....not only calling. Anyway if it usefull for someone:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://93.183.131.3/python/callbot/"&gt;http://93.183.131.3/python/callbot/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Current version is 0.99b8&lt;br /&gt;&lt;br /&gt;* callbot - mm...most of the times just mIRC script or eggdrop tcl, witch on command (let's say .call) shouts all user nicknames (in the channe) and the 'call'. Its mainly used for to cordinate&lt;br /&gt;the eArmy in the game.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here's the changelog:&lt;br /&gt;# v0.99b8  - [10.06.2011]&lt;br /&gt;#  * added new battles/with hospitals/ monitor.&lt;br /&gt;#  * new way to store the data into file (more data)&lt;br /&gt;#  * fixed an load users issue&lt;br /&gt;#  * .save command added&lt;br /&gt;#  * .die procedure improved&lt;br /&gt;#  * remove userfile from config&lt;br /&gt;#&lt;br /&gt;# v0.99b7  - [09.06.2011]&lt;br /&gt;#  * moving the user file to cwd&lt;br /&gt;#  * storing battle data in array and on disk&lt;br /&gt;#  * added round time in .battle command&lt;br /&gt;#  * .sync command added - forces sync with API db&lt;br /&gt;#  * fixed up json array parsing for .battle cmd&lt;br /&gt;#  * fancy up the .battle command&lt;br /&gt;#  * removing nickname lenght protection&lt;br /&gt;#  * code clean up&lt;br /&gt;#  * APIcollector thread added&lt;br /&gt;#&lt;br /&gt;# v0.99b6  - [08.06.2011]&lt;br /&gt;#  * .battle command added&lt;br /&gt;#   This commands checks the&lt;br /&gt;#   domination for given battle&lt;br /&gt;#&lt;br /&gt;# v0.99b5  - [07.06.2011]&lt;br /&gt;#  * .say command added [for ILoveU2 :)]&lt;br /&gt;#&lt;br /&gt;# v0.99b4  - [07.06.2011]&lt;br /&gt;#  * ctcp replays added&lt;br /&gt;#  * .sysinfo command added.&lt;br /&gt;#  * ircname/realname support added&lt;br /&gt;#  * Some small changes to the code..&lt;br /&gt;#  * ident to NickServ on request only&lt;br /&gt;#  * .author command added.&lt;br /&gt;#&lt;br /&gt;# v0.99b3  - [06.06.2011]&lt;br /&gt;#  * added logging/logfile&lt;br /&gt;#  * .version command added&lt;br /&gt;#  * fixed a skip nick issue&lt;br /&gt;#  * small changes and fixes&lt;br /&gt;#  * switched to outside config&lt;br /&gt;#  * now using pickle for userlist&lt;br /&gt;#&lt;br /&gt;# v0.99b2  - [05.05.2011]&lt;br /&gt;#  * added skiplist:&lt;br /&gt;#  * added help&lt;br /&gt;#  # New commands:&lt;br /&gt;#   clean,skip,skiplist,list,add,remove&lt;br /&gt;#&lt;br /&gt;# v0.99b1  - [05.05.2011]&lt;br /&gt;#  * initial release&lt;br /&gt;#  * possability to mass call/notice&lt;br /&gt;#  # Commands: call,notice&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1162330538084976084?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1162330538084976084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1162330538084976084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1162330538084976084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1162330538084976084'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/06/irc-callbot.html' title='irc callbot :)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2110101066763204378</id><published>2011-05-11T15:24:00.003+03:00</published><updated>2011-05-11T15:31:38.657+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='guppy'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='leak'/><title type='text'>python memory analysis /find leaks/</title><content type='html'>&lt;span style="font-weight:bold;"&gt;gupyy&lt;/span&gt; is an great ...and a &lt;span style="font-style:italic;"&gt;bit&lt;/span&gt; eccentric... :]&lt;br /&gt;This is an short guppy example.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt;&gt; import guppy&lt;br /&gt;&gt;&gt;&gt; h = guppy.hpy()&lt;br /&gt;&gt;&gt;&gt; def update():   &lt;br /&gt;...     print h.heap()&lt;br /&gt;...     h.setref()&lt;br /&gt;... &lt;br /&gt;&gt;&gt;&gt; def update_without_ref():&lt;br /&gt;...     print h.heap()&lt;br /&gt;... &lt;br /&gt;&gt;&gt;&gt; update()&lt;br /&gt;Partition of a set of 21982 objects. Total size = 1649508 bytes.&lt;br /&gt; Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)&lt;br /&gt;     0   9864  45   673428  41    673428  41 str&lt;br /&gt;     1   5000  23   182032  11    855460  52 tuple&lt;br /&gt;     2    342   2   110256   7    965716  59 dict (no owner)&lt;br /&gt;     3   1415   6    96220   6   1061936  64 types.CodeType&lt;br /&gt;     4     61   0    91624   6   1153560  70 dict of module&lt;br /&gt;     5    166   1    85744   5   1239304  75 dict of type&lt;br /&gt;     6    182   1    78552   5   1317856  80 type&lt;br /&gt;     7   1353   6    75768   5   1393624  84 function&lt;br /&gt;     8    125   1    67304   4   1460928  89 dict of class&lt;br /&gt;     9    960   4    34560   2   1495488  91 __builtin__.wrapper_descriptor&lt;br /&gt;&lt;80 more rows. Type e.g. '_.more' to view.&gt;&lt;br /&gt;&gt;&gt;&gt; a=19999*'AaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa'&lt;br /&gt;&gt;&gt;&gt; update()&lt;br /&gt;Partition of a set of 33 objects. Total size = 1063092 bytes.&lt;br /&gt; Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)&lt;br /&gt;     0     10  30  1060284 100   1060284 100 str&lt;br /&gt;     1      3   9     1304   0   1061588 100 types.FrameType&lt;br /&gt;     2      4  12      544   0   1062132 100 dict of guppy.etc.Glue.Interface&lt;br /&gt;     3      3   9      408   0   1062540 100 dict (no owner)&lt;br /&gt;     4      1   3      136   0   1062676 100 dict of guppy.etc.Glue.Owner&lt;br /&gt;     5      4  12      112   0   1062788 100 guppy.etc.Glue.Interface&lt;br /&gt;     6      3   9      108   0   1062896 100 types.MethodType&lt;br /&gt;     7      1   3       68   0   1062964 100 types.CodeType&lt;br /&gt;     8      2   6       56   0   1063020 100 tuple&lt;br /&gt;     9      1   3       40   0   1063060 100 __builtin__.weakref&lt;br /&gt;    10      1   3       32   0   1063092 100 guppy.etc.Glue.Owner&lt;br /&gt;&gt;&gt;&gt; b=100*['fsdfsd']&lt;br /&gt;&gt;&gt;&gt; update()&lt;br /&gt;Partition of a set of 11 objects. Total size = 1848 bytes.&lt;br /&gt; Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)&lt;br /&gt;     0      3  27     1152  62      1152  62 types.FrameType&lt;br /&gt;     1      1   9      448  24      1600  87 list&lt;br /&gt;     2      4  36      124   7      1724  93 str&lt;br /&gt;     3      1   9       68   4      1792  97 types.CodeType&lt;br /&gt;     4      2  18       56   3      1848 100 tuple&lt;br /&gt;&gt;&gt;&gt; &lt;br /&gt;&gt;&gt;&gt; update_without_ref()&lt;br /&gt;Partition of a set of 17 objects. Total size = 1716 bytes.&lt;br /&gt; Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)&lt;br /&gt;     0      3  18     1172  68      1172  68 types.FrameType&lt;br /&gt;     1      7  41      236  14      1408  82 str&lt;br /&gt;     2      2  12      136   8      1544  90 types.CodeType&lt;br /&gt;     3      4  24      116   7      1660  97 tuple&lt;br /&gt;     4      1   6       56   3      1716 100 function&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;U can use 'h.heap().get_rp(40)' insted of 'h.heap()' to get relative memory consumption w/heap traversing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2110101066763204378?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2110101066763204378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2110101066763204378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2110101066763204378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2110101066763204378'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/05/python-memory-analysis-find-leaks.html' title='python memory analysis /find leaks/'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6725474845944267777</id><published>2011-03-21T22:59:00.002+02:00</published><updated>2011-03-21T23:28:17.936+02:00</updated><title type='text'>bash kung-fu pt.2</title><content type='html'>&lt;blockquote&gt;history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n | tail | sort -nr&lt;br /&gt;Most &lt;/blockquote&gt;&lt;br /&gt;Display top Keywords from history&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh username@remotehost 'mysqldump -u &lt;dbusername&gt; -p&lt;dbpassword&gt; &lt;dbname&gt; tbl_name_1 tbl_name_2 tbl_name_3 | gzip -c -' | gzip -dc - | mysql -u &lt;localusername&gt; -p&lt;localdbpassword&gt; &lt;localdbname&gt;&lt;/blockquote&gt;&lt;br /&gt;A command to copy mysql tables from a remote host to current host via ssh. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ps -eo pmem,pid,comm --no-headers | sort -k1 -rn | head -10&lt;br /&gt;&lt;/blockquote&gt;show top 10 most memory hungry process with a simple format of (%mem, pid, short command)&lt;br /&gt;Pros: the format is very simple, there is no need to show every columns, and full command with args&lt;br /&gt;the first column is memory consumption %&lt;br /&gt;the second column is pid&lt;br /&gt;the third is just the command (without full arguments, most application's arguments are too long)&lt;br /&gt;You can decide which application to kill then.&lt;br /&gt;&lt;br /&gt;until (ssh root@10.1.1.39 2&gt; /dev/null); do date; sleep 15; done&lt;br /&gt;do something else while waiting for an event, such as reboot&lt;br /&gt;until (ssh root@10.1.1.39 2&gt; /dev/null); do date; sleep 15; done&lt;br /&gt;In this case will execute "date" then "sleep 15" until we are able to ssh into server, such as after a reboot&lt;br /&gt;Could also be like:&lt;br /&gt;until ( ping 10.1.1.39 1&gt; /dev/null); do echo "server 10.1.1.39 is down"; sleep 15; done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6725474845944267777?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6725474845944267777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6725474845944267777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6725474845944267777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6725474845944267777'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/03/bash-kung-fu-pt2.html' title='bash kung-fu pt.2'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-9163492159703286253</id><published>2011-03-06T21:23:00.000+02:00</published><updated>2011-03-06T21:24:07.252+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python data archive</title><content type='html'>bzip2 compression&lt;br /&gt;&lt;br /&gt;    bzip2 is a freely available, patent free (see below), high-quality data compressor. It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression.&lt;br /&gt;&lt;br /&gt;Compressing a file:&lt;br /&gt;&lt;br /&gt;import bz2&lt;br /&gt;import fileinput&lt;br /&gt; &lt;br /&gt;output = bz2.BZ2File('a.txt.bz2', 'wb')&lt;br /&gt; &lt;br /&gt;for line in fileinput.input('a.txt'):&lt;br /&gt;        output.write(line)&lt;br /&gt; &lt;br /&gt;output.close()&lt;br /&gt;&lt;br /&gt;This will compess a.txt to a.txt.bz2.&lt;br /&gt;&lt;br /&gt;Decompress file.&lt;br /&gt;&lt;br /&gt;import bz2&lt;br /&gt; &lt;br /&gt;input_file = bz2.BZ2File('a.txt.bz2', 'rb')&lt;br /&gt;try:&lt;br /&gt;    print input_file.read()&lt;br /&gt;finally:&lt;br /&gt;    input_file.close()&lt;br /&gt;&lt;br /&gt;gzip compression&lt;br /&gt;&lt;br /&gt;    gzip (GNU zip) is a compression utility designed to be a replacement for compress. Its main advantages over compress are much better compression and freedom from patented algorithms.&lt;br /&gt;&lt;br /&gt;Compress file using gzip&lt;br /&gt;&lt;br /&gt;import gzip&lt;br /&gt;import fileinput&lt;br /&gt; &lt;br /&gt;output = gzip.open('a.txt.gz', 'wb')&lt;br /&gt; &lt;br /&gt;for line in fileinput.input('a.txt'):&lt;br /&gt;        output.write(line)&lt;br /&gt; &lt;br /&gt;output.close()&lt;br /&gt;&lt;br /&gt;Decompress the file.&lt;br /&gt;&lt;br /&gt;import gzip&lt;br /&gt; &lt;br /&gt;input_file = gzip.open('a.txt.gz', 'rb')&lt;br /&gt;try:&lt;br /&gt;    print input_file.read()&lt;br /&gt;finally:&lt;br /&gt;    input_file.close()&lt;br /&gt;&lt;br /&gt;Tar archive access&lt;br /&gt;List the contents of a tar file.&lt;br /&gt;&lt;br /&gt;import tarfile&lt;br /&gt;tar = tarfile.open("sample.tar", "r")&lt;br /&gt;for tarinfo in tar:&lt;br /&gt;    print tarinfo.name, "is", tarinfo.size, "bytes in size and is",&lt;br /&gt;    if tarinfo.isreg():&lt;br /&gt;        print "a regular file."&lt;br /&gt;    elif tarinfo.isdir():&lt;br /&gt;        print "a directory."&lt;br /&gt;    else:&lt;br /&gt;        print "something else."&lt;br /&gt;tar.close()&lt;br /&gt;&lt;br /&gt;Untar an archive file.&lt;br /&gt;&lt;br /&gt;import tarfile&lt;br /&gt;tar = tarfile.open("sample.tar")&lt;br /&gt;tar.extractall()&lt;br /&gt;tar.close()&lt;br /&gt;&lt;br /&gt;Create an archive file&lt;br /&gt;&lt;br /&gt;import tarfile&lt;br /&gt;import os, fnmatch&lt;br /&gt; &lt;br /&gt;tar = tarfile.open("sample.tar", "w")&lt;br /&gt;files = os.listdir('.')&lt;br /&gt;for file in files:&lt;br /&gt;    if os.path.isdir(file):&lt;br /&gt;        print file,' is a dir.'&lt;br /&gt;    if fnmatch.fnmatch ( file, '*.txt' ):&lt;br /&gt;        print file&lt;br /&gt;        tar.add(file)&lt;br /&gt;tar.close()&lt;br /&gt;&lt;br /&gt;Using with gzip and bz2&lt;br /&gt;You can use tar with gzip or bz2&lt;br /&gt;use&lt;br /&gt;&lt;br /&gt;tar = tarfile.open("sample.tar.gz", "r:gz")&lt;br /&gt;&lt;br /&gt;Or&lt;br /&gt;&lt;br /&gt;tar = tarfile.open("sample.tar.bz2", "r:bz2")&lt;br /&gt;&lt;br /&gt;to work with gzip or bz2 file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-9163492159703286253?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/9163492159703286253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=9163492159703286253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9163492159703286253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9163492159703286253'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/03/python-data-archive.html' title='python data archive'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6526335907331540065</id><published>2011-03-04T18:49:00.001+02:00</published><updated>2011-03-04T18:49:27.473+02:00</updated><title type='text'>linux premissions</title><content type='html'>0 --- no permission&lt;br /&gt;1 --x execute&lt;br /&gt;2 -w- write&lt;br /&gt;3 -wx write and execute&lt;br /&gt;4 r-- read&lt;br /&gt;5 r-x read and execute&lt;br /&gt;6 rw- read and write&lt;br /&gt;7 rwx read, write and execute&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6526335907331540065?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6526335907331540065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6526335907331540065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6526335907331540065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6526335907331540065'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/03/linux-premissions.html' title='linux premissions'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2574496110252013508</id><published>2011-01-30T20:22:00.002+02:00</published><updated>2011-01-30T20:29:39.849+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malmon'/><category scheme='http://www.blogger.com/atom/ns#' term='malware'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='exploits'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='backdoors'/><title type='text'>malmon v0.3</title><content type='html'>&lt;a href="https://sourceforge.net/projects/malmon"&gt;malmon&lt;/a&gt; v0.3 is out :]&lt;br /&gt;There have been huge speed optimizations, and new options added :]&lt;br /&gt;&lt;br /&gt;What is malmon? :)&lt;br /&gt;MALware MONitor is an daemon writen in python using inotify (&lt;a href="http://pyinotify.sourceforge.net/"&gt;pyinotify&lt;/a&gt;) to monitor file activity and analyzes* files smaller then some size (size is set in conf) compares their md5sum and hex signatures to a db's with known malware (exploits/backdoors...) and moves infections&lt;br /&gt;to some dir (set in conf).&lt;br /&gt;&lt;br /&gt;For full feature list and the daemon check out: &lt;a href="https://sourceforge.net/projects/malmon"&gt;malmon at sourceforge&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2574496110252013508?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2574496110252013508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2574496110252013508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2574496110252013508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2574496110252013508'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/01/malmon-v03.html' title='malmon v0.3'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1937786302400716495</id><published>2011-01-12T17:32:00.003+02:00</published><updated>2011-01-12T17:34:47.784+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='mp4'/><category scheme='http://www.blogger.com/atom/ns#' term='lame'/><category scheme='http://www.blogger.com/atom/ns#' term='mplayer'/><category scheme='http://www.blogger.com/atom/ns#' term='convert'/><title type='text'>Linux: Get audio (.mp3) from .mp4 file.</title><content type='html'>How to get the audio only from .mp4 file (and convert it to .mp3)&lt;br /&gt;&lt;br /&gt;# mplayer -vc null -vo null -nocorrect-pts -ao pcm:waveheader input_file.mp4&lt;br /&gt;&lt;br /&gt;This will make a file called 'audiodump.wav' in ./&lt;br /&gt;After that you can use 'lame' to conver it to mp3&lt;br /&gt;&lt;br /&gt;# lame -h -b 192 audiodump.wav output_file.mp3&lt;br /&gt;&lt;br /&gt;-b 192 (will set bitrate to 192kbps)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1937786302400716495?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1937786302400716495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1937786302400716495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1937786302400716495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1937786302400716495'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/01/linux-get-audio-mp3-from-mp4-file.html' title='Linux: Get audio (.mp3) from .mp4 file.'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4067689329166447498</id><published>2011-01-11T09:54:00.001+02:00</published><updated>2011-01-11T09:55:22.874+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='iptables'/><title type='text'>iptables limit number of concurrent ocnnections</title><content type='html'>iptables  -A INPUT -p tcp -m multiport --dports 443,1701,5555 -m connlimit --connlimit-above 2 -m state --state NEW,ESTABLISHED -j REJECT&lt;br /&gt;&lt;br /&gt;This will limit the number of concurrent connections to tcp port 443,1701,5555 to 2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4067689329166447498?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4067689329166447498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4067689329166447498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4067689329166447498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4067689329166447498'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/01/iptables-limit-number-of-concurrent.html' title='iptables limit number of concurrent ocnnections'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2184822566149242192</id><published>2011-01-10T13:11:00.001+02:00</published><updated>2011-01-10T13:11:44.926+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>mysql rename database</title><content type='html'>Provided that you can shutdown anything which is updating the database (so that there is no chance of anything changing), this is a good solution:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mysql -p&lt;br /&gt;&lt;enter password&gt;&lt;br /&gt;create database new_database;&lt;br /&gt;quit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mysqldump old_database -p | mysql -D new_database -p&lt;br /&gt;&lt;enter password&gt;&lt;br /&gt;&lt;br /&gt;It'll dump out the old database to STDOUT, pipe this to a second MySQL process and insert the dumped data (and schema) to the new DB.&lt;br /&gt;&lt;br /&gt;You'll have to manually DROP the old DB and change the permissions on the new DB, but at least you have the data and schema.&lt;br /&gt;&lt;br /&gt;I find this very useful for creating 'live' backups of databases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2184822566149242192?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2184822566149242192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2184822566149242192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2184822566149242192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2184822566149242192'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2011/01/mysql-rename-database.html' title='mysql rename database'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2754624140652730963</id><published>2010-12-15T21:57:00.001+02:00</published><updated>2010-12-15T21:57:23.784+02:00</updated><title type='text'>OS errors</title><content type='html'>OS error code   1:  Operation not permitted&lt;br /&gt;OS error code   2:  No such file or directory&lt;br /&gt;OS error code   3:  No such process&lt;br /&gt;OS error code   4:  Interrupted system call&lt;br /&gt;OS error code   5:  Input/output error&lt;br /&gt;OS error code   6:  No such device or address&lt;br /&gt;OS error code   7:  Argument list too long&lt;br /&gt;OS error code   8:  Exec format error&lt;br /&gt;OS error code   9:  Bad file descriptor&lt;br /&gt;OS error code  10:  No child processes&lt;br /&gt;OS error code  11:  Resource temporarily unavailable&lt;br /&gt;OS error code  12:  Cannot allocate memory&lt;br /&gt;OS error code  13:  Permission denied&lt;br /&gt;OS error code  14:  Bad address&lt;br /&gt;OS error code  15:  Block device required&lt;br /&gt;OS error code  16:  Device or resource busy&lt;br /&gt;OS error code  17:  File exists&lt;br /&gt;OS error code  18:  Invalid cross-device link&lt;br /&gt;OS error code  19:  No such device&lt;br /&gt;OS error code  20:  Not a directory&lt;br /&gt;OS error code  21:  Is a directory&lt;br /&gt;OS error code  22:  Invalid argument&lt;br /&gt;OS error code  23:  Too many open files in system&lt;br /&gt;OS error code  24:  Too many open files&lt;br /&gt;OS error code  25:  Inappropriate ioctl for device&lt;br /&gt;OS error code  26:  Text file busy&lt;br /&gt;OS error code  27:  File too large&lt;br /&gt;OS error code  28:  No space left on device&lt;br /&gt;OS error code  29:  Illegal seek&lt;br /&gt;OS error code  30:  Read-only file system&lt;br /&gt;OS error code  31:  Too many links&lt;br /&gt;OS error code  32:  Broken pipe&lt;br /&gt;OS error code  33:  Numerical argument out of domain&lt;br /&gt;OS error code  34:  Numerical result out of range&lt;br /&gt;OS error code  35:  Resource deadlock avoided&lt;br /&gt;OS error code  36:  File name too long&lt;br /&gt;OS error code  37:  No locks available&lt;br /&gt;OS error code  38:  Function not implemented&lt;br /&gt;OS error code  39:  Directory not empty&lt;br /&gt;OS error code  40:  Too many levels of symbolic links&lt;br /&gt;OS error code  42:  No message of desired type&lt;br /&gt;OS error code  43:  Identifier removed&lt;br /&gt;OS error code  44:  Channel number out of range&lt;br /&gt;OS error code  45:  Level 2 not synchronized&lt;br /&gt;OS error code  46:  Level 3 halted&lt;br /&gt;OS error code  47:  Level 3 reset&lt;br /&gt;OS error code  48:  Link number out of range&lt;br /&gt;OS error code  49:  Protocol driver not attached&lt;br /&gt;OS error code  50:  No CSI structure available&lt;br /&gt;OS error code  51:  Level 2 halted&lt;br /&gt;OS error code  52: Invalid exchange&lt;br /&gt;OS error code  53:  Invalid request descriptor&lt;br /&gt;OS error code  54:  Exchange full&lt;br /&gt;OS error code  55:  No anode&lt;br /&gt;OS error code  56:  Invalid request code&lt;br /&gt;OS error code  57:  Invalid slot&lt;br /&gt;OS error code  59:  Bad font file format&lt;br /&gt;OS error code  60:  Device not a stream&lt;br /&gt;OS error code  61:  No data available&lt;br /&gt;OS error code  62:  Timer expired&lt;br /&gt;OS error code  63:  Out of streams resources&lt;br /&gt;OS error code  64:  Machine is not on the network&lt;br /&gt;OS error code  65:  Package not installed&lt;br /&gt;OS error code  66:  Object is remote&lt;br /&gt;OS error code  67:  Link has been severed&lt;br /&gt;OS error code  68:  Advertise error&lt;br /&gt;OS error code  69:  Srmount error&lt;br /&gt;OS error code  70:  Communication error on send&lt;br /&gt;OS error code  71:  Protocol error&lt;br /&gt;OS error code  72:  Multihop attempted&lt;br /&gt;OS error code  73:  RFS specific error&lt;br /&gt;OS error code  74:  Bad message&lt;br /&gt;OS error code  75:  Value too large for defined data type&lt;br /&gt;OS error code  76:  Name not unique on network&lt;br /&gt;OS error code  77:  File descriptor in bad state&lt;br /&gt;OS error code  78:  Remote address changed&lt;br /&gt;OS error code  79:  Can not access a needed shared library&lt;br /&gt;OS error code  80:  Accessing a corrupted shared library&lt;br /&gt;OS error code  81:  .lib section in a.out corrupted&lt;br /&gt;OS error code  82:  Attempting to link in too many shared libraries&lt;br /&gt;OS error code  83:  Cannot exec a shared library directly&lt;br /&gt;OS error code  84:  Invalid or incomplete multibyte or wide character&lt;br /&gt;OS error code  85:  Interrupted system call should be restarted&lt;br /&gt;OS error code  86:  Streams pipe error&lt;br /&gt;OS error code  87:  Too many users&lt;br /&gt;OS error code  88:  Socket operation on non-socket&lt;br /&gt;OS error code  89:  Destination address required&lt;br /&gt;OS error code  90:  Message too long&lt;br /&gt;OS error code  91:  Protocol wrong type for socket&lt;br /&gt;OS error code  92:  Protocol not available&lt;br /&gt;OS error code  93:  Protocol not supported&lt;br /&gt;OS error code  94:  Socket type not supported&lt;br /&gt;OS error code  95:  Operation not supported&lt;br /&gt;OS error code  96:  Protocol family not supported&lt;br /&gt;OS error code  97:  Address family not supported by protocol&lt;br /&gt;OS error code  98:  Address already in use&lt;br /&gt;OS error code  99:  Cannot assign requested address&lt;br /&gt;OS error code 100:  Network is down&lt;br /&gt;OS error code 101:  Network is unreachable&lt;br /&gt;OS error code 102:  Network dropped connection on reset&lt;br /&gt;OS error code 103:  Software caused connection abort&lt;br /&gt;OS error code 104:  Connection reset by peer&lt;br /&gt;OS error code 105:  No buffer space available&lt;br /&gt;OS error code 106:  Transport endpoint is already connected&lt;br /&gt;OS error code 107:  Transport endpoint is not connected&lt;br /&gt;OS error code 108:  Cannot send after transport endpoint shutdown&lt;br /&gt;OS error code 109:  Too many references: cannot splice&lt;br /&gt;OS error code 110:  Connection timed out&lt;br /&gt;OS error code 111:  Connection refused&lt;br /&gt;OS error code 112:  Host is down&lt;br /&gt;OS error code 113:  No route to host&lt;br /&gt;OS error code 114:  Operation already in progress&lt;br /&gt;OS error code 115:  Operation now in progress&lt;br /&gt;OS error code 116:  Stale NFS file handle&lt;br /&gt;OS error code 117:  Structure needs cleaning&lt;br /&gt;OS error code 118:  Not a XENIX named type file&lt;br /&gt;OS error code 119:  No XENIX semaphores available&lt;br /&gt;OS error code 120:  Is a named type file&lt;br /&gt;OS error code 121:  Remote I/O error&lt;br /&gt;OS error code 122:  Disk quota exceeded&lt;br /&gt;OS error code 123:  No medium found&lt;br /&gt;OS error code 124:  Wrong medium type&lt;br /&gt;OS error code 125:  Operation canceled&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2754624140652730963?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2754624140652730963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2754624140652730963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2754624140652730963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2754624140652730963'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/12/os-errors.html' title='OS errors'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7287630113292000041</id><published>2010-12-01T17:39:00.001+02:00</published><updated>2010-12-01T17:39:43.197+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Linux: Convert flac 2 mp3</title><content type='html'>for file in *.flac; do $(flac -cd "$file" | lame -h - ./"${file%.flac}.mp3"); done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7287630113292000041?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7287630113292000041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7287630113292000041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7287630113292000041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7287630113292000041'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/12/linux-convert-flac-2-mp3.html' title='Linux: Convert flac 2 mp3'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-655100224565570807</id><published>2010-12-01T14:44:00.001+02:00</published><updated>2010-12-01T14:44:55.169+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>flush python’s print buffer</title><content type='html'>flush the print buffer in python: &lt;br /&gt;&gt;&gt; sys.stdout.flush()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-655100224565570807?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/655100224565570807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=655100224565570807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/655100224565570807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/655100224565570807'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/12/flush-pythons-print-buffer.html' title='flush python’s print buffer'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5287486727341920405</id><published>2010-12-01T14:43:00.001+02:00</published><updated>2010-12-01T14:43:29.078+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>get all possible combinations of a list’s elements in python</title><content type='html'>let’s say you’ve got a list of the numbers 0 through 4 and you wanted all 32 possible combinations of them.  to get that list:&lt;br /&gt;list_of_five = range(0,5)   &lt;br /&gt;swap_list_list = [[]]&lt;br /&gt;for swap in list_of_five:&lt;br /&gt;    temp_lists = []&lt;br /&gt;    for list_stub in swap_list_list:&lt;br /&gt;        this_list = copy.copy(list_stub)&lt;br /&gt;        this_list.append(swap)&lt;br /&gt;        temp_lists.append(this_list)&lt;br /&gt;temp_lists.append(list_stub)&lt;br /&gt;    swap_list_list = temp_lists&lt;br /&gt;print swap_list_list&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5287486727341920405?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5287486727341920405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5287486727341920405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5287486727341920405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5287486727341920405'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/12/get-all-possible-combinations-of-lists.html' title='get all possible combinations of a list’s elements in python'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-763343317959330798</id><published>2010-12-01T14:41:00.000+02:00</published><updated>2010-12-01T14:42:11.720+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>strip all non-alphanumerics or all non-letters from a string in python</title><content type='html'>to strip all the non-letters from a python string named ‘str’, you can use the following one-liner:&lt;br /&gt;”.join([c for c in str if c.isalpha()])&lt;br /&gt;&lt;br /&gt;to strip all the non-alphanumeric characters from that python string, use the slightly modified:&lt;br /&gt;”.join([c for c in str if c.isalnum()])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-763343317959330798?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/763343317959330798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=763343317959330798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/763343317959330798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/763343317959330798'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/12/strip-all-non-alphanumerics-or-all-non.html' title='strip all non-alphanumerics or all non-letters from a string in python'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-697548983309582891</id><published>2010-11-19T16:52:00.000+02:00</published><updated>2010-11-19T16:53:06.671+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Why is better not to use SELinux/AppArrmor and other 'security' modules :)</title><content type='html'>http://i486.net/2010/03/13/linux-2-6-30-local-kernel-exploit-0day-disabling-selinuxapparmorlsm/&lt;br /&gt;No comment needed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;p.s.: That's why I use slack!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-697548983309582891?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/697548983309582891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=697548983309582891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/697548983309582891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/697548983309582891'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/11/why-is-better-not-to-use.html' title='Why is better not to use SELinux/AppArrmor and other &apos;security&apos; modules :)'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2605124082182878266</id><published>2010-11-19T10:17:00.001+02:00</published><updated>2010-11-19T10:17:38.525+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Alternative To The "200 Lines Kernel Patch"</title><content type='html'>Phoronix recently published an article regarding a ~200 lines Linux Kernel patch that improves responsiveness under system strain. Well, Lennart Poettering, a RedHat developer replied to Linus Torvalds on a maling list with an alternative to this patch that does the same thing yet all you have to do is run 2 commands and paste 4 lines in your ~/.bashrc file. I know it sounds unbelievable, but apparently someone even ran some tests which prove that Lennart's solution works. Read on!&lt;br /&gt;&lt;br /&gt;Basically, Lennart explains you have to add this to your ~/.bashrc file (important: this won't work on Ubuntu. See instructions for Ubuntu further down the post!):&lt;br /&gt;&lt;br /&gt;   if [ "$PS1" ] ; then  &lt;br /&gt;           mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$&lt;br /&gt;           echo $$ &gt; /sys/fs/cgroup/cpu/user/$$/tasks&lt;br /&gt;   fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And run the following commands as super user:&lt;br /&gt;&lt;br /&gt;mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu&lt;br /&gt;mkdir -m 0777 /sys/fs/cgroup/cpu/user&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Further more, a reply to Lennart's email states that his approach is actually better then the actual Kernel patch:&lt;br /&gt;&lt;br /&gt;    I've done some tests and the result is that Lennart's approach seems to work best. It also _feels_ better interactively compared to the vanilla kernel and in-kernel cgrougs on my machine. Also it's really nice to have an interface to actually see what is going on. With the kernel patch you're totally in the dark about what is going on right now.&lt;br /&gt;&lt;br /&gt;    -Markus Trippelsdorf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The reply also includes some benchmarks you can see @ http://lkml.org/lkml/2010/11/16/392&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;copy/paste from http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2605124082182878266?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2605124082182878266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2605124082182878266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2605124082182878266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2605124082182878266'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/11/alternative-to-200-lines-kernel-patch.html' title='Alternative To The &quot;200 Lines Kernel Patch&quot;'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6310275920809748395</id><published>2010-11-04T16:02:00.000+02:00</published><updated>2010-11-04T16:03:15.738+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Linux kernel over the years ...</title><content type='html'>Linux 2.6.12 [17 June 2005]: The Linux 2.6.12 kernel introduced page-out throttling, multi-level security for SELinux, address space randomization, cpusets, I/O barrier support for serial ATA devices, IPv6 support no longer being marked experimental, hot-pluggable parallel ports, and device mapper multi-path support.&lt;br /&gt;&lt;br /&gt;Linux 2.6.13 [29 August 2005]: Noteworthy features for the Linux 2.6.13 kernel included execute-in-place support, i386 CPU hot-plugging support, voluntary preemption, inotify, an improved CFQ IO scheduler, DRM support for VIA Unichrome chipsets, ACL support for NFSv3, kexec and kdump integration, and a new driver for trusted computing / TPM.&lt;br /&gt;&lt;br /&gt;Linux 2.6.14 [27 October 2005]: Introduced in the Linux 2.6.14 kernel was a NUMA-aware SLAB allocator, SELinux memory improvements, spin-lock consolidation, detection support for soft-lockups, FUSE (File-system in User-Space) integration, and initial ATI Radeon R300 3D support.&lt;br /&gt;&lt;br /&gt;Linux 2.6.15 [3 January 2006]: The Linux 2.6.15 kernel presented many VFS changes, page-table scalability improvements, demand faulting for huge pages, cooperating processes for the anticipatory I/O scheduler, NTFS file-system write support, and ATA pass-thru with the libata driver. For some perspective, this is the kernel that was used by Fedora Core 5, Gentoo 2006.0, Ubuntu 6.06 LTS, and others.&lt;br /&gt;&lt;br /&gt;Linux 2.6.16 [20 March 2006]: The Linux 2.6.16 kernel release introduced Oracle's OCFS2 clustering file-system, support for the CELL processor, support for moving the physical location of pages between nodes on NUMA systems, high-resolution timers, the configfs file-system, and a number of driver updates. SuSE 10.1 and Mandriva 2007 picked up this release.&lt;br /&gt;&lt;br /&gt;Linux 2.6.17 [17 June 2006]: The third official Linux kernel release of 2006 brought support for Sun's Niagara CPUs, the Broadcom bcm43xx WiFi driver, the splice I/O mechanism, a scheduler domain for optimizing CPU scheduling on multi-core systems, block queue I/O tracing, RAID5 re-shaping support, and performance improvements to EXT3 by mapping multiple blocks at once.&lt;br /&gt;&lt;br /&gt;Linux 2.6.18 [20 September 2006]: Some of the Linux 2.6.18 features included the Lockdep kernel lock validator, SMPnice, swapless page migration, a major libata driver update with support for features like NCQ (Native Command Queuing) and hot-plugging, the default I/O scheduler becoming CFQ, and a variety of new drivers. Fedora Core 6 and PCLinuxOS 2007 shipped with this kernel.&lt;br /&gt;&lt;br /&gt;Linux 2.6.19 [29 November 2006]: The Linux 2.6.19 kernel was the last release of 2006 and it brought eCryptfs, the first experimental snapshot of EXT4 in the mainline Linux kernel, physical CPU hot-plug and memory hot-add on x86_64, support for building x86 kernels with GCC stack protection, vectored a-synchronization I/O, IDE PATA drivers using libata, and the usual collection of driver updates. This kernel made its way into Ubuntu 7.04, the Feisty Fawn.&lt;br /&gt;&lt;br /&gt;Linux 2.6.20 [5 February 2007]: The first 2007 kernel release for Linux brought Sony PlayStation 3 support, KVM virtualization, i386 para-virtualization, x86 re-locatable kernel support, I/O accounting, and a generic HID layer.&lt;br /&gt;&lt;br /&gt;Linux 2.6.21 [25 April 2007]: New to the Linux kernel in April of 2007 was the Virtual Machine Interface (VMI), KVM updates to support para-virtualization and live migration along with a stable user-space interface and CPU hot-plug support, a tick-less kernel / dynticks.&lt;br /&gt;&lt;br /&gt;Linux 2.6.22 [8 July 2007]: Just after the 2007 US Independence Day was marked by the introduction of the new SLUB allocator, a new wireless stack, a new IEEE-1394 Firewire stack, and a variety of new Linux hardware drivers. This kernel was found with Mandriva Linux 2008 and openSUSE 10.3.&lt;br /&gt;&lt;br /&gt;Linux 2.6.23 [9 October 2007]: Those recovering from Oktoberfest in 2007 had the new CFS process scheduler to look at along with on-demand read-ahead, LGuest virtualization, a partial merge of Xen virtualization, KVM SMP guests and speed improvements, and improvements to the experimental EXT4 support. Fedora 8 shipped Linux 2.6.23.&lt;br /&gt;&lt;br /&gt;Linux 2.6.24 [24 January 2008]: Bringing in 2008 was the Linux 2.6.24 kernel with tick-less kernel support for x86_64, CFS improvements, anti-fragmentation patches, USB authorization, and x86_32/x86_64 arch reunification. Ubuntu 8.04 LTS and openSUSE 11.0 used this kernel.&lt;br /&gt;&lt;br /&gt;Linux 2.6.25 [17 April 2008]: Some of the highlights for the Linux 2.6.25 kernel included the introduction of the memory resource controller, real-time group scheduling, RCU pre-emption support, better process memory usage management, Latencytop support, and more EXT4 file-system updates.&lt;br /&gt;&lt;br /&gt;Linux 2.6.26 [13 July 2008]: In the summer of '08 new in the Linux kernel world was KVM virtualization support on IA64/PowerPC/S390 architectures, much-improved Linux web-camera support, wireless mesh networking 802.11s draft support, x86 PAT support, minor updates to EXT3/EXT4, and various other work.&lt;br /&gt;&lt;br /&gt;Linux 2.6.27 [9 October 2008]: This kernel release introduced delayed allocation support for the EXT4 file-system for improved disk performance, block layer data integrity support, multi-queue networking support, MMIOtrace support, support for external firmware, and support for up to 4096 CPUs on Linux x86. Ubuntu 8.10 used this kernel.&lt;br /&gt;&lt;br /&gt;Linux 2.6.28 [25 December 2008]: Just before ending out 2008 was the Linux 2.6.28 kernel that marked the EXT4 file-system as now being stable, integration of GEM (the Graphics Execution Manager) developed by Intel for in-kernel GPU memory management and a pre-requisite for kernel mode-setting (KMS), and memory management scalability improvements.&lt;br /&gt;&lt;br /&gt;Linux 2.6.29 [23 March 2009]: The first Linux kernel release of 2009 brought support for Intel kernel mode-setting, experimental support for the Btrfs file-system, SquashFS integration, initial WiMax support, eCryptfs file-name encryption, and a no journal mode for EXT4. Linux 2.6.29 was also the first kernel to introduce staging drivers and this release was represented by the Tuz mascot while Tux took a short holiday.&lt;br /&gt;&lt;br /&gt;Linux 2.6.30 [9 June 2009]: Prominent features of this summer 2009 kernel update brought the NILFS2 and EXOFS file-systems, IEEE 802.11w support, Tomoyo, LZMA/BZIP2 kernel image compression support, and the integrity management architecture.&lt;br /&gt;&lt;br /&gt;Linux 2.6.31 [9 September 2009]: Just before going off to Oktoberfest 2009 was the Linux 2.6.31 kernel release with initial USB 3.0 support, ATI Radeon kernel mode-setting support, improved desktop interactivity when the system is under memory pressure, kmemcheck / kmemleak integration, and integration of the kernel performance counters infrastructure.&lt;br /&gt;&lt;br /&gt;Linux 2.6.32 [3 December 2009]: The last kernel release of 2009 brought Btrfs file-system improvements, memory de-duplication support, ATI Radeon R600/R700 DRM 3D and kernel mode-setting support, a low-latency mode for the CFQ scheduler, tracing improvements, and run-time power management.&lt;br /&gt;&lt;br /&gt;Linux 2.6.33 [24 February 2010]: Finally getting to this year's kernels we have Linux 2.6.33. The Linux 2.6.33 kernel introduced the Nouveau driver for finally having open-source DRM/KMS support for NVIDIA graphics processors within the mainline Linux kernel, support for Xen POV-on-HVM guests, swappable KSM pages, memory compressed swapping via Compcache, the KMS page-flipping ioctl, the VMware Virtual GPU driver, and Google Android support being dropped from the mainline Linux kernel.&lt;br /&gt;&lt;br /&gt;Linux 2.6.34 [16 May 2010]: In May of this year we had the Linux 2.6.34 kernel release that brought Btrfs file-system updates, a-synchronous suspend/resume support within the power management code, and basic GPU switching support.&lt;br /&gt;&lt;br /&gt;Linux 2.6.35 [1 August 2010]: Before ending out the summer was the 2.6.35 kernel with support for transparent spreading of incoming network load across all available CPU cores, direct I/O support for the Btrfs file-system, an experimental journal mode for the XFS file-system, Intel VA-API H.264/VC1 video acceleration support, ATI Radeon power management, and memory compaction.&lt;br /&gt;&lt;br /&gt;Linux 2.6.36 [20 October 2010]: Coming out just last month was the Linux 2.6.36 kernel with KMS+KDB integration, concurrency-managed work-queues, Intel Intelligent Power Sharing support, improved VM-related desktop responsiveness, improved open-source graphics, and AppArmor integration.&lt;br /&gt;&lt;br /&gt;Linux 2.6.37 [Unreleased]: For the Linux 2.6.37 kernel testing we used a Git snapshot of the Linus 2.6 Git tree as of 2010-10-31 (one day short of the Linux 2.6.37-rc1 kernel release), since this kernel will not be released for a few months. Some of the new features of the Linux 2.6.37 kernel include a number of DRM improvements, an Intel Poulsbo driver, Broadcom's open-source 802.11n WiFi driver, various core improvements, and the Big Kernel Lock (BKL) has finally been eliminated from the core kernel code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6310275920809748395?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6310275920809748395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6310275920809748395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6310275920809748395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6310275920809748395'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/11/linux-kernel-over-years.html' title='Linux kernel over the years ...'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7555086046314340119</id><published>2010-10-29T19:02:00.001+03:00</published><updated>2010-10-29T19:03:18.247+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Compiz+vino=Problem</title><content type='html'>When using vino server and compiz , the screen cannot refresh.... easy fix is to disable&lt;br /&gt;xdamage from gconf:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;gconftool-2 -s /desktop/gnome/remote_access/disable_xdamage -t bool true&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7555086046314340119?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7555086046314340119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7555086046314340119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7555086046314340119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7555086046314340119'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/10/compizvinoproblem.html' title='Compiz+vino=Problem'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5555880043135636572</id><published>2010-10-22T17:21:00.004+03:00</published><updated>2010-10-22T17:23:07.627+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python generate random string/password</title><content type='html'>import string&lt;br /&gt;from random import Random&lt;br /&gt;&lt;br /&gt;stringLen = 12&lt;br /&gt;&lt;br /&gt;randString = ''.join(Random().sample(&lt;br /&gt;                        string.letters+string.digits,&lt;br /&gt;                        stringLen))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5555880043135636572?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5555880043135636572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5555880043135636572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5555880043135636572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5555880043135636572'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/10/python-generate-random-stringpassword.html' title='Python generate random string/password'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8140085349282659975</id><published>2010-10-22T13:45:00.001+03:00</published><updated>2010-10-22T13:47:32.751+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Monitor filesystem preformance - lnx</title><content type='html'>$ watch grep inode /proc/slabinfo &lt;br /&gt;&lt;br /&gt;$ slabtop -s c&lt;br /&gt;&lt;br /&gt;$ vmstat&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8140085349282659975?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8140085349282659975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8140085349282659975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8140085349282659975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8140085349282659975'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/10/monitor-filesystem-preformance-lnx.html' title='Monitor filesystem preformance - lnx'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8324544627948268830</id><published>2010-09-30T23:53:00.000+03:00</published><updated>2010-09-30T23:54:09.856+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>Някои забавни коментари в програми:</title><content type='html'>Код:&lt;br /&gt;&lt;br /&gt;// &lt;br /&gt;// Dear maintainer:&lt;br /&gt;// &lt;br /&gt;// Once you are done trying to 'optimize' this routine,&lt;br /&gt;// and have realized what a terrible mistake that was,&lt;br /&gt;// please increment the following counter as a warning&lt;br /&gt;// to the next guy:&lt;br /&gt;// &lt;br /&gt;// total_hours_wasted_here = 16&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// sometimes I believe compiler ignores all my comments&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;Exception up = new Exception("Something is really wrong.");&lt;br /&gt;throw up;  //ha ha&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// Magic. Do not touch.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// drunk, fix later&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;long john; // silver&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;//This code sucks, you know it and I know it. &lt;br /&gt;//Move on and call me an idiot later.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;#define TRUE FALSE //Happy debugging suckers&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;long long ago; /* in a galaxy far far away */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;# To understand recursion, see the bottom of this file&lt;br /&gt;&lt;br /&gt;At the bottom of the file:&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;# To understand recursion, see the top of this file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;/* Please work */&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;double penetration; // ouch&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;//Dear future me. Please forgive me. &lt;br /&gt;//I can't even begin to express how sorry I am.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;if(m_measures =/*=*/ --index)&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// hack for ie browser (assuming that ie is a browser)&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// If you're reading this, that means you have been put in charge of my previous project.&lt;br /&gt;// I am so, so sorry for you. God speed.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;//Abandon all hope yea who enter beyond this point&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * If you don't understand this code, you should be flipping burgers instead.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// if i ever see this again i'm going to start bringing guns to work&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;//  If you delete the credits, I will fucking kill you.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;/* Be a real daemon: fork myself and kill my parent */&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;//        .==.        .==.          &lt;br /&gt;//       //`^\\      //^`\\         &lt;br /&gt;//      // ^ ^\(\__/)/^ ^^\\        &lt;br /&gt;//     //^ ^^ ^/6  6\ ^^ ^ \\       &lt;br /&gt;//    //^ ^^ ^/( .. )\^ ^ ^ \\      &lt;br /&gt;//   // ^^ ^/\| v""v |/\^ ^ ^\\     &lt;br /&gt;//  // ^^/\/ /  `~~`  \ \/\^ ^\\    &lt;br /&gt;//  -----------------------------&lt;br /&gt;/// HERE BE DRAGONS&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// This is crap code but it's 3 a.m. and I need to get this working.&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// Remove this if you wanna be fired&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// A Gorgon class - For the love of Zeus don't look directly at it!&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;// Yes...I know this is repusive and stupid.&lt;br /&gt;// But &lt;%CompanyOwnerOrManagerToken%&gt;, not knowing a thing about code,&lt;br /&gt;// demanded I do it anyways. SO, go crap on their desk, not mine.&lt;br /&gt;// K THX BYE&lt;br /&gt;&lt;br /&gt;Код:&lt;br /&gt;&lt;br /&gt;#define TRUE rand() % 2 == 0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8324544627948268830?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8324544627948268830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8324544627948268830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8324544627948268830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8324544627948268830'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/blog-post.html' title='Някои забавни коментари в програми:'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4891572373666645730</id><published>2010-09-23T19:47:00.003+03:00</published><updated>2010-09-24T14:17:03.853+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>command line-fu</title><content type='html'>&lt;blockquote&gt;sudo !!&lt;/blockquote&gt;&lt;br /&gt;Run the last command as root&lt;br /&gt;Useful when you forget to use sudo for a command. "!!" grabs the last run command.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;cp filename{,.bak}&lt;/blockquote&gt;&lt;br /&gt;quickly backup or copy a file with bash&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;!whatever:p&lt;/blockquote&gt;&lt;br /&gt;Check command history, but avoid running it&lt;br /&gt;!whatever will search your command history and execute the first command that matches 'whatever'. If you don't feel safe doing this put :p on the end to print without executing. Recommended when running as superuser.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ssh-copy-id user@host&lt;/blockquote&gt;&lt;br /&gt;Copy ssh keys to user@host to enable password-less ssh logins.&lt;br /&gt;To generate the keys use the command ssh-keygen&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg&lt;/blockquote&gt;&lt;br /&gt;Capture video of a linux desktop&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&gt; file.txt&lt;/blockquote&gt;&lt;br /&gt;Empty a file&lt;br /&gt;For when you want to flush all content from a file without removing it (hat-tip to Marc Kilgus).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh -N -L2001:localhost:80 somemachine&lt;/blockquote&gt;&lt;br /&gt;start a tunnel from some machine's port 80 to your local post 2001&lt;br /&gt;now you can acces the website by going to http://localhost:2001/&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;echo "ls -l" | at midnight&lt;/blockquote&gt;&lt;br /&gt;Execute a command at a given time&lt;br /&gt;This is an alternative to cron which allows a one-off task to be scheduled for a certain time.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp&lt;/blockquote&gt;&lt;br /&gt;output your microphone to a remote computer's speaker&lt;br /&gt;This will output the sound from your microphone port to the ssh target computer's speaker port. The sound quality is very bad, so you will hear a lot of hissing.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;netstat -tlnp&lt;/blockquote&gt;&lt;br /&gt;Lists all listening ports together with the PID of the associated process&lt;br /&gt;The PID will only be printed if you're holding a root equivalent ID.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mount -t tmpfs tmpfs /mnt -o size=1024m&lt;/blockquote&gt;&lt;br /&gt;Mount a temporary ram partition&lt;br /&gt;Makes a partition in ram which is useful if you need a temporary working space as read/write access is fast.&lt;br /&gt;Be aware that anything saved in this partition will be gone after your computer is turned off.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh user@host cat /path/to/remotefile | diff /path/to/localfile -&lt;/blockquote&gt;&lt;br /&gt;Compare a remote file with a local file&lt;br /&gt;Useful for checking if there are differences between local and remote files.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mount | column -t&lt;/blockquote&gt;&lt;br /&gt;currently mounted filesystems in nice layout&lt;br /&gt;Particularly useful if you're mounting different drives, using the following command will allow you to see all the filesystems currently mounted on your computer and their respective specs with the added benefit of nice formatting&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;_space_command&lt;/blockquote&gt;&lt;br /&gt;Execute a command without saving it in the history&lt;br /&gt;Prepending one or more spaces to your command won't be saved in history.&lt;br /&gt;Useful for pr0n or passwords on the commandline.&lt;br /&gt;Tested on BASH.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;:&gt; file&lt;/blockquote&gt;&lt;br /&gt;Empty a file&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'&lt;/blockquote&gt;&lt;br /&gt;Generate random mac adresses&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;for i in $(find . -iname '*.html'); do sed '/String/d' $i &gt; $i-tmp; mv $i-tmp $i; done&lt;/blockquote&gt;&lt;br /&gt;Remove lines with matched string&lt;br /&gt;Search in all html files and remove the lines that 'String' is found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4891572373666645730?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4891572373666645730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4891572373666645730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4891572373666645730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4891572373666645730'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/command-line-fu.html' title='command line-fu'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7461605665859170861</id><published>2010-09-23T17:21:00.000+03:00</published><updated>2010-09-23T17:22:03.939+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python: Finding memory leaks</title><content type='html'>http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks&lt;br /&gt;http://mg.pov.lt/blog/hunting-python-memleaks&lt;br /&gt;http://mg.pov.lt/blog/python-object-graphs.html&lt;br /&gt;http://www.nightmare.com/medusa/memory-leaks.html&lt;br /&gt;http://docs.python.org/library/gc.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7461605665859170861?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7461605665859170861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7461605665859170861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7461605665859170861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7461605665859170861'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/python-finding-memory-leaks.html' title='Python: Finding memory leaks'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5417573138462751659</id><published>2010-09-23T17:18:00.002+03:00</published><updated>2010-09-23T17:20:53.670+03:00</updated><title type='text'>Linux process memory usage</title><content type='html'>Show processes by memory usage:&lt;br /&gt;&lt;blockquote&gt;# ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Display process mappings, type&lt;br /&gt;&lt;blockquote&gt;# pmap &lt;pid&gt;&lt;/blockquote&gt;&lt;br /&gt;The -x option can be used to provide information about the memory allocation and mapping types per mapping. The amount of resident, non-shared anonymous, and locked memory is shown for each mapping:&lt;br /&gt;&lt;blockquote&gt;pmap -x 3526&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5417573138462751659?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5417573138462751659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5417573138462751659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5417573138462751659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5417573138462751659'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/linux-process-memory-usage.html' title='Linux process memory usage'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8710335231695777240</id><published>2010-09-22T12:51:00.001+03:00</published><updated>2010-09-22T12:51:36.635+03:00</updated><title type='text'>sockets</title><content type='html'>The recognised socket families are:&lt;br /&gt;&lt;br /&gt;    AF_INET: IPv4 protocols (both TCP and UDP)&lt;br /&gt;    AF_INET6: IPv6 protocols (both TCP and UDP)&lt;br /&gt;    AF_UNIX: UNIX domain protocols &lt;br /&gt;&lt;br /&gt; The first two are obviously internet protocols. Anything that travels over the internet can be accessed in these families. Many networks still do not run on IPv6. So, unless you know otherwise, it is safest to default to IPv4 and use AF_INET. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;The socket type refers to the type of communication used through the socket. The five socket types are as follows:&lt;br /&gt;&lt;br /&gt;    SOCK_STREAM: a connection-oriented, TCP byte stream&lt;br /&gt;    SOCK_DGRAM: UDP transferral of datagrams (self-contained IP packets that do not rely on client-server confirmation)&lt;br /&gt;    SOCK_RAW: a raw socket&lt;br /&gt;    SOCK_RDM: for reliable datagrams&lt;br /&gt;    SOCK_SEQPACKET: sequential transfer of records over a connection &lt;br /&gt;&lt;br /&gt; By far, the most common types are SOCK_STEAM and SOCK_DGRAM because they function on the two protocols of the IP suite. The latter three are much rarer and so may not always be supported. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Let's therefore create a socket and assign it to variable; here I use c (for connection).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8710335231695777240?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8710335231695777240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8710335231695777240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8710335231695777240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8710335231695777240'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/sockets.html' title='sockets'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-739383779395719904</id><published>2010-09-22T12:13:00.001+03:00</published><updated>2010-09-22T12:15:30.140+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Dependency discovery bash</title><content type='html'>&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;ECHO=/usr/bin/echo&lt;br /&gt;SED=/usr/bin/sed&lt;br /&gt;FILE=/usr/bin/file&lt;br /&gt;CUT=/usr/bin/cut&lt;br /&gt;LDD=/usr/bin/ldd&lt;br /&gt;GREP=/usr/bin/grep&lt;br /&gt;AWK=/usr/bin/awk&lt;br /&gt;&lt;br /&gt;for p in `$ECHO $PATH | $SED 's/:/ /g'`&lt;br /&gt;do&lt;br /&gt;    for f in $p/*&lt;br /&gt;    do&lt;br /&gt;        if [ 'ELF' == `$FILE -b $f | $CUT -d' ' -f1` ]; then&lt;br /&gt;            if $LDD $f | $GREP -q 'not found'; then&lt;br /&gt;                $ECHO "$f"&lt;br /&gt;                $LDD $f | $GREP 'not found' | $AWK '{print "Not found:", $1}'&lt;br /&gt;            fi&lt;br /&gt;        fi&lt;br /&gt;    done&lt;br /&gt;done&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-739383779395719904?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/739383779395719904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=739383779395719904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/739383779395719904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/739383779395719904'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/dependency-discovery-bash.html' title='Dependency discovery bash'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2687982569082355066</id><published>2010-09-02T20:07:00.001+03:00</published><updated>2010-09-02T20:07:56.563+03:00</updated><title type='text'>hacking-wgr614</title><content type='html'>http://blog.ktdreyer.com/2008/01/hacking-wgr614.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2687982569082355066?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2687982569082355066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2687982569082355066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2687982569082355066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2687982569082355066'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/09/hacking-wgr614.html' title='hacking-wgr614'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6129889368549487620</id><published>2010-08-13T13:21:00.003+03:00</published><updated>2010-08-13T13:26:13.956+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python: placing a class inside shared memory</title><content type='html'>#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;import sys, os, time&lt;br /&gt;import mmap, pickle&lt;br /&gt;&lt;br /&gt;class dataStruct():&lt;br /&gt;    def __init__(self):&lt;br /&gt; self.data = dict();   self.status = dict(); self.lastupdate = time.time()&lt;br /&gt;&lt;br /&gt; self.stuff1 = dict(); self.stuff2 = dict()&lt;br /&gt; self.stuff4 = dict(); self.stuff3 = dict()&lt;br /&gt;&lt;br /&gt;        self.data['stuff1'] = self.stuff1&lt;br /&gt;        self.data['stuff2'] = self.stuff2&lt;br /&gt;        self.status['stuff1'] = self.stuff3&lt;br /&gt;        self.status['stuff2'] = self.stuff4&lt;br /&gt;&lt;br /&gt; self.data['stuff1']['something'] = 'thing'&lt;br /&gt;&lt;br /&gt;    def getValue(self, bn, val):&lt;br /&gt; try: return self.data[val][bn]&lt;br /&gt; except: return False&lt;br /&gt; &lt;br /&gt;    def getStatus(self, bn, val):&lt;br /&gt; try: return self.status[val][bn]&lt;br /&gt; except: return False&lt;br /&gt; &lt;br /&gt;    def setValue(self, bn, val, arg):&lt;br /&gt; try: self.data[val][bn] = arg&lt;br /&gt; except: return False&lt;br /&gt; else: return True&lt;br /&gt; &lt;br /&gt;    def setStatus(self, bn, val, arg):&lt;br /&gt; try: self.status[val][bn] = arg&lt;br /&gt; except: return False&lt;br /&gt; else: return True&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;zz=dataStruct()&lt;br /&gt;b=pickle.dumps(zz)&lt;br /&gt;sharedMem = mmap.mmap(-1, 131072, mmap.MAP_SHARED)&lt;br /&gt;&lt;br /&gt;if sys.getsizeof(sharedMem) &gt; 131072:&lt;br /&gt;    print 'Size of pickle object is bigger then shared memory segment... Trying to resize shared memory...'&lt;br /&gt;    try:&lt;br /&gt; sharedMem.close()&lt;br /&gt; sharedMem = mmap.mmap(-1, (sys.getsizeof(b) + 4096), mmap.MAP_SHARED)&lt;br /&gt; print 'New shared memory size: %s' % (sys.getsizeof(b) + 4096)&lt;br /&gt; sharedMem.write(b)&lt;br /&gt;    except:&lt;br /&gt; raise "Error while trying to resize shared memory segment...Quiting"&lt;br /&gt; sys.exit(-1)&lt;br /&gt;else:&lt;br /&gt;    try:&lt;br /&gt; sharedMem.write(b)&lt;br /&gt; print 'Object is now in shared memory [size:%s]' % sys.getsizeof(b)&lt;br /&gt;    except:&lt;br /&gt; raise "Error while trying to put object into shared memory"&lt;br /&gt; sys.exit(-1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;pid = os.fork()&lt;br /&gt;if pid == 0:&lt;br /&gt;    sharedMem.seek(0)&lt;br /&gt;    print 'Reading shared memory [size:%s]' % sys.getsizeof(b)&lt;br /&gt;    sss = sharedMem.read(-1)&lt;br /&gt;    ddd = pickle.loads(sss)&lt;br /&gt;    print ddd.getValue('something', 'stuff1')&lt;br /&gt;    print ddd.lastupdate&lt;br /&gt;    sharedMem.close()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6129889368549487620?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6129889368549487620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6129889368549487620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6129889368549487620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6129889368549487620'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/08/python-placing-class-inside-shared.html' title='Python: placing a class inside shared memory'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7470381213707384393</id><published>2010-08-04T17:24:00.001+03:00</published><updated>2010-08-04T17:24:34.580+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Kernel 2.6.35</title><content type='html'>Big change:&lt;br /&gt;Network cards have improved the bandwidth to the point where it's hard for a single modern CPU to keep up. Two new features contributed by Google aim to spread the load of network handling across the CPUs available in the system: Receive Packet Steering (RPS) and Receive Flow Steering (RFS).&lt;br /&gt;&lt;br /&gt;RPS distributes the load of received packet processing across multiple CPUs. This solution allows protocol processing (e.g. IP and TCP) to be performed on packets in parallel (contrary to the previous code). For each device (or each receive queue in a multi-queue device) a hashing of the packet header is used to index into a mask of CPUs (which can be configured manually in /sys/class/net/&lt;device&gt;/queues/rx-&lt;n&gt;/rps_cpus) and decide which CPU will be used to process a packet. But there're also some heuristics provided by the RFS side of this feature. Instead of randomly choosing the CPU from a hash, RFS tries to use the CPU where the application running the recvmsg() syscall is running or has run in the past, to improve cache utilization. Hardware hashing is used if available. This feature effectively emulates what a multi-queue NIC can provide, but instead it is implement in software and for all kind of network hardware, including single queue cards and not excluding multiqueue cards.&lt;br /&gt;&lt;br /&gt;Benchmarks of 500 instances of netperf TCP_RR test with 1 byte request and response show the potential benefit of this feature, a e1000e network card on 8 core Intel server goes from 104K tps at 30% CPU usage, to 303K tps at 61% CPU usage when using RPS+RFS. A RPC test which is similar in structure to the netperf RR test with 100 threads on each host, but doing more work in userspace that netperf, goes from 103K tps at 48% of CPU utilization to 223K at 73% CPU utilization and much lower latency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7470381213707384393?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7470381213707384393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7470381213707384393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7470381213707384393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7470381213707384393'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/08/kernel-2635.html' title='Kernel 2.6.35'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5848875010347119762</id><published>2010-07-22T14:38:00.003+03:00</published><updated>2010-07-22T14:43:44.916+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>openssh restrict witch users can login</title><content type='html'>in &lt;span style="font-style:italic;"&gt;/etc/ssh/sshd_config&lt;/span&gt; add line:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;AllowUsers      user1 user2&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This way only users: 'user1' and 'user2' will be able to login via ssh.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Some other examples:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;AllowUsers user1 user2&lt;/span&gt;&lt;br /&gt;This directive is opposite of DenyUsers directive.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;AllowGroups group1 group2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;This directive is opposite of DenyGroups directive.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DenyUsers user1 user2 user3&lt;/span&gt;&lt;br /&gt;Use to block user login. You can use wild cards as well as user1@somedomain.com (user1 is not allowed to login from somedomain.com host) pattern.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DenyGroups group1 group2&lt;/span&gt;&lt;br /&gt;A list of group names, if user is part of primary of supplementary group login access is denied. You can use wildcards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5848875010347119762?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5848875010347119762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5848875010347119762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5848875010347119762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5848875010347119762'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/07/openssh-restrict-witch-users-can-login.html' title='openssh restrict witch users can login'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2341789266103661786</id><published>2010-07-17T23:32:00.003+03:00</published><updated>2010-07-18T00:25:58.958+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Истина'/><title type='text'>Престъпна организация тормози българските интернет потребители...</title><content type='html'>Престъпна организация тормози българските интернет потребители вече няколко години... за радост, интернет обществото все още успява да и се противопоставя и силно да я усмива.&lt;br /&gt;Въпросната организация е милитаризирана, добре въоражена, със силно изразена йерархична структора и пипала надълбоко във властта.... името на тази организация е ГДБОП и един от водачите и е Явор Колев. Групировката системно се опитва да ограничава достъпа на всички живеещи на територията на република България достъпа до знания и информация, също така има навика да изкривява информацията и да добавя грозни лъжи с цел лична изгода. Организацията пази лични и корпуративни интереси, потъпвайки тези на народа. За престъпната организация е известно, че е подписала секретен меморандум с частни фирми с цел лична изгода на двете страни.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2341789266103661786?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2341789266103661786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2341789266103661786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2341789266103661786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2341789266103661786'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/07/blog-post.html' title='Престъпна организация тормози българските интернет потребители...'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2787509725788877106</id><published>2010-07-09T00:34:00.001+03:00</published><updated>2010-07-09T00:38:13.756+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>sha512/md5 sum in Python</title><content type='html'>&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; import hashlib&lt;br /&gt;&gt;&gt;&gt; infile = open("snake.py", 'rb')&lt;br /&gt;&gt;&gt;&gt; cont = infile.read()&lt;br /&gt;&gt;&gt;&gt; infile.close()&lt;br /&gt;&gt;&gt;&gt; md5 = hashlib.md5()&lt;br /&gt;&gt;&gt;&gt; md5.update(cont)&lt;br /&gt;&gt;&gt;&gt; md5sum = md5.hexdigest()&lt;br /&gt;&gt;&gt;&gt; md5sum&lt;br /&gt;'a2e175a122621a895a2fe057c21feb3d'&lt;br /&gt;&gt;&gt;&gt; sha512 = hashlib.sha512()&lt;br /&gt;&gt;&gt;&gt; sha512.update(cont)&lt;br /&gt;&gt;&gt;&gt; sha512sum = sha512.hexdigest()&lt;br /&gt;&gt;&gt;&gt; sha512sum&lt;br /&gt;'0f2d66b9bd824e04d48a9b459364c5ff5673979eeffda47a96f4e7cbbbec687af8a60823a6bee9227b4656d00eb9813a084ed24fd5f59e8edd38882dc6d99852'&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2787509725788877106?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2787509725788877106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2787509725788877106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2787509725788877106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2787509725788877106'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/07/sha512md5-sum-in-python.html' title='sha512/md5 sum in Python'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6046638623130609934</id><published>2010-07-03T23:06:00.002+03:00</published><updated>2010-07-03T23:10:34.660+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>JAVA 4EVER!</title><content type='html'>&lt;div class='snap_preview'&gt;&lt;p&gt;&lt;span style='text-align:center; display: block;'&gt;&lt;object width='425' height='350'&gt;&lt;param name='movie' value='http://www.youtube.com/v/A1zySeNpW20&amp;#038;rel=1&amp;#038;fs=1&amp;#038;showsearch=0&amp;#038;showinfo=1&amp;#038;iv_load_policy=1' /&gt; &lt;param name='allowfullscreen' value='true' /&gt; &lt;param name='wmode' value='opaque' /&gt; &lt;embed src='http://www.youtube.com/v/A1zySeNpW20&amp;#038;rel=1&amp;#038;fs=1&amp;#038;showsearch=0&amp;#038;showinfo=1&amp;#038;iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='opaque'&gt;&lt;/embed&gt; &lt;/object&gt;&lt;/span&gt;&lt;/p&gt;&lt;/DIV&gt;&lt;br /&gt;MUST SEE!!!&lt;br /&gt;&lt;br /&gt;JAVA 4EVER!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6046638623130609934?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6046638623130609934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6046638623130609934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6046638623130609934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6046638623130609934'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/07/java-4ever.html' title='JAVA 4EVER!'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2332820857469955539</id><published>2010-05-18T11:03:00.005+03:00</published><updated>2010-05-18T11:21:31.726+03:00</updated><title type='text'>Размислите на едни по-запознат...</title><content type='html'>В последните месеци една от темите който силно заинтригува интереса ми , беше опита на &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optimiced.com/wp-uploads/2007/07/imgp0987_police.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://www.optimiced.com/wp-uploads/2007/07/imgp0987_police.jpg" border="0" alt="" /&gt;&lt;/a&gt; /полицеиското ни/ правителството да вкара закон за следене в интернет &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.howstuffworks.com/gif/government-see-website-3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 216px;" src="http://static.howstuffworks.com/gif/government-see-website-3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;... при първите опити за приемане на закона ,всички видяхме острата обществена реакция ...протестите ...но ето няколко месеца по-късно ... уж модифицирана и по-приемлива версия на закона влиза в сила ...Та нека сега помислим реално над закона .... какво се постига с него ...какво печелим и какво губим, като обикновенни граждани ....&lt;br /&gt;И така ...приемаме ,че някой лош чичко , който ще наречем Ярур Кулев примерно (хахаха) решава,че аз съм престъпник , част от организирана групировка ...изнасяща гъши дроб за Иран..... и взимат заповед &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://yakoruda.gateway.bg/upload/docs/Scan10013.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 402px; height: 510px;" src="http://yakoruda.gateway.bg/upload/docs/Scan10013.JPG" border="0" alt="" /&gt;&lt;/a&gt; да ми следят телефона , интернет траффика ....всичко...:) (Nice, a?!)&lt;br /&gt;Почват да ми следят те траффика ... и какво виждат ... PPPoE тунел.... в него , VPN тунел с 512bit cypred :]...и понеже съм нагло копеленце , вътре 4096bits cypred разговор по ICQ.... &lt;br /&gt;И какво се получва при тази ситуация, ....въпросния чичко Я.Кулев се хваща за палците .... и ми се усмихва ... щото и NASA немогат да му помогнат ....&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i73.photobucket.com/albums/i233/nozzghoull/internet.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://i73.photobucket.com/albums/i233/nozzghoull/internet.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И значи какво излиза ...ако искам да си говоря нещо по интернет , дори и да ми следят трафика , мога да го направя и при това е доста лесно ....доста доста лесно ... значи този закон безмислен :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2332820857469955539?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2332820857469955539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2332820857469955539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2332820857469955539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2332820857469955539'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/05/blog-post.html' title='Размислите на едни по-запознат...'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3621164293849759773</id><published>2010-05-17T18:02:00.002+03:00</published><updated>2010-05-17T18:16:29.670+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>2.6.34 changes i care about :}</title><content type='html'>1. Ceph filesystem&lt;br /&gt;Ceph is a distributed network filesystem. It is built from the ground up to seamlessly and gracefully scale from gigabytes to petabytes and beyond. Scalability is considered in terms of workload as well as total storage. Ceph is designed to handle workloads in which tens thousands of clients or more simultaneously access the same file, or write to the same directory–usage scenarios that bring typical enterprise storage systems to their knees. &lt;br /&gt;&lt;br /&gt;2. LogFS&lt;br /&gt;LogFS is a filesystem designed for storage devices based on flash memory (SDD hard disks, USB sticks, etc). It is aimed to scale efficiently to large devices. In comparison to JFFS2, it offers significantly faster mount times and potentially less RAM usage. In its current state it is still experimental. &lt;br /&gt;&lt;br /&gt;3. Generalized TTL Security Mechanism and private VLAN proxy arp support&lt;br /&gt;This version adds support for Generalized TTL Security Mechanism (GTSM), RFC 5082. It is a lightweight security measure against forged packets causing DoS attacks using BGP packets &lt;br /&gt;This version also adds support for private VLAN proxy arp support (RFC 3069)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3621164293849759773?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3621164293849759773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3621164293849759773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3621164293849759773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3621164293849759773'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/05/2634-changes-i-care-about.html' title='2.6.34 changes i care about :}'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6711737480427641921</id><published>2010-04-18T15:05:00.000+03:00</published><updated>2010-04-18T15:06:08.622+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>premissions</title><content type='html'>400 read by owner&lt;br /&gt;040 read by group&lt;br /&gt;004 read by anybody (other)&lt;br /&gt;200 write by owner&lt;br /&gt;020 write by group&lt;br /&gt;002 write by anybody&lt;br /&gt;100 execute by owner&lt;br /&gt;010 execute by group&lt;br /&gt;001 execute by anybody&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6711737480427641921?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6711737480427641921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6711737480427641921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6711737480427641921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6711737480427641921'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/04/premissions.html' title='premissions'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4284135946902049297</id><published>2010-03-26T17:15:00.001+02:00</published><updated>2010-03-26T17:15:32.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macosx'/><title type='text'>some macosx shits</title><content type='html'>Apple Boot Key Combos:&lt;br /&gt;&lt;br /&gt;Bypass startup drive and boot from external (or CD).... CMD-OPT-SHIFT-DELETE&lt;br /&gt;&lt;br /&gt;Boot from CD (Most late model Apples) ................. C&lt;br /&gt;&lt;br /&gt;Force the internal hard drive to be the boot drive .... D&lt;br /&gt;&lt;br /&gt;Boot from a specific SCSI ID #.(#=SCSI ID number)...... CMD-OPT-SHIFT-DELETE-#&lt;br /&gt;&lt;br /&gt;Zap PRAM .............................................. CMD-OPT-P-R&lt;br /&gt;&lt;br /&gt;Boot into open Firmware ............................... CMD-OPT-O-F&lt;br /&gt;&lt;br /&gt;Clear NV RAM. Similar to reset-all in open Firmware ... CMD-OPT-N-V&lt;br /&gt;&lt;br /&gt;Disable Extensions .................................... SHIFT&lt;br /&gt;&lt;br /&gt;Rebuild Desktop ....................................... CMD-OPT&lt;br /&gt;&lt;br /&gt;Close finder windows.(hold just before finder starts).. OPT&lt;br /&gt;&lt;br /&gt;Boot with Virtual Memory off........................... CMD&lt;br /&gt;&lt;br /&gt;Trigger extension manager at boot-up................... SPACE&lt;br /&gt;&lt;br /&gt;Force Quadra av machines to use TV as a monitor........ CMD-OPT-T-V&lt;br /&gt;&lt;br /&gt;Boot from ROM (Mac Classic only)....................... CMD-OPT-X-O&lt;br /&gt;&lt;br /&gt;Force PowerBooks to reset the screen................... R&lt;br /&gt;&lt;br /&gt;Force an AV monitor to be recognized as one............ CMD-OPT-A-V&lt;br /&gt;&lt;br /&gt;Eject Boot Floppy...................................... Hold Down Mouse Button&lt;br /&gt;&lt;br /&gt;Select volume to start from............................ OPT&lt;br /&gt;&lt;br /&gt;Start in Firewire target drive mode.................... T&lt;br /&gt;&lt;br /&gt;Startup in OSX if OS9 and OXS in boot partition........ X or CMD-X&lt;br /&gt;&lt;br /&gt;Attempt to boot from network server ................... N&lt;br /&gt;   (Hold until Mac Logo appears)&lt;br /&gt;&lt;br /&gt;Hold down until the 2nd chime, will boot into 9?....... CMD-OPT&lt;br /&gt;&lt;br /&gt;OSX: Watch the status of the system load............... CMD-V&lt;br /&gt;&lt;br /&gt;OSX: Enter single-user mode (shell-level mode)......... CMD-S&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After startup:&lt;br /&gt;&lt;br /&gt;Bring up dialogue for shutdown/sleep/restart........... POWER&lt;br /&gt;&lt;br /&gt;Eject a Floppy Disk.................................... CMD-SHIFT-1 or(2) or (0)&lt;br /&gt;&lt;br /&gt;Force current app to quit.............................. CMD-OPT-ESC&lt;br /&gt;&lt;br /&gt;Unconditionally reboot................................. CTRL-CMD-POWER&lt;br /&gt;&lt;br /&gt;Fast Shutdown.......................................... CTRL-CMD-OPT-POWER&lt;br /&gt;&lt;br /&gt;Goto the debugger (if MacsBug is installed)............ CMD-POWER&lt;br /&gt;&lt;br /&gt;Reset Power Manager on PowerBooks...................... USE THIS LINK&lt;br /&gt;&lt;br /&gt;Put late model PowerBooks &amp; Desktops to sleep.......... CMD-OPT-POWER&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Specific Keys:&lt;br /&gt;&lt;br /&gt;Startup key combos to reset the resolution on video boards:&lt;br /&gt;&lt;br /&gt;SuperMac (at least some models)press&amp;hold.............. OPT&lt;br /&gt;&lt;br /&gt;Imagine 128 Card (reset resolution).................... N&lt;br /&gt;&lt;br /&gt;RasterOps (at least some models)press&amp;hold............. CMD-OPT-SHIFT&lt;br /&gt;&lt;br /&gt;Radius (Use cable sense pins to set resolution)........ U&lt;br /&gt;&lt;br /&gt;Radius (Cycle through available resolutions)........... T&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conflict Catcher:&lt;br /&gt;&lt;br /&gt;Pause Boot........................................... P&lt;br /&gt;&lt;br /&gt;Launch CC at Startup................................. SPACE or CAPS LOCK&lt;br /&gt;&lt;br /&gt;Skip remaining extensions............................ CMD-PERIOD&lt;br /&gt;&lt;br /&gt;Reboot cleanly while loading extensions.............. CMD-R&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RAM Doubler:&lt;br /&gt;&lt;br /&gt;Disable at Startup................................... ~ (Tilde) or ESC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apple System Installer:&lt;br /&gt;&lt;br /&gt;Change custom install to clean install............... CMD-Shift-K&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Claris Emailer:&lt;br /&gt;&lt;br /&gt;Bypass specified startup connections................. Hold CMD at launch&lt;br /&gt;&lt;br /&gt;Bring up rebuild options............................. Hold OPT at launch&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Controlling the Post-Startup Environment&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Most Macintosh users know about holding the Shift key down to prevent extensions from loading, but there are numerous startup modifiers that affect the state of the system after the boot process finishes.&lt;br /&gt;&lt;br /&gt;* Shift causes the Mac to boot without extensions, which is useful for troubleshooting extension conflicts. If you hold down Shift after all the extensions have loaded but before the Finder launches, it also prevents any startup items from launching.&lt;br /&gt;&lt;br /&gt;* Spacebar launches Apple's Extensions Manager early in the startup process so you can enable or disable extensions before they load. Casady &amp; Greene's Conflict Catcher, if you're using it instead of Extensions Manager, also launches if it sees you holding down the spacebar, or, optionally, if Caps Lock is activated. Conflict Catcher also adds the capability to configure additional startup keys as ways of specifying that a particular startup set should be used. Choose Edit Sets from the Sets menu, select a set in the resulting dialog and click Modify. In the sub-dialog that appears, you can specify a startup key and check the checkbox to make it effective.&lt;br /&gt;&lt;br /&gt;* Option, if held down as the Finder launches, closes any previously open Finder windows. On stock older Macs, holding down Option does nothing at startup by default, although some extensions may deactivate if Option is held down when they attempt to load; see below for Option's effect on new Macs and Macs with Zip drives.&lt;br /&gt;&lt;br /&gt;* Control can cause the Location Manager to prompt you to select a location. Although Control is the default, you can redefine it in the Location Manager's Preferences dialog, and since Control held down at startup also activates Apple's MacsBug debugger (see below), you may wish to pick a different key combination.&lt;br /&gt;&lt;br /&gt;* Command turns virtual memory off until the next restart.&lt;br /&gt;&lt;br /&gt;* Shift-Option disables extensions other than Connectix's RAM Doubler (and MacsBug - see below). To disable RAM Doubler but no other extensions, hold down the tilde (~) key at startup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Choosing Startup Disks&lt;br /&gt;&lt;br /&gt;Not surprisingly, many of the startup modifiers affect the disk used to boot the Mac. A number of these are specific to certain models of the Macintosh.&lt;br /&gt;&lt;br /&gt;* The mouse button causes the Mac to eject floppy disks and most other forms of removable media, though not CD-ROMs.&lt;br /&gt;&lt;br /&gt;* The C key forces the Mac to start up from a bootable CD-ROM, if one is present, which is useful if something goes wrong with your startup hard disk. This key doesn't work with some older Macs or clones that didn't use Apple CD-ROM drives; they require Command- Shift-Option-Delete instead (see below).&lt;br /&gt;&lt;br /&gt;* Option activates the new Startup Manager on the iBook, Power Mac G4 (AGP Graphics), PowerBook (FireWire), and slot-loading iMacs. The Startup Manager displays a rather cryptic set of icons indicating available startup volumes, including any NetBoot volumes that are available. On some Macs with Iomega Zip drives, holding down Option at startup when there is a Zip startup disk inserted will cause the Mac to boot from the Zip disk.&lt;br /&gt;&lt;br /&gt;* Command-Shift-Option-Delete bypasses the disk selected in the Startup Disk control panel in favor of an external device or from CD-ROM (on older Macs). This is also useful if your main hard disk is having problems and you need to start up from another device. (On some PowerBooks, however, this key combination merely ignores the internal drive, which isn't as useful.)&lt;br /&gt;&lt;br /&gt;* The D key forces the PowerBook (Bronze Keyboard and FireWire) to boot from the internal hard disk.&lt;br /&gt;&lt;br /&gt;* The T key forces the PowerBook (FireWire) (and reportedly the Power Mac G4 (AGP Graphics), though I was unable to verify that on my machine) to start up in FireWire Target Disk Mode, which is essentially the modern equivalent of SCSI Disk Mode and enables a PowerBook (FireWire) to act as a FireWire-accessible hard disk for another Macintosh.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Seriously Tweaky Startup Modifiers&lt;br /&gt;&lt;br /&gt;Only programmers and the most geeky of users will find these startup modifiers useful.&lt;br /&gt;&lt;br /&gt;* Control activates Apple's MacsBug debugger as soon as it loads. If you rely on this frequently, you may want to redefine the default key for selecting the Location Manager location at startup from Control to something else.&lt;br /&gt;&lt;br /&gt;* Shift-Option disables extensions and virtual memory but still loads MacsBug, which would otherwise be disabled by the Shift key.&lt;br /&gt;&lt;br /&gt;* Command-Option-O-F puts you into Open Firmware mode on PCI-based Macs and clones. Open Firmware is a cross-platform firmware standard for controlling hardware that all PCI-based Macs use. It's mostly of interest to hardware developers, but it can be a fun way to freak out a new user who's not expecting to see a command line on the Mac. To exit Open Firmware and continue booting, type "mac-boot" or "bye" (depending on Macintosh model) and press Return. For a list of commands you can enter while in Open Firmware mode, see the Tech Info Library article.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just for Fun&lt;br /&gt;&lt;br /&gt;Although Apple has moved away from relatively frivolous "Easter Eggs" connected with startup modifiers, there are a few available for old Macintosh models.&lt;br /&gt;&lt;br /&gt;* Command-X-O, when held down at startup on a Macintosh Classic boots the Classic from a built-in ROM disk.&lt;br /&gt;&lt;br /&gt;* Command-Option-C-I, when held down at startup on a Macintosh IIci whose date has been set to 20-Sep-89 (the machine's introduction date), produces some sort of graphical display that I can't check for lack of a relevant machine. A different display appears if you hold down Command-Option-F-X at startup on a Macintosh IIfx with the date set to 19-Mar-90.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4284135946902049297?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4284135946902049297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4284135946902049297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4284135946902049297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4284135946902049297'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/03/some-macosx-shits.html' title='some macosx shits'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1224708006642368056</id><published>2010-03-20T21:31:00.000+02:00</published><updated>2010-03-20T21:32:14.500+02:00</updated><title type='text'>pmap - Process Memory Usage</title><content type='html'>The command pmap report memory map of a process. Use this command to find out causes of memory bottlenecks.&lt;br /&gt;# pmap -d PID&lt;br /&gt;To display process memory information for pid # 47394, enter:&lt;br /&gt;# pmap -d 47394&lt;br /&gt;Sample Outputs:&lt;br /&gt;&lt;br /&gt;47394:   /usr/bin/php-cgi&lt;br /&gt;Address           Kbytes Mode  Offset           Device    Mapping&lt;br /&gt;0000000000400000    2584 r-x-- 0000000000000000 008:00002 php-cgi&lt;br /&gt;0000000000886000     140 rw--- 0000000000286000 008:00002 php-cgi&lt;br /&gt;00000000008a9000      52 rw--- 00000000008a9000 000:00000   [ anon ]&lt;br /&gt;0000000000aa8000      76 rw--- 00000000002a8000 008:00002 php-cgi&lt;br /&gt;000000000f678000    1980 rw--- 000000000f678000 000:00000   [ anon ]&lt;br /&gt;000000314a600000     112 r-x-- 0000000000000000 008:00002 ld-2.5.so&lt;br /&gt;000000314a81b000       4 r---- 000000000001b000 008:00002 ld-2.5.so&lt;br /&gt;000000314a81c000       4 rw--- 000000000001c000 008:00002 ld-2.5.so&lt;br /&gt;000000314aa00000    1328 r-x-- 0000000000000000 008:00002 libc-2.5.so&lt;br /&gt;000000314ab4c000    2048 ----- 000000000014c000 008:00002 libc-2.5.so&lt;br /&gt;.....&lt;br /&gt;......&lt;br /&gt;..&lt;br /&gt;00002af8d48fd000       4 rw--- 0000000000006000 008:00002 xsl.so&lt;br /&gt;00002af8d490c000      40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so&lt;br /&gt;00002af8d4916000    2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so&lt;br /&gt;00002af8d4b15000       4 r---- 0000000000009000 008:00002 libnss_files-2.5.so&lt;br /&gt;00002af8d4b16000       4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so&lt;br /&gt;00002af8d4b17000  768000 rw-s- 0000000000000000 000:00009 zero (deleted)&lt;br /&gt;00007fffc95fe000      84 rw--- 00007ffffffea000 000:00000   [ stack ]&lt;br /&gt;ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]&lt;br /&gt;mapped: 933712K    writeable/private: 4304K    shared: 768000K&lt;br /&gt;&lt;br /&gt;The last line is very important:&lt;br /&gt;&lt;br /&gt;    * mapped: 933712K total amount of memory mapped to files&lt;br /&gt;    * writeable/private: 4304K the amount of private address space&lt;br /&gt;    * shared: 768000K the amount of address space this process is sharing with others&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1224708006642368056?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1224708006642368056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1224708006642368056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1224708006642368056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1224708006642368056'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/03/pmap-process-memory-usage.html' title='pmap - Process Memory Usage'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6485544765982795218</id><published>2010-03-20T21:28:00.001+02:00</published><updated>2010-03-20T21:30:18.669+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>ps</title><content type='html'>Show Long Format Output&lt;br /&gt;&lt;br /&gt;# ps -Al&lt;br /&gt;To turn on extra full mode (it will show command line arguments passed to process):&lt;br /&gt;# ps -AlF&lt;br /&gt;To See Threads ( LWP and NLWP)&lt;br /&gt;&lt;br /&gt;# ps -AlFH&lt;br /&gt;To See Threads After Processes&lt;br /&gt;&lt;br /&gt;# ps -AlLm&lt;br /&gt;Print All Process On The Server&lt;br /&gt;&lt;br /&gt;# ps ax&lt;br /&gt;# ps axu&lt;br /&gt;Print A Process Tree&lt;br /&gt;&lt;br /&gt;# ps -ejH&lt;br /&gt;# ps axjf&lt;br /&gt;# pstree&lt;br /&gt;Print Security Information&lt;br /&gt;&lt;br /&gt;# ps -eo euser,ruser,suser,fuser,f,comm,label&lt;br /&gt;# ps axZ&lt;br /&gt;# ps -eM&lt;br /&gt;See Every Process Running As User Vivek&lt;br /&gt;&lt;br /&gt;# ps -U vivek -u vivek u&lt;br /&gt;Set Output In a User-Defined Format&lt;br /&gt;&lt;br /&gt;# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm&lt;br /&gt;# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm&lt;br /&gt;# ps -eopid,tt,user,fname,tmout,f,wchan&lt;br /&gt;Display Only The Process IDs of Lighttpd&lt;br /&gt;&lt;br /&gt;# ps -C lighttpd -o pid=&lt;br /&gt;&lt;br /&gt;Display The Name of PID 55977&lt;br /&gt;&lt;br /&gt;# ps -p 55977 -o comm=&lt;br /&gt;Find Out The Top 10 Memory Consuming Process&lt;br /&gt;&lt;br /&gt;# ps -auxf | sort -nr -k 4 | head -10&lt;br /&gt;Find Out top 10 CPU Consuming Process&lt;br /&gt;&lt;br /&gt;# ps -auxf | sort -nr -k 3 | head -10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6485544765982795218?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6485544765982795218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6485544765982795218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6485544765982795218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6485544765982795218'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/03/ps.html' title='ps'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2843917904467138269</id><published>2010-02-16T11:29:00.001+02:00</published><updated>2010-02-16T11:29:49.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Linux change MTU for route.</title><content type='html'>route add default gw local_ip_address_of_gateway mss 1480&lt;br /&gt;&lt;br /&gt;(note the use of 'mss' where they really meant 'mtu'.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2843917904467138269?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2843917904467138269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2843917904467138269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2843917904467138269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2843917904467138269'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/02/linux-change-mtu-for-route.html' title='Linux change MTU for route.'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7561128948575729840</id><published>2010-02-01T16:23:00.002+02:00</published><updated>2010-02-01T16:41:46.037+02:00</updated><title type='text'>How stupid can be US ppl :?</title><content type='html'>Copy/paste from fmylife.com&lt;br /&gt;&lt;br /&gt;* Today, I texted my boyfriend saying hi. His response, "I got your best friend pregnant". FML&lt;br /&gt;&lt;br /&gt;*Today, I checked my facebook, and my wife of 5 years was listed as single. I then write on her wall that it is ok to announce to be married. She writes back saying that we have to talk and to come to the kitchen. My wife divorced me over facebook. FML&lt;br /&gt;&lt;br /&gt;*Today, it's my 18th birthday. My parents got me a $5 gift certificate to Itunes. It came for free with the iPhone they just bought my sister for her middle school graduation. FML&lt;br /&gt;&lt;br /&gt;* Today, I handed my PhD dissertation, which I have spent the past year researching and writing full-time. Last night, my roommate set an autocorrect on Word that changed "neither" to "nigger." I didn't notice until after I handed it in. My professor is black. FML&lt;br /&gt;&lt;br /&gt;* Today, my fiancee broke up with me. Via a myspace message. While we were in the same apartment. FML&lt;br /&gt;&lt;br /&gt;* Today, my friend had to take my cat who has a tumor to be put down when I wasn't home since I couldn't bare to take him myself. I have two cats. He took the wrong one. FML&lt;br /&gt;&lt;br /&gt;* Today, my boss fired me via text message. I don't have a text messaging plan. I paid $0.25 to get fired. FML&lt;br /&gt;&lt;br /&gt;* Today, my mom walked in on me looking at a 1978 playboy. She asked if I found it in the basement. I said yes. Then I realized she was the centerfold. FML&lt;br /&gt;&lt;br /&gt;* Today, I was out to dinner with my little sister when this elderly woman sitting alone started choking and I rushed over and started doing the Heimlich Maneuver, She's now pressing charges on me for assault. I'm a paramedic. FML&lt;br /&gt;&lt;br /&gt;* Today, an old girlfriend from years ago wanted to have lunch. Seeing as I had nothing to do, I went with her. She introduced me to her son. Apparently I am the father. My son is 6. FML&lt;br /&gt;&lt;br /&gt;* Today, I came home to find a sock I previously used to whack off on my bed with googly eyes and a mouth drawn on it with a note that read "Because you can't find a real girl, I made your current one prettier, Love Mom." FML&lt;br /&gt;&lt;br /&gt;* Today, I sent an email to my best friend, telling him that I'm gay. When I was typing the email address in the "to:" field, it autocorrected the address to my mother. She just responded: "you filthy faggot". FML&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7561128948575729840?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7561128948575729840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7561128948575729840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7561128948575729840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7561128948575729840'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/02/how-stupid-can-be-us-ppl.html' title='How stupid can be US ppl :?'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-9096314383225590318</id><published>2010-02-01T11:41:00.000+02:00</published><updated>2010-02-01T11:42:22.729+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>sharing dictionary between processes /python multiprocessing/</title><content type='html'>import multiprocessing&lt;br /&gt;&lt;br /&gt;def worker(d, key, value):&lt;br /&gt;    d[key] = value&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    mgr = multiprocessing.Manager()&lt;br /&gt;    d = mgr.dict()&lt;br /&gt;    jobs = [ multiprocessing.Process(target=worker, args=(d, i, i*2))&lt;br /&gt;             for i in range(10) &lt;br /&gt;             ]&lt;br /&gt;    for j in jobs:&lt;br /&gt;        j.start()&lt;br /&gt;    for j in jobs:&lt;br /&gt;        j.join()&lt;br /&gt;    print 'Results:', d&lt;br /&gt;$ python multiprocessing_manager_dict.py&lt;br /&gt;Results: {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-9096314383225590318?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/9096314383225590318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=9096314383225590318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9096314383225590318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9096314383225590318'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/02/sharing-dictionary-between-processes.html' title='sharing dictionary between processes /python multiprocessing/'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6668224655458986923</id><published>2010-01-28T17:34:00.001+02:00</published><updated>2010-01-28T17:34:52.021+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>tcpdump [packet types]</title><content type='html'>Show me all URG packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 32 != 0'&lt;br /&gt;&lt;br /&gt;Show me all ACK packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 16 != 0'&lt;br /&gt;&lt;br /&gt;Show me all PSH packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 8 != 0'&lt;br /&gt;&lt;br /&gt;Show me all RST packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 4 != 0'&lt;br /&gt;&lt;br /&gt;Show me all SYN packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 2 != 0'&lt;br /&gt;&lt;br /&gt;Show me all FIN packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] &amp; 1 != 0'&lt;br /&gt;&lt;br /&gt;Show me all SYN-ACK packets:&lt;br /&gt;&lt;br /&gt;# tcpdump 'tcp[13] = 18'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6668224655458986923?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6668224655458986923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6668224655458986923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6668224655458986923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6668224655458986923'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/01/tcpdump-packet-types.html' title='tcpdump [packet types]'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4019079448315726215</id><published>2010-01-05T00:16:00.001+02:00</published><updated>2010-01-05T00:16:32.307+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python logger config</title><content type='html'>So if you want to set logger options, in say, a Django settings.py file:&lt;br /&gt;&lt;br /&gt;import logging.config&lt;br /&gt;logging.config.fileConfig("logging.conf")&lt;br /&gt;&lt;br /&gt;Your logging.conf might look like this:&lt;br /&gt;&lt;br /&gt;[loggers]&lt;br /&gt;keys=root&lt;br /&gt;&lt;br /&gt;[handlers]&lt;br /&gt;keys=errhandler,filehandler&lt;br /&gt;&lt;br /&gt;[formatters]&lt;br /&gt;keys=formatter&lt;br /&gt;&lt;br /&gt;[logger_root]&lt;br /&gt;level=NOTSET&lt;br /&gt;handlers=errhandler,filehandler&lt;br /&gt;formatters=formatter&lt;br /&gt;&lt;br /&gt;[handler_errhandler]&lt;br /&gt;class=StreamHandler&lt;br /&gt;level=NOTSET&lt;br /&gt;formatter=formatter&lt;br /&gt;args=(sys.stdout,)&lt;br /&gt;&lt;br /&gt;[handler_filehandler]&lt;br /&gt;class=handlers.RotatingFileHandler&lt;br /&gt;level=NOTSET&lt;br /&gt;formatter=formatter&lt;br /&gt;args=("/var/log/django/my.log", "a", 1024*1024)&lt;br /&gt;&lt;br /&gt;[formatter_formatter]&lt;br /&gt;format=[%(asctime)s] - %(levelname)-8s - "%(message)s" (%(filename)s: %(funcName)s - %(lineno)s)&lt;br /&gt;datefmt=%Y-%m-%d %a %H:%M:%S&lt;br /&gt;class=logging.Formatter&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4019079448315726215?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4019079448315726215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4019079448315726215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4019079448315726215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4019079448315726215'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/01/python-logger-config.html' title='Python logger config'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8986891961857267393</id><published>2010-01-04T15:44:00.001+02:00</published><updated>2010-01-04T15:44:55.309+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>bootp/dhcp parameters</title><content type='html'>Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters&lt;br /&gt;&lt;br /&gt;(last updated 2009-12-07)&lt;br /&gt;&lt;br /&gt;Registries included below:&lt;br /&gt;- BOOTP Vendor Extensions and DHCP Options &lt;br /&gt;  - DHCP Message Type 53 Values&lt;br /&gt;  - NetWare/IP Option Type 63 Sub-Option Codes &lt;br /&gt;  - DHCP Cablelabs Client Configuration Option Type 122 Sub-Option Codes &lt;br /&gt;  - GeoConf Option fields (Value 123) - The Altitude (AT) field&lt;br /&gt;  - GeoConf Option fields (Value 123) - The Datum field&lt;br /&gt;- CableLabs Client Configuration Option Ticket Control Mask Bit Definitions&lt;br /&gt;- DHCP Relay Agent Sub-Option Codes&lt;br /&gt;  - Authentication Suboption (value 8) - Algorithm identifier values&lt;br /&gt;  - Authentication Suboption (value 8) - Replay Detection Method (RDM) identifier values &lt;br /&gt;- IEEE 802.21 Service Type (MoS DHCPv4 Address and FQDN Sub-Options)&lt;br /&gt;&lt;br /&gt;Note: &lt;br /&gt;For the Civic Address Types Registry [RFC4776], please see:&lt;br /&gt;http://www.iana.org/assignments/civic-address-types-registry&lt;br /&gt;&lt;br /&gt;Registry Name: BOOTP Vendor Extensions and DHCP Options &lt;br /&gt;Reference: [RFC2939]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Note: &lt;br /&gt;The Bootstrap Protocol (BOOTP) [RFC951] describes an IP/UDP bootstrap&lt;br /&gt;protocol (BOOTP) which allows a diskless client machine to discover&lt;br /&gt;its own IP address, the address of a server host, and the name of a&lt;br /&gt;file to be loaded into memory and executed.  The Dynamic Host&lt;br /&gt;Configuration Protocol (DHCP) [RFC2131] provides a framework for&lt;br /&gt;automatic configuration of IP hosts.  The document "DHCP Options and &lt;br /&gt;BOOTP Vendor Information Extensions" [RFC2132] describes options for &lt;br /&gt;DHCP, some of which can also be used with BOOTP. Additional DHCP &lt;br /&gt;options are described in other RFCs, as documented in this registry.&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;                                           Data &lt;br /&gt;Tag       Name                             Length  Meaning                                           Reference&lt;br /&gt;--------  -------------------------------  ------  ------------------------------------------------  ---------&lt;br /&gt;0         Pad                              0       None                                              [RFC2132]    &lt;br /&gt;1         Subnet Mask                      4       Subnet Mask Value                                 [RFC2132] &lt;br /&gt;2         Time Offset                      4       Time Offset in Seconds from UTC                   [RFC2132]&lt;br /&gt;                                                   (note: deprecated by 100 and 101) &lt;br /&gt;3         Router                           N       N/4 Router addresses                              [RFC2132] &lt;br /&gt;4         Time Server                      N       N/4 Timeserver addresses                          [RFC2132] &lt;br /&gt;5         Name Server                      N       N/4 IEN-116 Server addresses                      [RFC2132] &lt;br /&gt;6         Domain Server                    N       N/4 DNS Server addresses                          [RFC2132] &lt;br /&gt;7         Log Server                       N       N/4 Logging Server addresses                      [RFC2132] &lt;br /&gt;8         Quotes Server                    N       N/4 Quotes Server addresses                       [RFC2132] &lt;br /&gt;9         LPR Server                       N       N/4 Printer Server addresses                      [RFC2132] &lt;br /&gt;10        Impress Server                   N       N/4 Impress Server addresses                      [RFC2132] &lt;br /&gt;11        RLP Server                       N       N/4 RLP Server addresses                          [RFC2132] &lt;br /&gt;12        Hostname                         N       Hostname string                                   [RFC2132] &lt;br /&gt;13        Boot File Size                   2       Size of boot file in 512 byte chunks              [RFC2132] &lt;br /&gt;14        Merit Dump File                  N       Client to dump and name the file to dump it to    [RFC2132] &lt;br /&gt;15        Domain Name                      N       The DNS domain name of the client                 [RFC2132] &lt;br /&gt;16        Swap Server                      N       Swap Server address                               [RFC2132] &lt;br /&gt;17        Root Path                        N       Path name for root disk                           [RFC2132] &lt;br /&gt;18        Extension File                   N       Path name for more BOOTP info                     [RFC2132] &lt;br /&gt;19        Forward On/Off                   1       Enable/Disable IP Forwarding                      [RFC2132] &lt;br /&gt;20        SrcRte On/Off                    1       Enable/Disable Source Routing                     [RFC2132] &lt;br /&gt;21        Policy Filter                    N       Routing Policy Filters                            [RFC2132] &lt;br /&gt;22        Max DG Assembly                  2       Max Datagram Reassembly Size                      [RFC2132] &lt;br /&gt;23        Default IP TTL                   1       Default IP Time to Live                           [RFC2132] &lt;br /&gt;24        MTU Timeout                      4       Path MTU Aging Timeout                            [RFC2132] &lt;br /&gt;25        MTU Plateau                      N       Path MTU  Plateau Table                           [RFC2132] &lt;br /&gt;26        MTU Interface                    2       Interface MTU Size                                [RFC2132] &lt;br /&gt;27        MTU Subnet                       1       All Subnets are Local                             [RFC2132] &lt;br /&gt;28        Broadcast Address                4       Broadcast Address                                 [RFC2132] &lt;br /&gt;29        Mask Discovery                   1       Perform Mask Discovery                            [RFC2132] &lt;br /&gt;30        Mask Supplier                    1       Provide Mask to Others                            [RFC2132] &lt;br /&gt;31        Router Discovery                 1       Perform Router Discovery                          [RFC2132] &lt;br /&gt;32        Router Request                   4       Router Solicitation Address                       [RFC2132] &lt;br /&gt;33        Static Route                     N       Static Routing Table                              [RFC2132] &lt;br /&gt;34        Trailers                         1       Trailer Encapsulation                             [RFC2132] &lt;br /&gt;35        ARP Timeout                      4       ARP Cache Timeout                                 [RFC2132] &lt;br /&gt;36        Ethernet                         1       Ethernet Encapsulation                            [RFC2132] &lt;br /&gt;37        Default TCP TTL                  1       Default TCP Time to Live                          [RFC2132] &lt;br /&gt;38        Keepalive Time                   4       TCP Keepalive Interval                            [RFC2132] &lt;br /&gt;39        Keepalive Data                   1       TCP Keepalive Garbage                             [RFC2132] &lt;br /&gt;40        NIS Domain                       N       NIS Domain Name                                   [RFC2132] &lt;br /&gt;41        NIS Servers                      N       NIS Server Addresses                              [RFC2132] &lt;br /&gt;42        NTP Servers                      N       NTP Server Addresses                              [RFC2132] &lt;br /&gt;43        Vendor Specific                  N       Vendor Specific Information                       [RFC2132] &lt;br /&gt;44        NETBIOS Name Srv                 N       NETBIOS Name Servers                              [RFC2132] &lt;br /&gt;45        NETBIOS Dist Srv                 N       NETBIOS Datagram Distribution                     [RFC2132] &lt;br /&gt;46        NETBIOS Node Type                1       NETBIOS Node Type                                 [RFC2132] &lt;br /&gt;47        NETBIOS Scope                    N       NETBIOS Scope                                     [RFC2132] &lt;br /&gt;48        X Window Font                    N       X Window Font Server                              [RFC2132] &lt;br /&gt;49        X Window Manager                 N       X Window Display Manager                          [RFC2132] &lt;br /&gt;50        Address Request                  4       Requested IP Address                              [RFC2132] &lt;br /&gt;51        Address Time                     4       IP Address Lease Time                             [RFC2132] &lt;br /&gt;52        Overload                         1       Overload "sname" or "file"                        [RFC2132] &lt;br /&gt;53        DHCP Msg Type                    1       DHCP Message Type                                 [RFC2132] &lt;br /&gt;54        DHCP Server Id                   4       DHCP Server Identification                        [RFC2132] &lt;br /&gt;55        Parameter List                   N       Parameter Request List                            [RFC2132] &lt;br /&gt;56        DHCP Message                     N       DHCP Error Message                                [RFC2132] &lt;br /&gt;57        DHCP Max Msg Size                2       DHCP Maximum Message Size                         [RFC2132] &lt;br /&gt;58        Renewal Time                     4       DHCP Renewal (T1) Time                            [RFC2132] &lt;br /&gt;59        Rebinding Time                   4       DHCP Rebinding (T2) Time                          [RFC2132] &lt;br /&gt;60        Class Id                         N       Class Identifier                                  [RFC2132] &lt;br /&gt;61        Client Id                        N       Client Identifier                                 [RFC2132] &lt;br /&gt;62        NetWare/IP Domain                N       NetWare/IP Domain Name                            [RFC2242] &lt;br /&gt;63        NetWare/IP Option                N       NetWare/IP sub Options                            [RFC2242] &lt;br /&gt;64        NIS-Domain-Name                  N       NIS+ v3 Client Domain Name                        [RFC2132] &lt;br /&gt;65        NIS-Server-Addr                  N       NIS+ v3 Server Addresses                          [RFC2132] &lt;br /&gt;66        Server-Name                      N       TFTP Server Name                                  [RFC2132] &lt;br /&gt;67        Bootfile-Name                    N       Boot File Name                                    [RFC2132] &lt;br /&gt;68        Home-Agent-Addrs                 N       Home Agent Addresses                              [RFC2132] &lt;br /&gt;69        SMTP-Server                      N       Simple Mail Server Addresses                      [RFC2132] &lt;br /&gt;70        POP3-Server                      N       Post Office Server Addresses                      [RFC2132] &lt;br /&gt;71        NNTP-Server                      N       Network News Server Addresses                     [RFC2132] &lt;br /&gt;72        WWW-Server                       N       WWW Server Addresses                              [RFC2132] &lt;br /&gt;73        Finger-Server                    N       Finger Server Addresses                           [RFC2132] &lt;br /&gt;74        IRC-Server                       N       Chat Server Addresses                             [RFC2132] &lt;br /&gt;75        StreetTalk-Server                N       StreetTalk Server Addresses                       [RFC2132] &lt;br /&gt;76        STDA-Server                      N       ST Directory Assist. Addresses                    [RFC2132] &lt;br /&gt;77        User-Class                       N       User Class Information                            [RFC3004] &lt;br /&gt;78        Directory Agent                  N       directory agent information                       [RFC2610] &lt;br /&gt;79        Service Scope                    N       service location agent scope                      [RFC2610] &lt;br /&gt;80        Rapid Commit                     0       Rapid Commit                                      [RFC4039] &lt;br /&gt;81        Client FQDN                      N       Fully Qualified Domain Name                       [RFC4702] &lt;br /&gt;82        Relay Agent Information          N       Relay Agent Information                           [RFC3046] &lt;br /&gt;83        iSNS                             N       Internet Storage Name Service                     [RFC4174]&lt;br /&gt;84        REMOVED/Unassigned                                                                         [RFC3679]&lt;br /&gt;85        NDS Servers                      N       Novell Directory Services                         [RFC2241] &lt;br /&gt;86        NDS Tree Name                    N       Novell Directory Services                         [RFC2241] &lt;br /&gt;87        NDS Context                      N       Novell Directory Services                         [RFC2241] &lt;br /&gt;88        BCMCS Controller Domain Name list                                                          [RFC4280]&lt;br /&gt;89        BCMCS Controller IPv4 address option                                                       [RFC4280]&lt;br /&gt;90        Authentication                   N       Authentication                                    [RFC3118] &lt;br /&gt;91        client-last-transaction-time option                                                        [RFC4388]  &lt;br /&gt;92        associated-ip option                                                                       [RFC4388] &lt;br /&gt;93        Client System                    N       Client System Architecture                        [RFC4578] &lt;br /&gt;94        Client NDI                       N       Client Network Device Interface                   [RFC4578]&lt;br /&gt;95        LDAP                             N       Lightweight Directory Access Protocol             [RFC3679] &lt;br /&gt;96        REMOVED/Unassigned                                                                         [RFC3679] &lt;br /&gt;97        UUID/GUID                        N       UUID/GUID-based Client Identifier                 [RFC4578]&lt;br /&gt;98        User-Auth                        N       Open Group's User Authentication                  [RFC2485] &lt;br /&gt;99        GEOCONF_CIVIC                                                                              [RFC4776]&lt;br /&gt;100       PCode                            N       IEEE 1003.1 TZ String                             [RFC4833]&lt;br /&gt;101       TCode                            N       Reference to the TZ Database                      [RFC4833] &lt;br /&gt;102-107   REMOVED/Unassigned                                                                         [RFC3679]&lt;br /&gt;108       REMOVED/Unassigned                                                                         [RFC3679]&lt;br /&gt;109       Unassigned                                                                                 [RFC3679]&lt;br /&gt;110       REMOVED/Unassigned                                                                         [RFC3679]&lt;br /&gt;111       Unassigned                                                                                 [RFC3679]&lt;br /&gt;112       Netinfo Address                  N       NetInfo Parent Server Address                     [RFC3679] &lt;br /&gt;113       Netinfo Tag                      N       NetInfo Parent Server Tag                         [RFC3679] &lt;br /&gt;114       URL                              N       URL                                               [RFC3679]&lt;br /&gt;115       REMOVED/Unassigned                                                                         [RFC3679] &lt;br /&gt;116       Auto-Config                      N       DHCP Auto-Configuration                           [RFC2563] &lt;br /&gt;117       Name Service Search              N       Name Service Search                               [RFC2937] &lt;br /&gt;118       Subnet Selection Option          4       Subnet Selection Option                           [RFC3011] &lt;br /&gt;119       Domain Search                    N       DNS domain search list                            [RFC3397] &lt;br /&gt;120       SIP Servers DHCP Option          N       SIP Servers DHCP Option                           [RFC3361] &lt;br /&gt;121       Classless Static Route Option    N       Classless Static Route Option                     [RFC3442] &lt;br /&gt;122       CCC                              N       CableLabs Client Configuration                    [RFC3495]&lt;br /&gt;123       GeoConf Option                   16      GeoConf Option                                    [RFC3825]&lt;br /&gt;124       V-I Vendor Class                         Vendor-Identifying Vendor Class                   [RFC3925]&lt;br /&gt;125       V-I Vendor-Specific Information          Vendor-Identifying Vendor-Specific Information    [RFC3925]&lt;br /&gt;126       Removed/Unassigned                                                                         [RFC3679]&lt;br /&gt;127       Removed/Unassigned                                                                         [RFC3679]&lt;br /&gt;128       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;128       Etherboot signature. 6 bytes: E4:45:74:68:00:00 &lt;br /&gt;128       DOCSIS "full security" server IP address &lt;br /&gt;128       TFTP Server IP address (for IP Phone software load) &lt;br /&gt;129       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;129       Kernel options. Variable length string &lt;br /&gt;129       Call Server IP address  &lt;br /&gt;130       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;130       Ethernet interface. Variable length string. &lt;br /&gt;130       Discrimination string (to identify vendor) &lt;br /&gt;131       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;131       Remote statistics server IP address  &lt;br /&gt;132       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;132       IEEE 802.1Q VLAN ID  &lt;br /&gt;133       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;133       IEEE 802.1D/p Layer 2 Priority &lt;br /&gt;134       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;134       Diffserv Code Point (DSCP) for VoIP signalling and media streams &lt;br /&gt;135       PXE - undefined (vendor specific)                                                          [RFC4578]&lt;br /&gt;135       HTTP Proxy for phone-specific applications &lt;br /&gt;136       OPTION_PANA_AGENT                                                                          [RFC5192]&lt;br /&gt;137       OPTION_V4_LOST                                                                             [RFC5223]&lt;br /&gt;138       OPTION_CAPWAP_AC_V4              N       CAPWAP Access Controller addresses                [RFC5417]&lt;br /&gt;139       OPTION-IPv4_Address-MoS          N       a series of suboptions                            [RFC5678]&lt;br /&gt;140       OPTION-IPv4_FQDN-MoS             N       a series of suboptions                            [RFC5678]&lt;br /&gt;141-149   Unassigned                                                                                 [RFC3942]&lt;br /&gt;150       TFTP server address (Tentatively Assigned - 2005-06-23)&lt;br /&gt;150       Etherboot &lt;br /&gt;150       GRUB configuration path name &lt;br /&gt;151-174   Unassigned                                                                                 [RFC3942]&lt;br /&gt;175       Etherboot (Tentatively Assigned - 2005-06-23)&lt;br /&gt;176       IP Telephone (Tentatively Assigned - 2005-06-23)&lt;br /&gt;177       Etherboot (Tentatively Assigned - 2005-06-23)&lt;br /&gt;177       PacketCable and CableHome (replaced by 122) &lt;br /&gt;178-207   Unassigned                                                                                 [RFC3942]&lt;br /&gt;208       PXELINUX Magic                   4       magic string = F1:00:74:7E                        [RFC5071] Deprecated&lt;br /&gt;209       Configuration File               N       Configuration file                                [RFC5071]&lt;br /&gt;210       Path Prefix                      N       Path Prefix Option                                [RFC5071]&lt;br /&gt;211       Reboot Time                      4       Reboot Time                                       [RFC5071]&lt;br /&gt;212-219   Unassigned&lt;br /&gt;220       Subnet Allocation Option (Tentatively Assigned - 2005-06-23)&lt;br /&gt;221       Virtual Subnet Selection Option (Tentatively Assigned - 2005-06-23)&lt;br /&gt;222-223   Unassigned                                                                                 [RFC3942]&lt;br /&gt;224-254   Reserved (Private Use)&lt;br /&gt;255       End                              0         None                                            [RFC2132] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub-registry: DHCP Message Type 53 Values &lt;br /&gt;Reference: [RFC2939]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;Value  Message Type            Reference&lt;br /&gt;-----  ----------------------  ---------&lt;br /&gt;1      DHCPDISCOVER            [RFC2132]&lt;br /&gt;2      DHCPOFFER               [RFC2132]&lt;br /&gt;3      DHCPREQUEST             [RFC2132]&lt;br /&gt;4      DHCPDECLINE             [RFC2132]&lt;br /&gt;5      DHCPACK                 [RFC2132]&lt;br /&gt;6      DHCPNAK                 [RFC2132]&lt;br /&gt;7      DHCPRELEASE             [RFC2132]&lt;br /&gt;8      DHCPINFORM              [RFC2132]&lt;br /&gt;9      DHCPFORCERENEW          [RFC3203]&lt;br /&gt;10     DHCPLEASEQUERY          [RFC4388]&lt;br /&gt;11     DHCPLEASEUNASSIGNED     [RFC4388]&lt;br /&gt;12     DHCPLEASEUNKNOWN        [RFC4388]&lt;br /&gt;13     DHCPLEASEACTIVE         [RFC4388]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub-registry: NetWare/IP Option Type 63 Sub-Option Codes &lt;br /&gt;Reference: [RFC2242]&lt;br /&gt;Registration Procedures: Not defined&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;Value   Message Type                  Reference&lt;br /&gt;------  ----------------------------  ---------&lt;br /&gt;1       NWIP_DOES_NOT_EXIST           [RFC2242] &lt;br /&gt;2       NWIP_EXIST_IN_OPTIONS_AREA    [RFC2242]&lt;br /&gt;3       NWIP_EXIST_IN_SNAME_FILE      [RFC2242]&lt;br /&gt;4       NWIP_EXIST_BUT_TOO_BIG        [RFC2242]&lt;br /&gt;5       NSQ_BROADCAST                 [RFC2242]&lt;br /&gt;6       PREFERRED_DSS                 [RFC2242]&lt;br /&gt;7       NEAREST_NWIP_SERVER           [RFC2242]&lt;br /&gt;8       AUTORETRIES                   [RFC2242]&lt;br /&gt;9       AUTORETRY_SECS                [RFC2242]&lt;br /&gt;10      NWIP_1_1                      [RFC2242]&lt;br /&gt;11      PRIMARY_DSS                   [RFC2242]&lt;br /&gt;12-255  Unassigned&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub-registry: DHCP Cablelabs Client Configuration Option Type 122 Sub-Option Codes &lt;br /&gt;Reference: [RFC3495]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;Code    Sub-Option Description                      Reference &lt;br /&gt;------  ------------------------------------------  --------- &lt;br /&gt;1       TSP's Primary DHCP Server Address           [RFC3495] &lt;br /&gt;2       TSP's Secondary DHCP Server Address         [RFC3495] &lt;br /&gt;3       TSP's Provisioning Server Address           [RFC3495]&lt;br /&gt;4       TSP's AS-REQ/AS-REP Backoff and Retry       [RFC3495]&lt;br /&gt;5       TSP's AP-REQ/AP-REP Backoff and Retry       [RFC3495]&lt;br /&gt;6       TSP's Kerberos Realm Name                   [RFC3495]&lt;br /&gt;7       TSP's Ticket Granting Server Utilization    [RFC3495]&lt;br /&gt;8       TSP's Provisioning Timer Value              [RFC3495]&lt;br /&gt;9       TSP's Security Ticket Control               [RFC3594] &lt;br /&gt;10      KDC Server Address                          [RFC3634]&lt;br /&gt;11-255  Unassigned&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub-registry: GeoConf Option fields (Value 123) - The Altitude (AT) field&lt;br /&gt;Reference: [RFC3825]&lt;br /&gt;Registration Procedures: Standards Action&lt;br /&gt;&lt;br /&gt;Value  Altitude Field Description                      Reference&lt;br /&gt;-----  ----------------------------------------------  ---------&lt;br /&gt;1      Meters - in 2s-complement fixed-point 22-bit    [RFC3825]&lt;br /&gt;       integer part with 8-bit fraction &lt;br /&gt;2      Floors - in 2s-complement fixed-point 22-bit    [RFC3825]&lt;br /&gt;       integer part with 8-bit fraction&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub-registry: GeoConf Option fields (Value 123) - The Datum field&lt;br /&gt;Reference: [RFC3825]&lt;br /&gt;Registration Procedures: Standards Action&lt;br /&gt;&lt;br /&gt;Value  Datum Field Description                        Reference&lt;br /&gt;-----  ---------------------------------------------- ---------&lt;br /&gt;1      WGS 84 - (Geographical 3D)                     [RFC3825]&lt;br /&gt;       World Geodesic System 1984, CRS Code 4327, &lt;br /&gt;       Prime Meridian Name: Greenwich&lt;br /&gt;&lt;br /&gt;2      NAD83 - North American Datum 1983,             [RFC3825]&lt;br /&gt;       CRS Code 4269, Prime Meridian Name: Greenwich; &lt;br /&gt;       The associated vertical datum is the North &lt;br /&gt;       American Vertical Datum of 1988 (NAVD88)&lt;br /&gt;&lt;br /&gt;       This datum pair to be used when referencing &lt;br /&gt;       locations on land, not near tidal water (which &lt;br /&gt;       would use Datum = 3 below)&lt;br /&gt;&lt;br /&gt;3      NAD83 - North American Datum 1983,             [RFC3825]&lt;br /&gt;       CRS Code 4269, Prime Meridian Name: Greenwich; &lt;br /&gt;       The associated vertical datum is Mean Lower &lt;br /&gt;       Low Water (MLLW)&lt;br /&gt;&lt;br /&gt;       This datum pair to be used when referencing &lt;br /&gt;       locations on water/sea/ocean&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Registry Name: CableLabs Client Configuration Option Ticket Control Mask Bit Definitions&lt;br /&gt;Reference: [RFC3594] &lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;Bit     Description                             Reference&lt;br /&gt;------  --------------------------------------  ---------&lt;br /&gt;0       the PacketCable Provisioning Server     [RFC3594] &lt;br /&gt;        used by the CCD.  &lt;br /&gt;1       the group of all PacketCable Call       [RFC3594] &lt;br /&gt;        Management Servers used by the CCD. &lt;br /&gt;2-15    Reserved and MUST be set to 0.   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Registry Name: DHCP Relay Agent Sub-Option Codes&lt;br /&gt;Reference: [RFC3046]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Registry:&lt;br /&gt;Code    Sub-Option Description                   Reference&lt;br /&gt;------  ---------------------------------------  ---------&lt;br /&gt;1       Agent Circuit ID Sub-option              [RFC3046]&lt;br /&gt;2       Agent Remote ID Sub-option               [RFC3046]&lt;br /&gt;3       Sub-option 3 is reserved and should      [Droms]&lt;br /&gt;        not be assigned at this time;&lt;br /&gt;        proprietary and incompatible usages&lt;br /&gt;        of this sub-option value have been&lt;br /&gt;        seen limited deployment.&lt;br /&gt;4       DOCSIS Device Class Suboption            [RFC3256]&lt;br /&gt;5       Link selection Sub-option                [RFC3527]&lt;br /&gt;6       Subscriber-ID Suboption                  [RFC3993]&lt;br /&gt;7       RADIUS Attributes Sub-option             [RFC4014]&lt;br /&gt;8       Authentication Suboption                 [RFC4030] &lt;br /&gt;9       Vendor-Specific Information Suboption    [RFC4243]&lt;br /&gt;10      Relay Agent Flags                        [RFC5010]&lt;br /&gt;11      Server Identifier Override Suboption     [RFC5107]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Registry Name: Authentication Suboption (value 8) - Algorithm identifier values&lt;br /&gt;Reference: [RFC4030]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Value  Algorithm                            Reference&lt;br /&gt;-----  ---------------------------------    ---------&lt;br /&gt;0      Reserved                             [RFC4030] &lt;br /&gt;1      HMAC-SHA1 keyed hash                 [RFC4030] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Registry Name: Authentication Suboption (value 8) - Replay Detection Method (RDM) identifier values &lt;br /&gt;Reference: [RFC4030]&lt;br /&gt;Registration Procedures: IETF Consensus&lt;br /&gt;&lt;br /&gt;Value  Algorithm                                          Reference&lt;br /&gt;-----  -------------------------------------------------  ---------&lt;br /&gt;0      Reserved                                           [RFC4030] &lt;br /&gt;1      use of a monotonically increasing counter value    [RFC4030] &lt;br /&gt;          &lt;br /&gt;&lt;br /&gt;Registry Name: IEEE 802.21 Service Type (MoS DHCPv4 Address and FQDN Sub-Options)&lt;br /&gt;Reference: [RFC5678]&lt;br /&gt;Registration Procedures: Standards Action&lt;br /&gt;&lt;br /&gt;Value    Name                                             Reference&lt;br /&gt;-------  -----------------------------------------------  ---------&lt;br /&gt;0        Reserved                                         [RFC5678]&lt;br /&gt;1        IS                                               [RFC5678]&lt;br /&gt;2        CS                                               [RFC5678]&lt;br /&gt;3        ES                                               [RFC5678]&lt;br /&gt;4-254    Unassigned&lt;br /&gt;255      Reserved                                         [RFC5678]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References&lt;br /&gt;----------&lt;br /&gt;[RFC951]  Croft, B., and J. Gilmore, "BOOTSTRAP Protocol (BOOTP)",&lt;br /&gt;          RFC-951, Stanford and SUN Microsytems, September 1985.&lt;br /&gt;&lt;br /&gt;[RFC2131]  Droms, R., "Dynamic Host Configuration Protocol", Bucknell&lt;br /&gt;           University, March 1997.&lt;br /&gt;&lt;br /&gt;[RFC2132]  Alexander, S., and R. Droms, "DHCP Options and BOOTP Vendor&lt;br /&gt;           Extensions", Silicon Graphics, Inc., Bucknell University,&lt;br /&gt;           March 1997.&lt;br /&gt;&lt;br /&gt;[RFC2241]  D. Provan, "DHCP Options for Novell Directory Services", &lt;br /&gt;           RFC 2241, November 1997.&lt;br /&gt;&lt;br /&gt;[RFC2242]  R. Droms and K. Fong, "NetWare/IP Domain Name and &lt;br /&gt;           Information", RFC 2242, November 1997.&lt;br /&gt;&lt;br /&gt;[RFC2485]  S. Drach, "DHCP Option for The Open Group's User Authentication &lt;br /&gt;           Protocol", RFC 2485, January 1999.&lt;br /&gt;&lt;br /&gt;[RFC2489]  Droms, R., "Procedure for Defining New DHCP Options",&lt;br /&gt;           BCP 29, RFC 2489, January 1999.&lt;br /&gt;&lt;br /&gt;[RFC2563]  R. Troll, "DHCP Option to Disable Stateless Auto-Configuration &lt;br /&gt;           in IPv4 Clients, RFC 2563, May 1999.&lt;br /&gt;&lt;br /&gt;[RFC2610]  C. Perkins and E. Guttman, "DHCP Options for Service Location &lt;br /&gt;           Protocol", RFC 2610, June 1999.&lt;br /&gt;&lt;br /&gt;[RFC2937]  C. Smith, "The Name Service Search Option for DHCP", RFC 2937,&lt;br /&gt;           September 2000.&lt;br /&gt;&lt;br /&gt;[RFC2939]  R. Droms, "Procedures and IANA Guidelines for Definition of&lt;br /&gt;           New DHCP Options and Message Types", RFC 2939, September 2000.&lt;br /&gt;&lt;br /&gt;[RFC3004]  G. Stump, R. Droms, Y. Gu, R. Vyaghrapuri, A. Demirtjis, &lt;br /&gt;           B. Beser, and J. Privat, "The User Class Option for DHCP", &lt;br /&gt;           RFC 3004, November 2000.&lt;br /&gt;&lt;br /&gt;[RFC3011]  G. Waters, "The IPv4 Subnet Selection Option for DHCP",&lt;br /&gt;           RFC 3011, November 2000.  &lt;br /&gt;&lt;br /&gt;[RFC3046]  M. Patrick, "DHCP Relay Agent Information Option", &lt;br /&gt;           RFC 3046, January 2001.&lt;br /&gt;&lt;br /&gt;[RFC3118]  R. Droms and W. Arbaugh, "Authentication for DHCP Messages",&lt;br /&gt;           RFC 3118, June 2001.&lt;br /&gt;&lt;br /&gt;[RFC3203]  Y. T'Jones, C. Hublet, and P. De Schrijver, "DHCP &lt;br /&gt;           Reonfigure Extension", RFC 3203, December 2001.&lt;br /&gt;&lt;br /&gt;[RFC3256]  D. Jones and R. Woundy, "The DOCSIS Device Class DHCP &lt;br /&gt;           Relay Agent Information Sub-option", RFC 3256,&lt;br /&gt;           April 2002.&lt;br /&gt;&lt;br /&gt;[RFC3361]  H. Schulzrinne, "DHCPv4 Option for SIP Servers", RFC 3361,&lt;br /&gt;           August 2002.&lt;br /&gt;&lt;br /&gt;[RFC3397]  B. Aboba and S. Cheshire, "Dynamic Host Configuration Protocol &lt;br /&gt;           (DHCP) Domain Search Option", RFC 3397, November 2002.&lt;br /&gt;&lt;br /&gt;[RFC3442]  T. Lemon, S. Cheshire, and B. Volz, "The Classless Static &lt;br /&gt;           Route Option for DHCPv4", RFC 3442, December 2002.&lt;br /&gt;&lt;br /&gt;[RFC3495]  B. Beser and P. Duffy, "DHCP Option for CableLabs Client &lt;br /&gt;           Configuration", RFC 3495, March 2003.&lt;br /&gt;&lt;br /&gt;[RFC3527]  K. Kinnear, M. Stapp, R. Johnson, and J. Kumarasamy, &lt;br /&gt;           "Link Selection sub-option for the Relay Agent Information &lt;br /&gt;           Option for DHCPv4", RFC 3527, April 2003.&lt;br /&gt;&lt;br /&gt;[RFC3594]  P. Duffy, "PacketCable Security Ticket Control Sub-option for &lt;br /&gt;           the DHCP CableLabs Client Configuration Option", RFC 3594,&lt;br /&gt;           September 2003.&lt;br /&gt;&lt;br /&gt;[RFC3679]  R. Droms, "Unused DHCP Option Codes", RFC 3679, January 2004.&lt;br /&gt;&lt;br /&gt;[RFC3634]  K. Luehrs, R. Woundy, J. Bevilacqua, N. Davoust,&lt;br /&gt;           "Key Distribution Center (KDC) Server Address Sub-option for&lt;br /&gt;           the Dynamic Host Configuration Protocol (DHCP) CableLabs Client &lt;br /&gt;           Configuration (CCC) Option", RFC3634, December 2003.&lt;br /&gt;&lt;br /&gt;[RFC3825]  J. Polk, J. Schnizlein, and M. Linsner, "Dynamic Host Configuration &lt;br /&gt;           Protocol Option for Coordinate-based Location Configuration &lt;br /&gt;           Information", RFC 3825, July 2004.&lt;br /&gt;&lt;br /&gt;[RFC3925]  J. Littlefield, "Vendor-Identifying Vendor Options for DHCPv4",&lt;br /&gt;           RFC 3925, October 2004.&lt;br /&gt;&lt;br /&gt;[RFC3942]  B. Volz, "Reclassifying DHCPv4 Options", RFC 3942, November 2004.&lt;br /&gt;&lt;br /&gt;[RFC3993]  R. Johnson, T. Palaniappan, and M. Stapp, "Subscriber-ID Suboption &lt;br /&gt;           for the DHCP Relay Agent Option", RFC 3993, March 2005.&lt;br /&gt;&lt;br /&gt;[RFC4014]  R. Droms and J. Schnizlein, "RADIUS Attributes Sub-option for the &lt;br /&gt;           DHCP Relay Agent Information Option", RFC 4014, February 2005.&lt;br /&gt;&lt;br /&gt;[RFC4030]  M. Stapp and T. Lemon, "The Authentication Suboption for the &lt;br /&gt;           DHCP Relay Agent Option", RFC 4030, March 2005.&lt;br /&gt;&lt;br /&gt;[RFC4039]  S. Park, P. Kim, and B. Volz, "Rapid Commit Option for DHCPv4", &lt;br /&gt;           RFC 4039, March 2005.&lt;br /&gt;&lt;br /&gt;[RFC4174]  C. Monia, J. Tseng, and K. Gibbons, "The IPv4 DHCP Option for &lt;br /&gt;           the Internet Storage Name Service", RFC 4174, September 2005.&lt;br /&gt;&lt;br /&gt;[RFC4243]  M. Stapp, R. Johnson, and T. Palaniappan, "Vendor-Specific Information &lt;br /&gt;           Suboption for the DHCP Relay Agent Option", RFC 4243, December 2005.&lt;br /&gt;&lt;br /&gt;[RFC4280]  K. Chowdhury, P. Yegani and L. Madour, "DHCP Options for Broadcast &lt;br /&gt;           and Multicast Control Servers", RFC 4280, November 2005.&lt;br /&gt;&lt;br /&gt;[RFC4388]  R. Woundy and Kim Kinnear, "DHCP Lease Query", RFC 4388, February 2006.&lt;br /&gt; &lt;br /&gt;[RFC4578]  M. Johnston and S. Venaas, "DHCP Options for the Intel Preboot eXecution&lt;br /&gt;           Environment (PXE)", RFC 4578, November 2006.&lt;br /&gt;&lt;br /&gt;[RFC4702]  M. Stapp, B. Volz and Y. Rekhter, "The DHCP Client FQDN Option", &lt;br /&gt;           RFC 4702, October 2006.&lt;br /&gt;&lt;br /&gt;[RFC4776]  H. Schulzrinne, "Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) &lt;br /&gt;           Option for Civic Addresses Configuration Information", RFC 4776, November 2006.&lt;br /&gt;&lt;br /&gt;[RFC4833]  E. Lear, P. Eggert, "A Timezone Option for DHCP", RFC 4833,&lt;br /&gt;            April 2007.&lt;br /&gt;&lt;br /&gt;[RFC5010]  K. Kinnear, M. Normoyle and M. Stapp, "DHCPv4 Relay Agent Flags Suboption", &lt;br /&gt;           RFC 5010, September 2007.                      &lt;br /&gt;&lt;br /&gt;[RFC5071]  D. Hankins, "Dynamic Host Configuration Protocol Options Used by PXELINUX",&lt;br /&gt;           RFC 5071, December 2007.&lt;br /&gt;&lt;br /&gt;[RFC5107]  R. Johnson, J. Jumarasamy, K. Kinnear, M. Stapp, "DHCP Server Identifier &lt;br /&gt;           Override Suboption", RFC 5107, February 2008.&lt;br /&gt;&lt;br /&gt;[RFC5192]  L. Morand, A. Yegin, S. Kumar, S. Madanapalli, "DHCP options for PANA &lt;br /&gt;           Authentication Agents", RFC 5192, May 2008.&lt;br /&gt;&lt;br /&gt;[RFC5223]  H. Schulzrinne, J. Polk, H. Tschofenig, "A Dynamic Host Configuration &lt;br /&gt;           Protocol (DHCP) based Location-to-Service Translation Protocol (LoST) &lt;br /&gt;           Discovery Procedure", RFC 5223, August 2008.&lt;br /&gt;&lt;br /&gt;[RFC5417]  P. Calhoun, "CAPWAP Access Controller DHCP Option", RFC 5417, March 2009.&lt;br /&gt;&lt;br /&gt;[RFC5678]  G. Bajko, S. Das, "Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) &lt;br /&gt;           Options for IEEE 802.21 Mobility Services (MoS) Discovery", RFC 5678, &lt;br /&gt;           December 2009.&lt;br /&gt;&lt;br /&gt;People&lt;br /&gt;------&lt;br /&gt;[Droms]  Ralph Droms, &lt;rdroms&amp;cisco.com&gt;, January 2001.&lt;br /&gt;&lt;br /&gt;[]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8986891961857267393?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8986891961857267393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8986891961857267393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8986891961857267393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8986891961857267393'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/01/bootpdhcp-parameters.html' title='bootp/dhcp parameters'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3906839142747736562</id><published>2010-01-04T14:05:00.002+02:00</published><updated>2010-01-04T14:05:39.079+02:00</updated><title type='text'>dhcp packet structure</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C9_uoqMmSpw/S0HZjEVtNkI/AAAAAAAAAB0/W6SwP3mDrno/s1600-h/dhcp_packet.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 385px;" src="http://1.bp.blogspot.com/_C9_uoqMmSpw/S0HZjEVtNkI/AAAAAAAAAB0/W6SwP3mDrno/s400/dhcp_packet.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5422854622814221890" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3906839142747736562?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3906839142747736562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3906839142747736562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3906839142747736562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3906839142747736562'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/01/dhcp-packet-structure.html' title='dhcp packet structure'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_C9_uoqMmSpw/S0HZjEVtNkI/AAAAAAAAAB0/W6SwP3mDrno/s72-c/dhcp_packet.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8262065022664147624</id><published>2010-01-03T21:27:00.001+02:00</published><updated>2010-01-03T21:27:49.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Disk I/O stats from /proc/diskstats</title><content type='html'>/proc/diskstats &lt;br /&gt;Field 1 -- # of reads issued&lt;br /&gt;Field 2 -- # of reads merged, field 6 -- # of writes merged&lt;br /&gt;Field 3 -- # of sectors read&lt;br /&gt;Field 4 -- # of milliseconds spent reading&lt;br /&gt;Field 5 -- # of writes completed&lt;br /&gt;Field 7 -- # of sectors written&lt;br /&gt;Field 8 -- # of milliseconds spent writing&lt;br /&gt;Field 9 -- # of I/Os currently in progress&lt;br /&gt;Field 10 -- # of milliseconds spent doing I/Os&lt;br /&gt;Field 11 -- weighted # of milliseconds spent doing I/Os&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8262065022664147624?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8262065022664147624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8262065022664147624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8262065022664147624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8262065022664147624'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2010/01/disk-io-stats-from-procdiskstats.html' title='Disk I/O stats from /proc/diskstats'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2527119104053836712</id><published>2009-12-30T17:01:00.001+02:00</published><updated>2009-12-30T17:01:47.340+02:00</updated><title type='text'>dhcp packets</title><content type='html'>RFC 2131          Dynamic Host Configuration Protocol         March 1997&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   0                   1                   2                   3&lt;br /&gt;   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1&lt;br /&gt;   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;   |     op (1)    |   htype (1)   |   hlen (1)    |   hops (1)    |&lt;br /&gt;   +---------------+---------------+---------------+---------------+&lt;br /&gt;   |                            xid (4)                            |&lt;br /&gt;   +-------------------------------+-------------------------------+&lt;br /&gt;   |           secs (2)            |           flags (2)           |&lt;br /&gt;   +-------------------------------+-------------------------------+&lt;br /&gt;   |                          ciaddr  (4)                          |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                          yiaddr  (4)                          |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                          siaddr  (4)                          |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                          giaddr  (4)                          |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                                                               |&lt;br /&gt;   |                          chaddr  (16)                         |&lt;br /&gt;   |                                                               |&lt;br /&gt;   |                                                               |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                                                               |&lt;br /&gt;   |                          sname   (64)                         |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                                                               |&lt;br /&gt;   |                          file    (128)                        |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;   |                                                               |&lt;br /&gt;   |                          options (variable)                   |&lt;br /&gt;   +---------------------------------------------------------------+&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   FIELD      OCTETS       DESCRIPTION&lt;br /&gt;   -----      ------       -----------&lt;br /&gt;&lt;br /&gt;   op            1  Message op code / message type.&lt;br /&gt;                    1 = BOOTREQUEST, 2 = BOOTREPLY&lt;br /&gt;   htype         1  Hardware address type, see ARP section in "Assigned&lt;br /&gt;                    Numbers" RFC; e.g., '1' = 10mb ethernet.&lt;br /&gt;   hlen          1  Hardware address length (e.g.  '6' for 10mb&lt;br /&gt;                    ethernet).&lt;br /&gt;   hops          1  Client sets to zero, optionally used by relay agents&lt;br /&gt;                    when booting via a relay agent.&lt;br /&gt;   xid           4  Transaction ID, a random number chosen by the&lt;br /&gt;                    client, used by the client and server to associate&lt;br /&gt;                    messages and responses between a client and a&lt;br /&gt;                    server.&lt;br /&gt;   secs          2  Filled in by client, seconds elapsed since client&lt;br /&gt;                    began address acquisition or renewal process.&lt;br /&gt;   flags         2  Flags (see figure 2).&lt;br /&gt;   ciaddr        4  Client IP address; only filled in if client is in&lt;br /&gt;                    BOUND, RENEW or REBINDING state and can respond&lt;br /&gt;                    to ARP requests.&lt;br /&gt;   yiaddr        4  'your' (client) IP address.&lt;br /&gt;   siaddr        4  IP address of next server to use in bootstrap;&lt;br /&gt;                    returned in DHCPOFFER, DHCPACK by server.&lt;br /&gt;   giaddr        4  Relay agent IP address, used in booting via a&lt;br /&gt;                    relay agent.&lt;br /&gt;   chaddr       16  Client hardware address.&lt;br /&gt;   sname        64  Optional server host name, null terminated string.&lt;br /&gt;   file        128  Boot file name, null terminated string; "generic"&lt;br /&gt;                    name or null in DHCPDISCOVER, fully qualified&lt;br /&gt;                    directory-path name in DHCPOFFER.&lt;br /&gt;   options     var  Optional parameters field.  See the options&lt;br /&gt;                    documents for a list of defined options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2527119104053836712?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2527119104053836712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2527119104053836712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2527119104053836712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2527119104053836712'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/dhcp-packets.html' title='dhcp packets'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4812661591463832110</id><published>2009-12-30T11:13:00.006+02:00</published><updated>2010-06-22T16:46:34.720+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>xfs optimizations</title><content type='html'>Create partition with:&lt;br /&gt; # mkfs.xfs -l lazy-count=1,internal,size=128m -d agcount=8 /dev/sda1&lt;br /&gt;Mount with:&lt;br /&gt; /dev/sda1  / xfs noatime,logbufs=8,logbsize=262144,allocsize=8m,osyncisdsync   1   1&lt;br /&gt;&lt;br /&gt;Why do we do this....&lt;br /&gt;The optimized XFS has two different options related to logs: by default, XFS uses a log of 22MB, but its performance increases with bigger logs, so we use 128MB. Also, XFS tries to keep counters in superblocks always up to date, but this information can be retrieved only when necessary. Turning on lazy-count, we avoid some disk writes.&lt;br /&gt;The optimized XFS will be mounted with two other options: logbufs=8, which increase the number of log buffers from 2 to 8, and logbsize=256k which increases log buffers size from 32KB to 256KB. This increases memory usage, of course, but I have 3GB. It won't be 2MB that will make me run out of memory.&lt;br /&gt;The agcount suboption is used to specify the number  of  allocation groups.&lt;br /&gt;The data section of the filesystem is divided into allocation groups to &lt;br /&gt;improve the performance of XFS.  More allocation  groups  imply that more &lt;br /&gt;parallelism can be achieved when allocating blocks and inodes. The minimum &lt;br /&gt;allocation group size is 16 MiB; the maximum size is just under 1 TiB. &lt;br /&gt;The data section of the filesystem is divided into agcount allocation groups&lt;br /&gt;(default  value  is scaled automatically based on the underlying device size).&lt;br /&gt;Setting agcount to a very large number should  be avoided, since this causes &lt;br /&gt;an unreasonable amount of CPU time to be used when the filesystem is close to full.&lt;br /&gt;&lt;br /&gt;These  options  specify the location, size, and other parameters of the log &lt;br /&gt;section of the filesystem.  The valid suboptions are: internal[=value],   &lt;br /&gt;logdev=device,   size=value,  version=[1|2], sunit=value, and su=value.&lt;br /&gt;&lt;br /&gt;The internal suboption is used to specify that the  log  section is  a  piece&lt;br /&gt;of the data section instead of being another device or logical volume. &lt;br /&gt;The suboption value is either 0 or 1, with 1 signifying that the log is internal. &lt;br /&gt;If the value is omitted, 1 is assumed.&lt;br /&gt;&lt;br /&gt;osyncisosync - Make O_SYNC writes implement true O_SYNC.  WITHOUT this option,&lt;br /&gt;Linux XFS behaves as if an "osyncisdsync" option is used, which will make writes &lt;br /&gt;to files opened with the O_SYNC flag set behave as if the O_DSYNC flag had been &lt;br /&gt;used instead. This can result in better performance without compromising data safety.&lt;br /&gt;However if this option is not in effect, timestamp updates from O_SYNC writes can &lt;br /&gt;be lost if the system crashes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4812661591463832110?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4812661591463832110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4812661591463832110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4812661591463832110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4812661591463832110'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/create-xfs-with-64mb-logfile.html' title='xfs optimizations'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7778343478152809077</id><published>2009-12-27T22:58:00.001+02:00</published><updated>2009-12-27T22:58:18.789+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>sysctl</title><content type='html'># Lookup names via DNS first then fall back to /etc/hosts.&lt;br /&gt;echo "order bind,hosts" &gt;&gt; /etc/host.conf&lt;br /&gt;# We have machines with multiple IP addresses.&lt;br /&gt;echo "multi on" &gt;&gt; /etc/host.conf&lt;br /&gt;# Check for IP address spoofing.&lt;br /&gt;echo "nospoof on" &gt;&gt; /etc/host.conf&lt;br /&gt;&lt;br /&gt;# Max File Handlers&lt;br /&gt;echo"fs.file-max = 8192" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Disable CTR+ALT+DEL Restart Keys&lt;br /&gt;echo "kernel.ctrl-alt-del = 1" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Enable TCP SYN cookie protection&lt;br /&gt;echo "net.ipv4.tcp_syncookies = 1" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Disable ICMP Redirect Acceptance&lt;br /&gt;echo "net.ipv4.conf.all.accept_redirects = 0" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Enable bad error message protection&lt;br /&gt;echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Decrease time between keepalives&lt;br /&gt;echo "net.ipv4.tcp_keepalive_time = 1200" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Turn off timestamps&lt;br /&gt;#echo "net.ipv4.tcp_timestamps = 0" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;## Ignore icmp broadcast request&lt;br /&gt;echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Decrease the time default value for tcp_fin_timeout connection&lt;br /&gt;echo "net.ipv4.tcp_fin_timeout = 25" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Turn off the tcp_window_scaling"&lt;br /&gt;#echo "net.ipv4.tcp_window_scaling = 0" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Turn off the tcp_sack&lt;br /&gt;#echo "net.ipv4.tcp_sack = 0" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Allow more SYN backlog&lt;br /&gt;echo "net.ipv4.tcp_max_syn_backlog = 1048" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;# Lower retry rates&lt;br /&gt;echo "net.ipv4.tcp_synack_retries = 2" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;echo "net.ipv4.tcp_syn_retries = 3" &gt;&gt; /etc/sysctl.conf&lt;br /&gt;&lt;br /&gt;# Log all kernel messages to the new file /var/log/kernel&lt;br /&gt;#echo "kern.* /var/log/kernel" &gt;&gt; /etc/syslog.conf&lt;br /&gt;## Log all logins to /var/log/login_log&lt;br /&gt;echo "auth.*;user.*;daemon.none /var/log/login_log" &gt;&gt; /etc/syslog.conf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7778343478152809077?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7778343478152809077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7778343478152809077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7778343478152809077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7778343478152809077'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/sysctl.html' title='sysctl'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-2092113622217778750</id><published>2009-12-20T13:40:00.001+02:00</published><updated>2009-12-20T13:42:04.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>e1000: eth3: e1000_clean_tx_irq: Detected Tx Unit Hang</title><content type='html'>e1000: eth3: e1000_clean_tx_irq: Detected Tx Unit Hang&lt;br /&gt;  Tx Queue             &lt;0&gt;&lt;br /&gt;  TDH                  &lt;6&gt;&lt;br /&gt;  TDT                  &lt;7&gt;&lt;br /&gt;  next_to_use          &lt;7&gt;&lt;br /&gt;  next_to_clean        &lt;6&gt;&lt;br /&gt;buffer_info[next_to_clean]&lt;br /&gt;  time_stamp           &lt;680f3fe&gt;&lt;br /&gt;  next_to_watch        &lt;6&gt;&lt;br /&gt;  jiffies              &lt;680f469&gt;&lt;br /&gt;  next_to_watch.status &lt;0&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More info about the bug: http://linux.derkeiler.com/Mailing-Lists/Kernel/2007-01/msg02726.html&lt;br /&gt;Fix: http://blog.marques.cx/2008/03/14/e1000_clean_tx_irq-detected-tx-unit-hang/&lt;br /&gt;Script to fix: http://93.183.131.3/e1000_eprom_fix.sh&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-2092113622217778750?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/2092113622217778750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=2092113622217778750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2092113622217778750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/2092113622217778750'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/e1000-eth3-e1000cleantxirq-detected-tx.html' title='e1000: eth3: e1000_clean_tx_irq: Detected Tx Unit Hang'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7660762214227422759</id><published>2009-12-17T01:16:00.001+02:00</published><updated>2009-12-17T01:18:08.900+02:00</updated><title type='text'>linux netfilter</title><content type='html'>from kernelnewbies.org&lt;br /&gt;LaForge  PART 1 - netfilter basics&lt;br /&gt; LaForge  I was talking about these hooks at particular points in the network stack.&lt;br /&gt; LaForge  I'm going to concentrate on IPv4, as this seems to be the most important case :)&lt;br /&gt; LaForge  ---&gt;[1]---&gt;[ROUTE]---&gt;[3]---&gt;[4]---&gt;&lt;br /&gt; LaForge  | ^&lt;br /&gt; LaForge  | |&lt;br /&gt; LaForge  | [ROUTE]&lt;br /&gt; LaForge  v |&lt;br /&gt; LaForge  [2] [5]&lt;br /&gt; LaForge  | ^&lt;br /&gt; LaForge  | |&lt;br /&gt; LaForge  v |&lt;br /&gt; LaForge  &lt;br /&gt; LaForge  on the left hand, you have incoming packets, coming from the network&lt;br /&gt; LaForge  on the right hand, outgoing packets are leaving to the network&lt;br /&gt; LaForge  on the bottom of the picture is our local machine, the local userspace processes.&lt;br /&gt; LaForge  the 5 hooks are called:&lt;br /&gt; LaForge  1 NF_IP_PRE_ROUTING&lt;br /&gt; LaForge  2 NF_IP_LOCAL_IN&lt;br /&gt; LaForge  3 NF_IP_FORWARD&lt;br /&gt; LaForge  4 NF_IP_POST_ROUTING&lt;br /&gt; LaForge  5 NF_IP_LOCAL_OUT&lt;br /&gt; LaForge  so let's view at the path a packet goes while being forwarded by our machine:&lt;br /&gt; LaForge  Firs it comes off the wire, it passes hook #1. The routing decision is made,&lt;br /&gt; LaForge  it passes hook #3 (forward), passes hook #4 (post_routing) and leaves off to the network again.&lt;br /&gt; LaForge  If we look on packets which have a local destionation (are locally terminated an are not routed), the following path:&lt;br /&gt; LaForge  packet comes off the wire&lt;br /&gt; LaForge  packet hits hook #1 (pre_routing)&lt;br /&gt; LaForge  routing decision decides that packet is local&lt;br /&gt; LaForge  packet hits hook #2 (local_in)&lt;br /&gt; LaForge  packet hits local process&lt;br /&gt; LaForge  &lt;br /&gt; LaForge  If we look at a locally-originated packet:&lt;br /&gt; LaForge  packet is generated by local process at the bottom&lt;br /&gt; LaForge  packet hits hook #5 (local_out)&lt;br /&gt; LaForge  routing code decides where to route the packet&lt;br /&gt; LaForge  packet passes hook #4 (post_routing)&lt;br /&gt; LaForge  packet hits the wire of the network&lt;br /&gt; LaForge  (btw: i want to concentrate on the talk and handle questions after the talk, this way i can concentrate on the talk...)&lt;br /&gt; LaForge  (anyway, you can collect the questions at #qc, if you want)&lt;br /&gt; LaForge  Now we know how packets traverse the netfilter hooks&lt;br /&gt; LaForge  As I said, any kernel module may register on one or more of these hooks, and a callback-function is called for each packet passing this particular hook&lt;br /&gt; LaForge  the module may then return a verdict about the packet's future:&lt;br /&gt; LaForge  NF_ACCEPT = continue traversal as normal&lt;br /&gt; LaForge  NF_DROP = drop the packet silently, do not continue&lt;br /&gt; LaForge  NF_STOLEN = I (as the hook-registered module) have taken over the packet, do not continue&lt;br /&gt; LaForge  NF_QUEUE = enqueue packet to userspace (i'm going to say more about this later)&lt;br /&gt; LaForge  NF_REPEAT = please call this hook again&lt;br /&gt; LaForge  packet filtering / NAT / packet mangling is implemented using IP tables on each of these netfilter hooks.&lt;br /&gt; LaForge  IP TABLES:&lt;br /&gt; LaForge  IP tables are tables of rules, which a packet traverses from top to bottom&lt;br /&gt; LaForge  each rule in an IP table consists out of matches, which specify how the packet must look like, if it is to match this rule&lt;br /&gt; LaForge  and one target, which tells us what to do if this particular rule matches.&lt;br /&gt; LaForge  IP tables are implemented as reusable component - in fact, netfilter it self uses currently three instances of IP tables.&lt;br /&gt; LaForge  But any other kernel module may also use IP tables (for example as an IPsec SPDB)&lt;br /&gt; LaForge  The three tables implemented in netfilter itself are: 'filter', 'nat' and 'mangle'&lt;br /&gt; LaForge  Connectiontracking:&lt;br /&gt; LaForge  Connection tracking is another part, which is implemented on top of the netfileter hooks.&lt;br /&gt; LaForge  conntrack enables us to do stateful firewalling. That is: Decide upon the fate of a packet not only by data from this packet, but also by information about the state of the connection the packet belongs to.&lt;br /&gt; LaForge  i'm going to say more about connection tracking later.&lt;br /&gt; LaForge  First I want to talk about the three IP tables:&lt;br /&gt; LaForge  PART II - packet filtering&lt;br /&gt; LaForge  Packet filtering is implemented using the three hooks NF_IP_LOCAL_IN&lt;br /&gt; LaForge  NF_IP_FORWAD and NF_IP_LOCAL_OUT&lt;br /&gt; LaForge  each packet passes only one of these three hooks:&lt;br /&gt; LaForge  locally originated packets traverse only NF_IP_LOCAL_OUT&lt;br /&gt; LaForge  locally terminated packets traverse only NF_IP_LOCAL_IN&lt;br /&gt; LaForge  and forwarded packets traverse only NF_IP_FORWARD&lt;br /&gt; LaForge  the 'filter' table connects one chain to each of these three hooks:&lt;br /&gt; LaForge  NF_IP_LOCAL_IN = INPUT chain&lt;br /&gt; LaForge  NF_IP_LOCAL_OUT = OUTPUT chian&lt;br /&gt; LaForge  NF_IP_FORWARD = FORWARD chain&lt;br /&gt; LaForge  (the names are the same as in 2.2 - only uppercase)&lt;br /&gt; LaForge  but BE AWARE: the behaviour which packet traverses which chain has changed from the 2.2 behaviour&lt;br /&gt; LaForge  i.e. a forwarded packet only hits the FORWARD chain, _not_ INPUT and OUTPUT also&lt;br /&gt; LaForge  to know how we insert filtering rules in the chains of the 'filter' table, we have to examine the IP tables a bit further&lt;br /&gt; LaForge  As I said, the IP tables are implemented very generic, so there's one userspace tool, which is able to configure/modify all kindes of tables/chains&lt;br /&gt; LaForge  each rule in a chain consists out of&lt;br /&gt; LaForge  - match(es) which specify things like source address, destination address, port numbers, ...&lt;br /&gt; LaForge  - target (what to do if this rule matches)&lt;br /&gt; LaForge  To configure these rules, we have the tool called 'iptables'&lt;br /&gt; LaForge  I'm going to explain some of the iptables commands:&lt;br /&gt; LaForge  To fully specify an iptables command, we need the following information:&lt;br /&gt; LaForge  - which table to work on&lt;br /&gt; LaForge  - which chain in this table to use&lt;br /&gt; LaForge  - the operation (append, insert , delete, modify, )&lt;br /&gt; LaForge  - at least one match&lt;br /&gt; LaForge  - and exactly one target&lt;br /&gt; LaForge  the syntax is something like:&lt;br /&gt; LaForge  iptables - t table -Operation chain -j target match(es)&lt;br /&gt; LaForge  to give a very basic example:&lt;br /&gt; LaForge  iptables -t filter -A INPUT -j ACCEPT -p tcp --dport smtp&lt;br /&gt; LaForge  which -A(ppend)s a rule to the INPUT chain of the 'filter' table&lt;br /&gt; LaForge  and the rule itself ACCEPTs all tcp packets which have a destination port of 25 (smtp)&lt;br /&gt; LaForge  now we have to know what matches and targets we have available&lt;br /&gt; LaForge  as targets, we have :&lt;br /&gt; LaForge  ACCEPT - accept the packet&lt;br /&gt; LaForge  DROP - silently drop the packet (this is the 2.2 DENY)&lt;br /&gt; LaForge  QUEUE - queue the packet to an userspace process&lt;br /&gt; LaForge  RETURN - return to previous (calling) chain&lt;br /&gt; LaForge  foobar - jump to an userdefined chain&lt;br /&gt; LaForge  REJECT - drop the packet and inform the sender about it&lt;br /&gt; LaForge  LOG - log the packet via syslog, continue traversal&lt;br /&gt; LaForge  ULOG - send the packet to an userspace logging process&lt;br /&gt; LaForge  MIRROR - change source/destination IP and resend the packet (for testing purpose)&lt;br /&gt; LaForge  now the available matches:&lt;br /&gt; LaForge  -p protocol (tcp/udp/icmp/...)&lt;br /&gt; LaForge  -s source address&lt;br /&gt; LaForge  -d destination address&lt;br /&gt; LaForge  -i incoming interface&lt;br /&gt; LaForge  -o outgoing interface&lt;br /&gt; LaForge  --dport destination port&lt;br /&gt; LaForge  --sport source port&lt;br /&gt; LaForge  --state (NEW,ESTABLISHED,RELATED,INVALID) (i'm comming back to that)&lt;br /&gt; LaForge  --mac-source source MAC address&lt;br /&gt; LaForge  --mark nfmark value&lt;br /&gt; LaForge  --tos TOS value of the packet&lt;br /&gt; LaForge  --ttl ttl value of the packet&lt;br /&gt; LaForge  --limit (limit the rate of this packet to a certain amount of pkts/timeframe)&lt;br /&gt; LaForge  &lt;br /&gt; LaForge  knowing about the matches and targets, you are now able to configure your packet filter.&lt;br /&gt; LaForge  I'm coming back to the connection tracking stuff&lt;br /&gt; LaForge  this is a real advantage of the new 2.4 code:&lt;br /&gt; LaForge  stateful firewalling&lt;br /&gt; LaForge  the connection tracking code keeps track of all current connections going through our router/firewall&lt;br /&gt; LaForge  each packet is assigned one of the state values:&lt;br /&gt; LaForge  NEW (packet would establish a new connection, if we let it pass)&lt;br /&gt; LaForge  ESTABLISHED (packet is part of an already established connection)&lt;br /&gt; LaForge  RELATED (packet is somehow related to an already established connection)&lt;br /&gt; LaForge  INVALID (packet is multicast or something else whe really don't know what it is&lt;br /&gt; LaForge  so now we could do something like:&lt;br /&gt; LaForge  iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED&lt;br /&gt; LaForge  which lets only all packets belonging to an already established connection and the related ones pass.&lt;br /&gt; LaForge  if we now block all NEW packets from the 'outer' interface (internet)&lt;br /&gt; LaForge  and allow NEW packets from the inside interface, we'll have the basic config of most firewalls&lt;br /&gt; LaForge  so how does this differ from blocking packets which have the SYN flag set?&lt;br /&gt; LaForge  connection tracking is generic and currently handles TCP, UDP and ICMP&lt;br /&gt; LaForge  so for example we don't accept icmp echo replies, if we didn't send an icmp echo request before&lt;br /&gt; LaForge  the connection tracking is extensible in two ways:&lt;br /&gt; LaForge  - application helper modules (like ip_conntrack_ftp, ip_conntrack_irc) for specific protocols&lt;br /&gt; LaForge  - protocol helper modules (for tracking the state of other protocols than tcp/udp/icmp)&lt;br /&gt; LaForge  the ip_contrack_ftp for example marks all incoming ftp data connections as RELATED&lt;br /&gt; LaForge  now we can do active ftp through a firewall which doesn't have to accept all connections to internal ip's with ports &gt; 1024 anymore!&lt;br /&gt; LaForge  ok... time for the next parT:&lt;br /&gt; LaForge  PART III - NAT&lt;br /&gt; LaForge  in 2.2 we only had the masquerading code, which deals with a special case of NAT (network address translation)&lt;br /&gt; LaForge  in 2.4 we have all kinds of differnet nat:&lt;br /&gt; LaForge  SNAT (source address NAT), and MASQUERADE as a special case of that&lt;br /&gt; LaForge  DNAT (destination address NAT), and REDIRECT as a special case&lt;br /&gt; LaForge  source nat is done at the POST_ROUTING hook&lt;br /&gt; LaForge  destination nat is done at the PRE_ROUTING hook&lt;br /&gt; LaForge  i'll begin with a small example of SNAT:&lt;br /&gt; LaForge  iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4 -o eth0&lt;br /&gt; LaForge  this will NAT all packets to be sent out on eth0 to the new source address of 1.2.3.4&lt;br /&gt; LaForge  (it of course does the inverse mapping for the reply packets)&lt;br /&gt; LaForge  SNAT is useful for NAT cases, where you have a statically assigned IP address.&lt;br /&gt; LaForge  If your outgoing interfaces has a dynamically assigned IP address, you may use the MASQUERADE target.&lt;br /&gt; LaForge  iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0&lt;br /&gt; LaForge  is an example for masqing all traffic on interface ppp0.&lt;br /&gt; LaForge  the address to which the packets are nat'ed is the interface address of ppp0&lt;br /&gt; LaForge  it's always the current address of ppp0, so IP address changes don't need any special handling.&lt;br /&gt; LaForge  The next part is DNAT:&lt;br /&gt; LaForge  small example:&lt;br /&gt; LaForge  iptables -t nat -A PREROUTING -j DNAT --to-destination 1.2.3.4:8080 -t tcp --dport 80 -i eth0&lt;br /&gt; LaForge  which NAT's all tcp packets, coming through interface eth0 and going to a webserver to 1.2.3.4:808&lt;br /&gt; LaForge  8080 of coruse&lt;br /&gt; LaForge  this is quite useful if you want to do transparent www proxying&lt;br /&gt; LaForge  REDIRECT is a special case of DNAT:&lt;br /&gt; LaForge  iptables -t nat -A PREROUTING -j REDIRECT --to-port 3128 -i eth1 -p tcp --dport 80&lt;br /&gt; LaForge  all tcp packets from eth1 going to any webserver on port 80 are redirected to a proxy running on the local machine&lt;br /&gt; LaForge  PART IV - Packet mangling&lt;br /&gt; LaForge  this is something really new, which 2.2.x code didn't have at all&lt;br /&gt; LaForge  the 'mangle' table lets you mangle any arbitrary information inside the packets while they pass our local machine&lt;br /&gt; LaForge  currently we have only three targets implemented:&lt;br /&gt; LaForge  TOS - change the TOS bit field in the header&lt;br /&gt; LaForge  TTL - change the TTL field in the header (increment/decrement/set)&lt;br /&gt; LaForge  MARK - set the packet's skb-&gt;nfmark fielt to a particular value&lt;br /&gt; LaForge  of course you can again use all the matches available for packet filtering and nat.&lt;br /&gt; LaForge  a simple example:&lt;br /&gt; LaForge  iptables -t mangle -A PREROUITING -j MARK --set-mark 10 -p tcp --dport 80&lt;br /&gt; LaForge  which set's the nfmark field of each packet's skb to 10, if it is tcp and has a destination port of 9-&lt;br /&gt; LaForge  80&lt;br /&gt; LaForge  all matches and targets are implemented as separate modules, so you can at any time write new match and/or target modules&lt;br /&gt; LaForge  There are two more 'advanced concepts' of netfilter, I want to introduce:&lt;br /&gt; LaForge  - Queuing&lt;br /&gt; LaForge  if you have a rule, which has the target QUEUE, the packet is inserted into a special queue inside netfilter&lt;br /&gt; LaForge  the packets in this queue are transmitted over a netlink socket to a userspace process.&lt;br /&gt; LaForge  this userspace process can now do whatever it wans with the packet (including its data) and re-inject it at exactly the place it came from&lt;br /&gt; LaForge  the process can (of course) also set the verdict of this packet (like: DROP this packet, ACCEPT the other one)&lt;br /&gt; LaForge  this enables people to write some firewalling code in userspace, and (hopefully) keeps the kernel clean from too complex code.&lt;br /&gt; LaForge  - Userspace logging&lt;br /&gt; LaForge  Very similar to queuing, although it is unidirectional&lt;br /&gt; LaForge  if you insert a rule with the ULOG target, the packet is copied and sent through a netlink multicast socket&lt;br /&gt; LaForge  one or more userspace processes may listen to this netlink multicast socket and receive the copy of the packet&lt;br /&gt; LaForge  the userspace process may now gather all information it needs and log it to a logfile/database/whatever&lt;br /&gt; LaForge  we've already implemented ulogd, which is a plugin-extensible logging daemon attaching to the ULOG target&lt;br /&gt; LaForge  So.... we are heading the end of my talk.... last chapter:&lt;br /&gt; LaForge  Current development and future:&lt;br /&gt; LaForge  - full TCP sequence number tracking&lt;br /&gt; LaForge  - port more matches/targets to IPv6&lt;br /&gt; LaForge  - support for more application protocol helpers for NAT (RPC, SMB, SNMP, ...)&lt;br /&gt; LaForge  - more matches (like 'accept all packets as long as the number of connections to this port doesn't raise about N)&lt;br /&gt; LaForge  - multicast support&lt;br /&gt; LaForge  - infrastructure for having conntrack and nat helpers in userspace&lt;br /&gt; LaForge  &lt;br /&gt; LaForge  At the end some useful links:&lt;br /&gt; LaForge  This presentation:&lt;br /&gt; LaForge  http://www.gnumonks.org/papers/netfilter-lk2000&lt;br /&gt; LaForge  netfilter homepage: http://netfilter.kernelnotes.org&lt;br /&gt; LaForge  links to the mailinglist(s) and the archives, as well as the iptables userspace tool are on the netfilter homepage&lt;br /&gt; LaForge  we also have a bunch of documents you might be interested in: The 2.4 packet filtering howto, the 2.4 NAT howto, the netfilter hacking howto, and some more stuff&lt;br /&gt; LaForge  everything should be linked from the netfilter homepage&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7660762214227422759?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7660762214227422759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7660762214227422759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7660762214227422759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7660762214227422759'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/linux-netfilter.html' title='linux netfilter'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5601106422947931828</id><published>2009-12-12T21:58:00.002+02:00</published><updated>2009-12-12T22:05:36.395+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>xfs defragmentation</title><content type='html'>Check if partition needs defragmentation&lt;br /&gt;&lt;br /&gt;# xfs_db -r /dev/sda3&lt;br /&gt;xfs_db&gt; frag&lt;br /&gt;actual 22222222, ideal 2342342, fragmentation factor 99.9%&lt;br /&gt;xfs_db&gt; quit&lt;br /&gt;&lt;br /&gt;Once you see a scary fragmentation factor, run the command for the optimization&lt;br /&gt;&lt;br /&gt;# xfs_fsr -p 3 -v /dev/sda5&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5601106422947931828?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5601106422947931828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5601106422947931828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5601106422947931828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5601106422947931828'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/xfs-defragmentation.html' title='xfs defragmentation'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-347995956104076429</id><published>2009-12-11T22:20:00.002+02:00</published><updated>2009-12-11T22:36:49.682+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>lnx shitz</title><content type='html'>dd if=/dev/mem bs=1k skip=768 count=256 2&gt;/dev/null | strings -n 8 # Read BIOS&lt;br /&gt;watch -n1 'cat /proc/interrupts'   # Watch changeable interrupts continuously&lt;br /&gt;dmidecode                          # Show DMI/SMBIOS: hw info from the BIOS&lt;br /&gt;[change prio]&lt;br /&gt;nice -n -5 top                     # Stronger priority (/usr/bin/nice)&lt;br /&gt;nice -n 5 top                      # Weaker priority (/usr/bin/nice)&lt;br /&gt;nice +5 top                        # tcsh builtin nice (same as above!)&lt;br /&gt;[bg process]&lt;br /&gt;ping cb.vu &gt; ping.log&lt;br /&gt;^Z                                   # ping is suspended (stopped) with [Ctrl]-[Z] &lt;br /&gt;bg                                 # put in background and continues running&lt;br /&gt;jobs -l                            # List processes in background&lt;br /&gt;[1]  - 36232 Running                       ping cb.vu &gt; ping.log&lt;br /&gt;[2]  + 36233 Suspended (tty output)        top&lt;br /&gt;fg %2                              # Bring process 2 back in foreground&lt;br /&gt;&lt;br /&gt;fuser -m /home                     # List processes accessing /home&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-347995956104076429?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/347995956104076429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=347995956104076429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/347995956104076429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/347995956104076429'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/lnx-shitz.html' title='lnx shitz'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-864575903872053161</id><published>2009-12-06T21:35:00.002+02:00</published><updated>2009-12-06T21:48:43.442+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>CFQ Scheduler change. [2.6.32]</title><content type='html'>CFQ low latency mode&lt;br /&gt;&lt;br /&gt;Recommended LWN commentary from Jens Axboe&lt;br /&gt;&lt;br /&gt;In this release, the CFQ IO scheduler (the one used by default) gets a new feature that greatly helps to reduce the impact that a writer can have on the system interactiveness. The end result is that the desktop experience should be less impacted by background IO activity, but it can cause noticeable performance issues, so people who only cares about throughput (ie, servers) can try to turn it off echoing 0 to /sys/class/block/&lt;device name&gt;/queue/iosched/low_latency. It's worth mentioning that the 'low_latency' setting defaults to on.&lt;br /&gt;&lt;br /&gt;Code: (commit), (commit)&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Kernel Samepage Merging (memory deduplication)&lt;br /&gt;&lt;br /&gt;Recommended LWN articles: '/dev/ksm: dynamic memory sharing', 'KSM tries again'&lt;br /&gt;&lt;br /&gt;Kernel Samepage Merging, aka KSM (also know as Kernel Shared Memory in the past) is a memory de-duplication implementation.&lt;br /&gt;&lt;br /&gt;Modern operative systems already use memory sharing extensively, for example forked processes share initially with its parent all the memory, there are shared libraries, etc. Virtualization however can't benefit easily from memory sharing. Even when all the VMs are running the same OS with the same kernel and libraries the host kernel can't know that a lot of those pages are identical and can be shared. KSM allows to share those pages. The KSM kernel daemon, ksmd, periodically scans areas of user memory, looking for pages of identical content which can be replaced by a single write-protected page (which is automatically COW'ed if a process wants to update it). Not all the memory is scanned, the areas to look for candidates for merging are specified by userspace apps using madvise(2): madvise(addr, length, MADV_MERGEABLE).&lt;br /&gt;&lt;br /&gt;The result is a dramatic decrease in memory usage in virtualization environments. In a virtualization server, Red Hat found that thanks to KSM, KVM can run as many as 52 Windows XP VMs with 1 GB of RAM each on a server with just 16 GB of RAM. Because KSM works transparently to userspace apps, it can be adopted very easily, and provides huge memory savings for free to current production systems. It was originally developed for use with KVM, but it can be also used with any other virtualization system - or even in non virtualization workloads, for example applications that for some reason have several processes using lots of memory that could be shared.&lt;br /&gt;&lt;br /&gt;The KSM daemon is controlled by sysfs files in /sys/kernel/mm/ksm/, documentation can be found in Documentation/vm/ksm.txt. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Easy local kernel configuration&lt;br /&gt;&lt;br /&gt;Most people uses the kernel shipped by distros - and that's good. But some people like to compile their own kernels from kernel.org, or maybe they like following the Linux development and want to try it. Configuring your own kernel, however, has become a very difficult and tedious task - there're too many options, and some times userspace software will stop working if you don't enable some key option. You can use a standard distro .config file, but it takes too many time to compile all the options it enables.&lt;br /&gt;&lt;br /&gt;To make easier the process of configuration, a new build target has been added: make localmodconfig. It runs "lsmod" to find all the modules loaded on the current running system. It will read all the Makefiles to map which CONFIG enables a module. It will read the Kconfig files to find the dependencies and selects that may be needed to support a CONFIG. Finally, it reads the .config file and removes any module "=m" that is not needed to enable the currently loaded modules. With this tool, you can strip a distro .config of all the unuseful drivers that are not needed in our machine, and it will take much less time to build the kernel. There's an additional "make localyesconfig" target, in case you don't want to use modules and/or initrds. &lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NAPI-like approach for block devices&lt;br /&gt;&lt;br /&gt;Recommended LWN article: 'Interrupt mitigation in the block layer'&lt;br /&gt;&lt;br /&gt;blk-iopoll is a NAPI like approach for block devices, it reduces the interrupt overhead. In benchmarks, blk-iopoll cut sys time by 40% in some cases. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;Block&lt;br /&gt; * Enable rq CPU completion affinity by default (speeds up significantly databases&lt;br /&gt;&lt;br /&gt;MD/DM&lt;br /&gt; * Distribute raid processing over multiple cores (commit)&lt;br /&gt; * Asynchronous raid6 operations&lt;br /&gt;&lt;br /&gt;Filesystems&lt;br /&gt;&lt;br /&gt; * XFS: Speed up free inode search.In big filesystems this can speed up allocation speed by 3-4x&lt;br /&gt;&lt;br /&gt;Sound&lt;br /&gt; * ctxfi - Native timer support for emu20k2&lt;br /&gt;&lt;br /&gt;ACPI&lt;br /&gt; * ACPI 4.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-864575903872053161?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/864575903872053161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=864575903872053161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/864575903872053161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/864575903872053161'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/12/cfq-scheduler-change-2632.html' title='CFQ Scheduler change. [2.6.32]'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3665249404809460940</id><published>2009-11-02T16:50:00.000+02:00</published><updated>2009-11-02T16:51:12.080+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>remove fprot from qmail</title><content type='html'>&gt;cat /var/qmail/bin/qmail-scanner-queue.pl | grep -n  fprot&lt;br /&gt;110:#my @scanner_array=("fprot_scanner","spamassassin");&lt;br /&gt;&gt;cat /var/qmail/bin/qmail-scanner-queue.pl | grep -n  f-prot&lt;br /&gt;210:my $fprot_binary='/usr/local/f-prot/f-prot';&lt;br /&gt;1577:     $SCANINFO .="f-prot: $2/";&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3665249404809460940?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3665249404809460940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3665249404809460940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3665249404809460940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3665249404809460940'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/11/remove-fprot-from-qmail.html' title='remove fprot from qmail'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6552201400793428943</id><published>2009-10-28T17:31:00.001+02:00</published><updated>2009-10-28T17:32:42.384+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python sql ;]</title><content type='html'># Never do this -- insecure!&lt;br /&gt;symbol = 'IBM'&lt;br /&gt;c.execute("... where symbol = '%s'" % symbol)&lt;br /&gt;&lt;br /&gt;# Do this instead&lt;br /&gt;t = (symbol,)&lt;br /&gt;c.execute('select * from stocks where symbol=?', t)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6552201400793428943?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6552201400793428943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6552201400793428943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6552201400793428943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6552201400793428943'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/10/python-sql.html' title='python sql ;]'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1972299396210670061</id><published>2009-09-30T15:32:00.001+03:00</published><updated>2009-09-30T15:32:25.395+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>clear qmail bounce mailz :D</title><content type='html'>qmqtool -f "bounce" -d&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1972299396210670061?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1972299396210670061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1972299396210670061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1972299396210670061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1972299396210670061'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/09/clear-qmail-bounce-mailz-d.html' title='clear qmail bounce mailz :D'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7241352964412691845</id><published>2009-09-26T11:19:00.002+03:00</published><updated>2009-09-26T11:24:16.775+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>phunnnnnnn</title><content type='html'>* Винаги съм предпочитал немски автомобил и френска любов пред френски автомобил и немска любов. &lt;br /&gt;* "Виж какво хубаво синьо небе! Като сплаш екрана на Windows 98 е!"&lt;br /&gt;* "A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station..." - Unknown Author&lt;br /&gt;* "Имам Нинтендовагинит" - каза един приятел-геймър, с шина на дясната ръка заради разстегнати сухожилия.&lt;br /&gt;* Добрият сисадмин след ядрена война може да изкара месец, хранейки се с трохите в клавиатурата и да тегли интернет от кеша на проксито.&lt;br /&gt;* България е единствената страна в света, в която докато караш в насрещното някой може да те шибне отзад!!!&lt;br /&gt;* - Извинете, знаете ли къде е блок 209? - Не, съжалявам. - Няма проблем, благодаря все пак. - За нищо. Надявам се да си намерите някой ден.&lt;br /&gt;* Като се замисля, аз съм един от най-добрите хора, които познавам...&lt;br /&gt;* Най-големият страх на пишещите в teenproblem.net е да не мигрират към bg-mamma.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7241352964412691845?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7241352964412691845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7241352964412691845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7241352964412691845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7241352964412691845'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/09/phunnnnnnn.html' title='phunnnnnnn'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4000378087973454022</id><published>2009-09-15T16:04:00.001+03:00</published><updated>2009-09-15T16:05:13.464+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>Bulgaria finds gold ...takez over control of the world :D</title><content type='html'>2011г.&lt;br /&gt;Най – после е избран изпълнител за прокопаване на тунел под прохода Шипка. Месец по-късно челната &lt;br /&gt;копаеща машина се разтърсва от мощен удар и спира. Екипът от специалисти и работници се събира &lt;br /&gt;мястото, а после следва буря от възклицания, вариращи от „О, май год!” до „Бах мааму!”. Скоро идва &lt;br /&gt;полиция, после официални лица, районът е отцепен. Всички следят новините и сменят канала точно преди &lt;br /&gt;спорта, което срива тотално рекламния пазар. За всеки случай проектът е променен и се почва копаене &lt;br /&gt;на съвсем друго място, но и там се повтаря същото – удар и т.н.&lt;br /&gt;Извиканите на място геолози (впрочем, доста идват по собствено желание) само констатират неумолимата &lt;br /&gt;истина – тунел няма да има.&lt;br /&gt;Понеже цялата основа за планината е един огромен слитък самородно злато, с тегло около десет милиарда &lt;br /&gt;тона.&lt;br /&gt;&lt;br /&gt;Когато научава новината, министър- председателят, който в момента одобрява стратегия за доказване, че &lt;br /&gt;всъщност сега народът живее много по-добре от преди две години, се сепва, отказва да отиде да открие &lt;br /&gt;линията на метрото „Люлин – Перник” и звъни на президента. Тъй като това е почти прецедент в последно &lt;br /&gt;време, държавният глава оставя за миг плана, предназначен да убеди всички, че никога не са живели по- &lt;br /&gt;зле и вдига слушалката на специалния телефон.&lt;br /&gt;„Гошо, разбра ли?” – пита възбудено министър- председателят – „Я зарязвай всичко и ела да се напием!”&lt;br /&gt;Когато чува новината, президентът само успява да попита: „Ама на всеки километър и така – до края?” &lt;br /&gt;Чул потвърдение, нарежда приготвят кортежа, а пилотната кола е пратена да купи домати – от розовите, &lt;br /&gt;които са най-скъпи.&lt;br /&gt;Така де, толкова злато не се намира всеки ден.&lt;br /&gt;&lt;br /&gt;Световните борси се сриват, неподготвени за подобен удар. Тъй като обаче твърде малко са страните, &lt;br /&gt;досетили се да държат резерви в калай или синьо сирене, нищо не може да се направи. Освен да се &lt;br /&gt;завижда, разбира се.&lt;br /&gt;&lt;br /&gt;Редица основни играчи в в родното публично пространство получават микроинфаркт – да е тон-два, да го &lt;br /&gt;откраднеш, но цяла планина реже ли се с ножовки? Това да не ти е подводница? А и всичко е блокирано &lt;br /&gt;от армията, стреля се без предупреждение.&lt;br /&gt;Но все пак скоро кирките достигат цената на телевизорите и дори се превръщат в уместен сватбен &lt;br /&gt;подарък – да направиш първата копка, така да се каже.&lt;br /&gt;А оксижен се разменя срещу джип, но пак е трудно да се намери.&lt;br /&gt;&lt;br /&gt;2012 г.&lt;br /&gt;България отдавна е изплатила всички свои дългове и сега кредитира съседите си. Сериозно се обсъжда &lt;br /&gt;идеята левът да стане общоевропейска валута, но БНБ се колебае – все пак, да ни висят на гърба &lt;br /&gt;толкова икономики.... Никой вече не работи, заплатите се получават по сметка от държавата, голяма &lt;br /&gt;част от банките фалират, понеже никой не иска парите им.&lt;br /&gt;Всички български емигранти се връщат у дома, въпреки настоятелните молби на местните власти да &lt;br /&gt;останат и да харчат там парите си.&lt;br /&gt;Митниците и Министерството на труда и социалните грижи са премахнати като абсолютно излишни.&lt;br /&gt;&lt;br /&gt;„Ролс-Ройс” открива завод в Ловеч само за нуждите на местния пазар.&lt;br /&gt;&lt;br /&gt;2013г.&lt;br /&gt;Партиите са премахнати, понеже вече никой не го е еня за тях. Някой се сеща, че тя всъщност и Стара &lt;br /&gt;планина някога била подарена от народа на баща му, но този път го отсвирват. Обиден, той предлага да &lt;br /&gt;го направят поне цар.&lt;br /&gt;&lt;br /&gt;България става президентска република. За държавен глава е избран бившият министър-председател, &lt;br /&gt;понеже в кампанията си успява да докаже, че именно той е бил инициаторът да се прокара тунела, в &lt;br /&gt;резултат на което... Печели всички гласове на трите процента българи, направили си труда да отидат до &lt;br /&gt;урните. Впрочем, според новоприетата конституция това е не е проблем – нейният член първи гласи: &lt;br /&gt;„Гледай си живота и не се прави на интересен”.&lt;br /&gt;Сменен е и химна – сега той се нарича „Селската баня”, като при официални случаи на места се пее &lt;br /&gt;„на-на-на”.&lt;br /&gt;&lt;br /&gt;Най–големите световни банки заемат мястото на фалиралите местни. На мястото на „Кремиковци” започва &lt;br /&gt;строежа на „Българияленд”, увеличено копие на „Дисниленд”.&lt;br /&gt;&lt;br /&gt;Македония, Турция и Гърция започват да излъчват новини на български език.&lt;br /&gt;&lt;br /&gt;2014 г.&lt;br /&gt;Цар Киро купува „Манчестер Юнайтед” и назначава за президент Александър Томов. В резултат на това &lt;br /&gt;Бербатов прекратява договора си, връща се у нас и спори за титулярно място в „Спортист” – Своге с &lt;br /&gt;Кристияно Роналдо.&lt;br /&gt;&lt;br /&gt;Променена е изцяло учебната програма в средния курс – например, по математика се изучават само броене &lt;br /&gt;до сто и теория на вероятностите (основно приложението й при игра на рулетка). Останалите предмети &lt;br /&gt;почти всички отпадат, понеже на богат човек образование не му трябва. В часовете по физическо &lt;br /&gt;възпитание се играе само голф.&lt;br /&gt;&lt;br /&gt;България излиза от НАТО и го наема като частна фирма за охрана на границите да спира увеличаващите се &lt;br /&gt;вълни от имигранти.&lt;br /&gt;&lt;br /&gt;Провежда се преатестиране на хотелите в страната и всички, получили по-малко от шест звезди са &lt;br /&gt;съборени и построени отново.&lt;br /&gt;&lt;br /&gt;Потомците на Балдуин Фландърски ( и цялата им рода до десето коляно, както и съседите) претендират да &lt;br /&gt;получат българско гражданство.&lt;br /&gt;&lt;br /&gt;2015 г.&lt;br /&gt;Вестник „Капитал” купува "Файненшъл таймс", добавя там форум и забранява писането на латиница в него. &lt;br /&gt;Впрочем, това е проблем само за по – възрастното поколение – младите вече три години учат български &lt;br /&gt;като основен чужд език и общо-взето се оправят.&lt;br /&gt;&lt;br /&gt;Страната е залята от испански, френски и немски емигранти, работещи основно в туризма и &lt;br /&gt;строителството.&lt;br /&gt;&lt;br /&gt;Главният офис на „Майкрософт” е преместен в Правец, а Бил Гейтс обича да отдъхва на пейката на до &lt;br /&gt;паметника на Тодор Живков. На пазара се появява новият “Windows Bay Ganyo””, който работи само с &lt;br /&gt;гласови команди на български. Например, за рестарт се използва: „Abe az shto ne ti…”&lt;br /&gt;&lt;br /&gt;В знак на добра воля и желание за бъдещо сътрудничество от всички европейски затвори са освободени &lt;br /&gt;лежащите там българи, въпреки че никой не е молил за това. Цялата тази пасмина пристига на летище &lt;br /&gt;София и директно е изпратена в Белене – по това време вече известен курорт. Осъдените денем прекарват &lt;br /&gt;времето си на спа-процедури, а вечер в казиното. „Амнистия” се смята за неприлична дума и никой не я &lt;br /&gt;използва.&lt;br /&gt;&lt;br /&gt;2016 г.&lt;br /&gt;„ЦСКА” и „Левски” за пореден път отказват поканата за участие в Шампионската лига – пари не им &lt;br /&gt;трябват, а и ги мързи да тичат. БФС тегли жребий кой да преставя страната (никой не иска), пада се на &lt;br /&gt;„Калиакра” и те проклинат лошия си късмет.&lt;br /&gt;&lt;br /&gt;След месец спортните медии по света се възхищават на подвига на „Реал” – Мадрид, който въпреки &lt;br /&gt;скромния си бюджет успява да завърши наравно на свой терен със звездната селекция на българския клуб.&lt;br /&gt;&lt;br /&gt;Откупената обратно от държавата БТК на свой ред купува Дойче Телеком и още няколко големи оператори. &lt;br /&gt;В знак на уважение към славното минало целият чуждестранен мениджмънт е задължен да ползва само &lt;br /&gt;стационарни телефони.&lt;br /&gt;Започват снимките на „Батман -5” – „СуперЛюбо”.&lt;br /&gt;&lt;br /&gt;На границата са заловени първите американски и японски емигранти.&lt;br /&gt;&lt;br /&gt;2017 г.&lt;br /&gt;Като първа световна икономическа сила България осъзнава своя дълг пред човечеството и почва да се &lt;br /&gt;меси във всички регионални конфликти. Понеже – нали помните – отдавна няма армия, просто изпраща свои &lt;br /&gt;представители да декларират, че ако вие не...., ще спрем инвестициите у вас. Обикновено след подобно &lt;br /&gt;изявление враждуващите страни почват да се прегръщат и отварят бутилка с гроздова.&lt;br /&gt;&lt;br /&gt;Тъй като страната разполага с огромен фонд за исторически изследвания и спонсорира кого ли не, скоро &lt;br /&gt;всеки ученик в Европа е твърдо убеден, че България е спечелила сама Втората световна война срещу &lt;br /&gt;съюза на Германия, СССР, САЩ , Япония и останалите, въпреки че подло са били бомбардирани с атомно &lt;br /&gt;оръжие малките сливенски селца Хирошимово и Нагазаково. Все още се спори обаче дали Наполеон е бил &lt;br /&gt;роден Плевен, или само коренът му е български.&lt;br /&gt;&lt;br /&gt;Водени от носталгията, известни наши финансисти – като Жоро Сороса например – си играят с икономиките &lt;br /&gt;на Великобритания или Италия и понеже им е в кръвта, почти ги докарват до фалит. Но когато местните &lt;br /&gt;започнат да палят парламентите, ние поемаме разходите и всички са доволни.&lt;br /&gt;&lt;br /&gt;България извежда двадесети пореден сателит в космоса, за да могат и членовете на експедицията ни в &lt;br /&gt;Антактида да гледат мача „ЦСКА” – „Левски”.&lt;br /&gt;&lt;br /&gt;11.09.2018 г.&lt;br /&gt;Два самолета, отвлечени съответно от американски и японски терористи, се насочват към двата &lt;br /&gt;най-големи мола в София....&lt;br /&gt;&lt;br /&gt;А още не сме изхарчили и половината от златото.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4000378087973454022?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4000378087973454022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4000378087973454022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4000378087973454022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4000378087973454022'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/09/bulgaria-finds-gold-takez-over-control.html' title='Bulgaria finds gold ...takez over control of the world :D'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6825646891350889103</id><published>2009-09-10T16:21:00.000+03:00</published><updated>2009-09-10T16:22:50.089+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Clear linux arp cache /table/</title><content type='html'>To clear all the arp cache of a linux ... u can use this command:&lt;br /&gt;&lt;br /&gt;# ip neigh flush all&lt;br /&gt;&lt;br /&gt;If u want to clear specific lines in the arp table , u can use:&lt;br /&gt;&lt;br /&gt;# arp -d [ip addr]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6825646891350889103?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6825646891350889103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6825646891350889103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6825646891350889103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6825646891350889103'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/09/clear-linux-arp-cache-table.html' title='Clear linux arp cache /table/'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8901730007482242098</id><published>2009-08-22T15:28:00.001+03:00</published><updated>2009-08-22T15:28:41.069+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Отворен код.</title><content type='html'>Отворения код....&lt;br /&gt;&lt;br /&gt; Напоследък неспираме да слушаме за кризава, колко лоша била, колко банки и фирми фалирали&lt;br /&gt;заради нея, но както всичко и тя има и своята не-чак толкова лоша страна ...разбира се &lt;br /&gt;казвайки това неискам по никакъв начин да кажа ,че кризата е нещо хубаво, но историята &lt;br /&gt;показва ,че някой път от нещо лошо - излиза нещо добро. &lt;br /&gt; Несъмнено ИТ бизнесите са най-бързо развиващите се в момента бизнеси, но и там кризата&lt;br /&gt;успя да окаже влияние , можеби далеч не толкова силно колкото в други бизнес сфери.&lt;br /&gt;Но, ИТ средите винаги са показвали гъвкавост и досега са успявали да излезнат много бързо&lt;br /&gt;от всякакъв вид проблеми пред който са се изправяли. Сега виждаме ,че и този път интернет&lt;br /&gt;компанийте видяха лесен изход , или по-точно , лесен начин да намалят разходите си. Как?&lt;br /&gt;Много лесно - Отворен код. Преди да продалжим със въпроса как отворения код се оказва &lt;br /&gt;полезен в такива ситуаци , нека разгледаме какво всъшност е отворен код.&lt;br /&gt; Отворен код е една идея , зародила се през 80те години, водена от Ричард Столман, бащата&lt;br /&gt;на отворения код. Та , как може нещо като линукс или който и да е друг продукт с отворен&lt;br /&gt;код да се окаже печелишо решение? Повечето от нас като разберат ,че дадено приложение, &lt;br /&gt;програма , опеационна система или каквото и да е , е безплатно , веднага решаваме, че&lt;br /&gt;неможе да е по-добро от платеното .... но всъшност , нещата не са точно както изглеждат.&lt;br /&gt;Във отворения код има много пари , много повече отколкото предполагате , просто начините за&lt;br /&gt;изкарване на пари от отворен код са малко по-различни. Отворения код е свобода , свобода&lt;br /&gt;сами да изберем кой ,ще подържа/разработва програмите с който работим. Ако си закупите &lt;br /&gt;примерно Windows /няма да коментираме колко струва и дали си залужава парите/, та да приемем&lt;br /&gt;,че си го купите ... ако имате някакъв проблем със него, в смисъл, намерите някаква грешка&lt;br /&gt;в него или проблем , който пречи на работата ви, единственото което можете да направите&lt;br /&gt;е да пишете репорт на Microsoft и да се надявате ,че ще ви обърнат внимание и след няколко&lt;br /&gt;месеца , можеби ще ви решат проблема. Но да речем, че имате Linux /Линукс е изцяло отворен&lt;br /&gt;код, под GPLv2 лиценз./ , тогава няма да ви се налага да чакате някоя компания като Microsoft&lt;br /&gt;да реши проблема ви , а ще можете да платите на една от многото компаний , които се занимават&lt;br /&gt;със разработка на software , ще имате избор ... и ако не сте доволен от една, може да я &lt;br /&gt;смените със друга. /Винаги има и варянта сами да си оправите проблемите, ако сте достатачно&lt;br /&gt;компетентни./ Точно това се харесва много във ИТ средите , че всяка компания , може да вземе&lt;br /&gt;даден продукт, и без проблеми да го преработи според нуждите си. &lt;br /&gt;Другия много голям плус на отворения код е адски бързото му развитие, има една книга от &lt;br /&gt;Eric S. Raymond - Катедралата и пазара, там той разглежда изцяло идеята за отворения код&lt;br /&gt;и възможностите , плусовете и минусите зад него. Той съпоставя корпоративния software и &lt;br /&gt;отворения software съответно с катедрала и пазар. При корпоративния software имаме малко&lt;br /&gt;общество с ясни цели , което се занимава с един или няколко проблема без да показва точно&lt;br /&gt;как го прави на останалия свят, докато при модела на пазара , имаме огромно общество от много&lt;br /&gt;независими едно от друго парчета , работеши с обща цел, и целия процес на развитие се вижда&lt;br /&gt;от всички, всеки сам избира дали и какво да прави . Но заради големия брои единици , занимащи&lt;br /&gt;се даден проблем, той бива решен много бързо и освен това , самия процес и начин на решаване&lt;br /&gt;на проблема е достъпен за всеки. Всеки може да види точно как този проблем е бил решен и ако &lt;br /&gt;желае може да промени начина .... с няколко думи : Всеки има абсолутна свобода.&lt;br /&gt;Принципно , разума ни говори ,че първия подход би бил , по-добър и продуктите идващи от него&lt;br /&gt;биха били по-надежни , заради централизираната 'власт' която стриктно контролира развитието му,&lt;br /&gt;но всъшност се оказва ,че не е така.&lt;br /&gt;Сега след като разгледахме основите на отворения код, нека се върнем малко към темата, като &lt;br /&gt;използваме линукс ядрото за пример.&lt;br /&gt;Големите компания , като IBM, HP, Sun, Intel и т.н.т. от много време насам , видяха големия &lt;br /&gt;потенцял в линукс и много силно го подкрепят, като подкрепата им се изразява основно в две &lt;br /&gt;неща, отделяне на кадри , който да работят над приложения със отворен код , и финансова &lt;br /&gt;подкрепа на проекти с отворен код. Рабира се , това не е благотворителност, защото те печелят &lt;br /&gt;много от това, че дадения проект се развива и сега нека подкрепим с пример, например Intel &lt;br /&gt;дарява Х $ на линукс ядрото, от своя страна разработиците на ядрото , обръщат внимание на &lt;br /&gt;този факт и наблягат на разработката на код ,който работи с устройства създадени от Intel. &lt;br /&gt;Има един израз на  английски -  Win-Win ситуция, или ситуация в която и 2те страни печелят. &lt;br /&gt;И сега нека се върнем на кризата .... какво е криза , ако не - недостиг на пари? &lt;br /&gt;И какво по-хубаво за една фирма от ,това да може да има същата или по-добра призводителност , за&lt;br /&gt;по-малко пари ? Именно затова отворения код успя да набере още повече скорост последните няколко&lt;br /&gt;месеца и отново показа голям разтеж. Линукс ядрото успя да отбележи 10% разтеж на броя &lt;br /&gt;разработчици за последните 16 месеца, средно 5.45 поправки се побликуват от час... за тези &lt;br /&gt;16 месеца, са добавени около 2.7 милиона реда код към ядрото.... това са 42% разтеж &lt;br /&gt;спрямо Април 2008ма.&lt;br /&gt;Но защо ? Защо след като световната икономика се свива, този сфера продалжава прогресивно &lt;br /&gt;да разтеж? Защото все повече фирми успяват да видят преспективите и потенцяла &lt;br /&gt;зад отворения код ... и вичко което той може да предложи ....&lt;br /&gt;&lt;br /&gt;Можеби това е следващата стъпка в развитието на човечеството.... идеята за споделяне...&lt;br /&gt;идеята за свобода ..... идеята ,че всеки може и трябва да има достъп до каквото му потрябва...&lt;br /&gt;идеята ,че заедно сме по-силни ...и ,че няма нужда някоя голяма компания да ни диктува&lt;br /&gt;как да се развиваме , тя да решава какво трябва и както нетрябва да правим.....&lt;br /&gt;а можеби не .... :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Отворения код е свобода.... освободи се и ти !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8901730007482242098?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8901730007482242098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8901730007482242098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8901730007482242098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8901730007482242098'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/08/blog-post.html' title='Отворен код.'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1079835856614747008</id><published>2009-08-01T15:39:00.003+03:00</published><updated>2009-08-01T15:52:21.111+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='real_me'/><title type='text'>Domino efekt ....padenieto na svetovnite sili....</title><content type='html'>Domino efekt ...interesen nachin da sypostavq neshtata , koito izkochi v syznanieto mi predi malko ... interesnoto e, che kolkoto poveche si mislq po-vaprosa, tolkova povehce vijdam logika v tova.... Vsichki znaem, che vsqka velika civilizaciq/imperiq/ v istoriqta e imala svoq peek , sled kojto e zapochvalo bavno no sigurno padenie ... sledvano ot neizbejnoto srutvane na poznatiq red i preminavaneto kym nov red ... Goren i Dolen Egipet , Rimskata imperiq ...Cyrkvata/prez tymnite vekove/ ...Syvetskiq Syiuz ... iska ni se da mislim che sme dostignali do red koito shte prosyshtestvuva ... no - nadali ... edinstvenoto otnalao ot 'sratiq svqt' /ako moga da go narecha taka/ e USA ... no te podhvanaha sydbata na CCCP ....lipsata na konkurenciq gi izqjda otvytre i sa obrechenie na padenie , koeto shte e po-skoro otkolkoto predpolagame ... Kakvo viziram pod lipsata na konkurenciq .... USA se razvivashe i vyrveshe napred , glavno zaradi CCCP, i nadprevarata s rusnacite ... no CCCP padna ....svetovnata ikonomika e edna smeshka ... igra na interesi ... znae se, che rano ili kysno shte se srine ... i to shtese srine losho ... sledvashtata svetovna sila se ochertava da e Kitai ....s tqhniq 'moderen komunizym' , makar che te nqmat mnogo obshto s komunizma .... neka za momenta go narechem taka ...&lt;br /&gt;No tova zalujavame ..... horata sa egoistichni i alchni kopelenca ... edinstvenoto nehsto koeto moje da ni spasi kato civilizaciq e pandemiq ....ili neshto drugo koeto da izbie pone 90% ot naselenieto ...da padnat vischki Dyrjavi ....vseki izvesten red ...svetovnata ikonomika ....da se vyrnem 40-50 godini nazad tehnologicheski ....ako li ne ....po-dobre genocid.... i pone da ne prechim ... znam che vi zvuchi burtalno , no nie sme nishtojestva .... vajnota ni kato vid e nishtojna ...dori ako priemem che vselenata ima krai ...i che e samo edna ... pak nie bihme bili kato edin komar , izmejdu vsichki jivotni , nasekomi i kakvito i da e jivotinski vidove na zemqta .... nishtojni i izlishni .... edinici dyrpat vischki drugi napred .... a netrqbva taka .. koito nepomaga na vyzhoda - trqbva da umre .... &lt;br /&gt;&lt;br /&gt;p.s.: vsichki humanisti da mi qdat patkata ... faktite sa fakti !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1079835856614747008?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1079835856614747008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1079835856614747008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1079835856614747008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1079835856614747008'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/08/domino-efekt-padenieto-na-svetovnite.html' title='Domino efekt ....padenieto na svetovnite sili....'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8021082223898149890</id><published>2009-07-17T11:54:00.001+03:00</published><updated>2009-07-17T12:03:49.999+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>mrtg: 32/64 bit values</title><content type='html'>Target[10.168.120.1_2]: 2:public@10.168.120.1:       [32bit values]&lt;br /&gt;Target[10.168.120.1_2]: 2:public@10.168.120.1:::::2  [64bit values]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8021082223898149890?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8021082223898149890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8021082223898149890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8021082223898149890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8021082223898149890'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/07/mrtg-3264-bit-values.html' title='mrtg: 32/64 bit values'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5712417103841722146</id><published>2009-07-17T11:31:00.001+03:00</published><updated>2009-07-17T11:31:53.168+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>bash semaphore</title><content type='html'>----------------&lt;br /&gt;O V E R V I E W&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;sematree (a semaphore like utility),&lt;br /&gt;formerly known as mutil (a mutex utility),&lt;br /&gt;is a long lived locking utility.&lt;br /&gt;&lt;br /&gt;With standard advisory and mandatory locking in POSIX,&lt;br /&gt;the locking is associated with open file descriptors&lt;br /&gt;and hence is automatically removed when a process exits.&lt;br /&gt;&lt;br /&gt;So sematree is useful where you want to manipulate locks&lt;br /&gt;across process lifetimes.&lt;br /&gt;&lt;br /&gt;sematree allows you to do 4 things with a lock:&lt;br /&gt;acquire, release, inc, dec.&lt;br /&gt;&lt;br /&gt;and with these 4 operations you can build up more&lt;br /&gt;complex synchronisation primitives.&lt;br /&gt;&lt;br /&gt;----------------&lt;br /&gt;E X A M P L E S&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;1. simple mutex to stop 2 instances of a&lt;br /&gt;   script from running at the same time&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #myscript&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock || exit&lt;br /&gt;    #do stuff&lt;br /&gt;    sematree release mylock&lt;br /&gt;    --------------------------&lt;br /&gt;&lt;br /&gt;2. reentrant pair of scripts&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #script1&lt;br /&gt;    #do stuff if not done already&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock || exit&lt;br /&gt;&lt;br /&gt;    num_locks=`sematree inc mylock`&lt;br /&gt;    if [ "$num_locks" -eq "1" ]; then&lt;br /&gt;        #do stuff&lt;br /&gt;    fi&lt;br /&gt;&lt;br /&gt;    sematree release mylock&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #script2&lt;br /&gt;    #undo stuff if not done already&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock || exit&lt;br /&gt;&lt;br /&gt;    num_locks=`sematree dec mylock`&lt;br /&gt;    if [ "$num_locks" -eq "0" ]; then&lt;br /&gt;        #undo stuff&lt;br /&gt;    fi&lt;br /&gt;&lt;br /&gt;    sematree release mylock&lt;br /&gt;    --------------------------&lt;br /&gt;&lt;br /&gt;3. 1 script to wait for another to complete&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #asker&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock || exit #flag&lt;br /&gt;    #call other script (doer)&lt;br /&gt;    sematree acquire mylock || exit #wait&lt;br /&gt;    sematree release mylock         #finished&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #doer&lt;br /&gt;&lt;br /&gt;    sematree release mylock #notify waiter(s)&lt;br /&gt;    --------------------------&lt;br /&gt;&lt;br /&gt;4. try to acquire lock, but only wait 1 minute.&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #myscript&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock 60 || exit&lt;br /&gt;    #do stuff&lt;br /&gt;    sematree release mylock&lt;br /&gt;    --------------------------&lt;br /&gt;&lt;br /&gt;5. try to acquire lock, but only wait 1 minute,&lt;br /&gt;   and give error message if can't acquire.&lt;br /&gt;    --------------------------&lt;br /&gt;    #!/bin/sh&lt;br /&gt;    #myscript&lt;br /&gt;&lt;br /&gt;    sematree acquire mylock 60&lt;br /&gt;    if [ $? != 0 ]; then&lt;br /&gt;        echo "couldn't acquire lock, aborting..." &gt;&amp;2&lt;br /&gt;        exit 1&lt;br /&gt;    fi&lt;br /&gt;    #do stuff&lt;br /&gt;    sematree release mylock&lt;br /&gt;    --------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5712417103841722146?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5712417103841722146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5712417103841722146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5712417103841722146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5712417103841722146'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/07/bash-semaphore.html' title='bash semaphore'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-4001547492200170594</id><published>2009-07-17T10:51:00.001+03:00</published><updated>2009-07-17T10:51:49.148+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>Disk I/O stats from /proc/diskstats</title><content type='html'>Field 1 -- # of reads issued&lt;br /&gt;Field 2 -- # of reads merged, field 6 -- # of writes merged&lt;br /&gt;Field 3 -- # of sectors read&lt;br /&gt;Field 4 -- # of milliseconds spent reading&lt;br /&gt;Field 5 -- # of writes completed&lt;br /&gt;Field 7 -- # of sectors written&lt;br /&gt;Field 8 -- # of milliseconds spent writing&lt;br /&gt;Field 9 -- # of I/Os currently in progress&lt;br /&gt;Field 10 -- # of milliseconds spent doing I/Os&lt;br /&gt;Field 11 -- weighted # of milliseconds spent doing I/Os&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-4001547492200170594?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/4001547492200170594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=4001547492200170594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4001547492200170594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/4001547492200170594'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/07/disk-io-stats-from-procdiskstats.html' title='Disk I/O stats from /proc/diskstats'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3033165293056487249</id><published>2009-07-08T17:42:00.000+03:00</published><updated>2009-07-08T17:43:10.353+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>ps aux info</title><content type='html'>1. S&lt; - High priority, sleeping&lt;br /&gt;   2. Ss+ - Foreground process, session leader, sleeping&lt;br /&gt;   3. Ssl - Multi-threaded, session leader, sleeping&lt;br /&gt;   4. Rs+ - Foreground process, session leader, running&lt;br /&gt;   5. tty4 - Process attached to terminal tty4&lt;br /&gt;   6. tty7 - Process attached to terminal tty7&lt;br /&gt;   7. Ss - Session leader, sleeping&lt;br /&gt;   8. VSZ - Virtual memory SiZe&lt;br /&gt;   9. RSS - Resident Set Size&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3033165293056487249?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3033165293056487249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3033165293056487249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3033165293056487249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3033165293056487249'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/07/ps-aux-info.html' title='ps aux info'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-315726569495647374</id><published>2009-06-30T10:35:00.001+03:00</published><updated>2009-06-30T10:36:56.822+03:00</updated><title type='text'>send mail from telnet</title><content type='html'>root@box:~# telnet snmp.server.com 25&lt;br /&gt;MAIL FROM: root@gaga.net&lt;br /&gt;250 ok&lt;br /&gt;RCPT TO: root@blqblq.com&lt;br /&gt;250 ok&lt;br /&gt;DATA&lt;br /&gt;354 go ahead&lt;br /&gt;SUBJECT: testmail&lt;br /&gt;test test&lt;br /&gt;.&lt;br /&gt;250 ok 1246346984 qp 18294&lt;br /&gt;quit&lt;br /&gt;221 mail.escom.bg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-315726569495647374?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/315726569495647374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=315726569495647374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/315726569495647374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/315726569495647374'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/send-mail-from-telnet.html' title='send mail from telnet'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-8043393826743518754</id><published>2009-06-18T18:10:00.002+03:00</published><updated>2009-06-18T18:11:14.001+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>Relax yourself....</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C9_uoqMmSpw/SjpZBQ-jNXI/AAAAAAAAABI/TbCeVHCwaZE/s1600-h/sleeping-cat.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://1.bp.blogspot.com/_C9_uoqMmSpw/SjpZBQ-jNXI/AAAAAAAAABI/TbCeVHCwaZE/s400/sleeping-cat.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5348685385727948146" /&gt;&lt;/a&gt;&lt;br /&gt;Relax yourslef....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-8043393826743518754?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/8043393826743518754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=8043393826743518754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8043393826743518754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/8043393826743518754'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/relax-yourself.html' title='Relax yourself....'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_C9_uoqMmSpw/SjpZBQ-jNXI/AAAAAAAAABI/TbCeVHCwaZE/s72-c/sleeping-cat.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5548033225063484626</id><published>2009-06-18T18:00:00.000+03:00</published><updated>2009-06-18T18:01:12.825+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Ghost towns around the world</title><content type='html'>http://www.dirjournal.com/info/abandoned-places-in-the-world/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5548033225063484626?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5548033225063484626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5548033225063484626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5548033225063484626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5548033225063484626'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/ghost-towns-around-world.html' title='Ghost towns around the world'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-6853794689118539915</id><published>2009-06-18T16:50:00.001+03:00</published><updated>2009-06-18T16:50:43.939+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>simple code which uses threads</title><content type='html'>#!/usr/bin/env python&lt;br /&gt;#simple code which uses threads&lt;br /&gt;&lt;br /&gt;import time&lt;br /&gt;from threading import Thread&lt;br /&gt;&lt;br /&gt;class MyThread(Thread):&lt;br /&gt;&lt;br /&gt;    def __init__(self,bignum):&lt;br /&gt;&lt;br /&gt;        Thread.__init__(self)&lt;br /&gt;        self.bignum=bignum&lt;br /&gt;    &lt;br /&gt;    def run(self):&lt;br /&gt;&lt;br /&gt;        for l in range(10):&lt;br /&gt;            for k in range(self.bignum):&lt;br /&gt;                res=0&lt;br /&gt;                for i in range(self.bignum):&lt;br /&gt;                    res+=1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def test():&lt;br /&gt;    bignum=1000&lt;br /&gt;    thr1=MyThread(bignum)&lt;br /&gt;    thr1.start()&lt;br /&gt;    thr1.join()&lt;br /&gt;    &lt;br /&gt;if __name__=="__main__":&lt;br /&gt;    test()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-6853794689118539915?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/6853794689118539915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=6853794689118539915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6853794689118539915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/6853794689118539915'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/simple-code-which-uses-threads.html' title='simple code which uses threads'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-927462310516575557</id><published>2009-06-17T19:54:00.001+03:00</published><updated>2009-06-17T20:00:45.507+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><title type='text'>Installing PPPoE client on OpenSolaris.</title><content type='html'>RP-PPPoE is a free PPPoE client developed by Roaring Penguin Soft Inc. RP itself stands for Roaring Penguin.&lt;br /&gt;PPPoE is a protocol used by many ADSL Internet Service Provider (ISP) to connect to theirs internet services.&lt;br /&gt;&lt;br /&gt;If you are familiar with Linux and using PPPoE to connect to your service provider, RP-PPPoE is the best tool for this purposes and easy to install because almost all Linux distros have its binary file.&lt;br /&gt;&lt;br /&gt;Basically Opensolaris/Solaris 10 has its own PPP client software. You can check it out by running pkginfo command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuad@opensolaris:~$ pkginfo |grep ppp&lt;br /&gt;system SUNWpppd Solaris PPP Device Drivers&lt;br /&gt;system SUNWpppdr Solaris PPP configuration files&lt;br /&gt;system SUNWpppdt Solaris PPP Tunneling&lt;br /&gt;system SUNWpppdu Solaris PPP daemon and utilities&lt;br /&gt;system SUNWpppg GNU utilities for PPP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You need to configure some files under /etc/ppp/ directory to meet your need. There are some tutorials on the net for this.&lt;br /&gt;But I have experience when using this default PPP in Solaris/Opensolaris it is always failed to connect. Tailing at the ppp.log file, the modem is always hang up and the connection terminated. I dont know why this happened and does not work with IPWireless TD-CDMA desktop modem I usually use.&lt;br /&gt;&lt;br /&gt;Since of that I choose rp-pppoe instead. It is more user friendly and easy to configure. If you are a slackware user, you can find this tool in your system or in slackware CD/DVD. If you are Ubuntu user, you can also find this in your system. The pppoeconf is the rp-pppoe modified by Ubuntu developer (if i am not mistaken he he he).&lt;br /&gt;&lt;br /&gt;OK lets go to the installation.&lt;br /&gt;We will install rp-pppoe software from source so you need to install SUNWgcc first. Install this software via Package Manager or simply run this command in your shell "sudo pkg install SUNWgcc".&lt;br /&gt;Then you need to download the rp-pppoe source file here http://www.roaringpenguin.com/products/pppoe and then extract the file and begin installation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuad@opensolaris:~/sources$ tar -zxf rp-pppoe-3.10.tar.gz&lt;br /&gt;fuad@opensolaris:~/sources$ cd rp-pppoe-3.10/src/&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$ ./configure&lt;br /&gt;&lt;br /&gt;------------------&lt;br /&gt;------------------&lt;br /&gt;config.status: creating libevent/Makefile&lt;br /&gt;config.status: creating ../scripts/pppoe-connect&lt;br /&gt;config.status: creating ../scripts/pppoe-start&lt;br /&gt;config.status: creating ../scripts/pppoe-stop&lt;br /&gt;config.status: creating ../scripts/pppoe-init&lt;br /&gt;config.status: creating ../scripts/pppoe-init-suse&lt;br /&gt;config.status: creating ../scripts/pppoe-init-turbolinux&lt;br /&gt;config.status: creating ../scripts/pppoe-setup&lt;br /&gt;config.status: creating ../gui/Makefile&lt;br /&gt;config.status: WARNING: ../gui/Makefile.in seems to ignore the --datarootdir setting&lt;br /&gt;config.status: creating ../gui/tkpppoe&lt;br /&gt;config.status: creating config.h&lt;br /&gt;On this platform, the following targets will be built:&lt;br /&gt;pppoe pppoe-server pppoe-sniff&lt;br /&gt;Type 'make' to compile the software.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$ make&lt;br /&gt;--------------------&lt;br /&gt;--------------------&lt;br /&gt;Undefined first referenced&lt;br /&gt;symbol in file&lt;br /&gt;dlpromisconreq pppoe-sniff.o&lt;br /&gt;ld: fatal: Symbol referencing errors. No output written to pppoe-sniff&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;make: *** [pppoe-sniff] Error 1&lt;br /&gt;-------------------------------&lt;br /&gt;&lt;br /&gt;You see there is an error when running 'make', the Makefile does not compile successfully because no output written to pppoe-sniff.&lt;br /&gt;OK we dont need pppoe-sniff at this time so we will edit the Makefile and force not to install pppoe-sniff. Simply edit the Makefile using your favourite editor. Search pppoe-sniff lines or options and remove them. You need to understand a litte C programming language here :). Then run 'make' again.&lt;br /&gt;&lt;br /&gt;--------------------------------------------------&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$ make&lt;br /&gt;&lt;br /&gt;Type 'make install' as root to install the software.&lt;br /&gt;&lt;br /&gt;OK compiled withour errors and ready to run 'make install' as root :)&lt;br /&gt;&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$ sudo make install&lt;br /&gt;&lt;br /&gt;Type 'make install' as root to install the software.&lt;br /&gt;mkdir -p /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 pppoe /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 pppoe-server /usr/sbin&lt;br /&gt;if test -x licensed-only/pppoe-server-control ; then /usr/bin/ginstall -c -m 755 licensed-only/pppoe-server-control /usr/sbin; fi&lt;br /&gt;if test -x pppoe-relay ; then /usr/bin/ginstall -c -m 755 pppoe-relay /usr/sbin; fi&lt;br /&gt;/usr/bin/ginstall -c -m 755 ../scripts/pppoe-connect /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 ../scripts/pppoe-start /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 ../scripts/pppoe-status /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 ../scripts/pppoe-stop /usr/sbin&lt;br /&gt;/usr/bin/ginstall -c -m 755 ../scripts/pppoe-setup /usr/sbin&lt;br /&gt;mkdir -p /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../doc/CHANGES /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../doc/KERNEL-MODE-PPPOE /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../doc/HOW-TO-CONNECT /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../doc/LICENSE /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../README /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../SERVPOET /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../configs/pap-secrets /usr/share/doc/rp-pppoe-3.10&lt;br /&gt;mkdir -p /usr/share/man/man8&lt;br /&gt;for i in pppoe pppoe-server ; do \&lt;br /&gt;if test -f ../man/$i.8 ; then \&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/$i.8 /usr/share/man/man8 || exit 1; \&lt;br /&gt;fi; \&lt;br /&gt;done&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe-start.8 /usr/share/man/man8&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe-stop.8 /usr/share/man/man8&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe-status.8 /usr/share/man/man8&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe-connect.8 /usr/share/man/man8&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe-setup.8 /usr/share/man/man8&lt;br /&gt;mkdir -p /usr/share/man/man5&lt;br /&gt;/usr/bin/ginstall -c -m 644 ../man/pppoe.conf.5 /usr/share/man/man5&lt;br /&gt;mkdir -p /etc/ppp&lt;br /&gt;mkdir -p /etc/ppp/plugins&lt;br /&gt;echo "# Directory created by rp-pppoe for kernel-mode plugin" &gt; /etc/ppp/plugins/README&lt;br /&gt;&lt;br /&gt;Type 'pppoe-setup' to configure the software.&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;Ahhh finish and the software has been installed successfully in /usr/sbin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuad@opensolaris:~/sources/rp-pppoe-3.10/src$ ls -al /usr/sbin/pppoe*&lt;br /&gt;-rwxr-xr-x 1 root root 79120 2009-04-29 20:02 /usr/sbin/pppoe&lt;br /&gt;-rwxr-xr-x 1 root root 8822 2009-04-29 20:02 /usr/sbin/pppoe-connect&lt;br /&gt;-rwxr-xr-x 1 root root 104892 2009-04-29 20:02 /usr/sbin/pppoe-server&lt;br /&gt;-rwxr-xr-x 1 root root 9564 2009-04-29 20:02 /usr/sbin/pppoe-setup&lt;br /&gt;-rwxr-xr-x 1 root root 5565 2009-04-29 20:02 /usr/sbin/pppoe-start&lt;br /&gt;-rwxr-xr-x 1 root root 2116 2009-04-29 20:02 /usr/sbin/pppoe-status&lt;br /&gt;-rwxr-xr-x 1 root root 2273 2009-04-29 20:02 /usr/sbin/pppoe-stop&lt;br /&gt;&lt;br /&gt;Now it is the time for you to configure 'pppoe-setup' to suit your need. After that run 'pppoe-start / pppoe-stop' to start or stop dialing to your service provider.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-927462310516575557?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/927462310516575557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=927462310516575557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/927462310516575557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/927462310516575557'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/installing-pppoe-client-on-opensolaris.html' title='Installing PPPoE client on OpenSolaris.'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-9020946723489655456</id><published>2009-06-17T17:23:00.001+03:00</published><updated>2009-06-17T17:23:54.408+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Working with multiple queues</title><content type='html'>import Queue&lt;br /&gt;import threading&lt;br /&gt;import urllib2&lt;br /&gt;import time&lt;br /&gt;from BeautifulSoup import BeautifulSoup&lt;br /&gt;&lt;br /&gt;hosts = ["http://yahoo.com", "http://google.com", "http://amazon.com",&lt;br /&gt;        "http://ibm.com", "http://apple.com"]&lt;br /&gt;&lt;br /&gt;queue = Queue.Queue()&lt;br /&gt;out_queue = Queue.Queue()&lt;br /&gt;&lt;br /&gt;class ThreadUrl(threading.Thread):&lt;br /&gt;    """Threaded Url Grab"""&lt;br /&gt;    def __init__(self, queue, out_queue):&lt;br /&gt;        threading.Thread.__init__(self)&lt;br /&gt;        self.queue = queue&lt;br /&gt;        self.out_queue = out_queue&lt;br /&gt;&lt;br /&gt;    def run(self):&lt;br /&gt;        while True:&lt;br /&gt;            #grabs host from queue&lt;br /&gt;            host = self.queue.get()&lt;br /&gt;&lt;br /&gt;            #grabs urls of hosts and then grabs chunk of webpage&lt;br /&gt;            url = urllib2.urlopen(host)&lt;br /&gt;            chunk = url.read()&lt;br /&gt;&lt;br /&gt;            #place chunk into out queue&lt;br /&gt;            self.out_queue.put(chunk)&lt;br /&gt;&lt;br /&gt;            #signals to queue job is done&lt;br /&gt;            self.queue.task_done()&lt;br /&gt;&lt;br /&gt;class DatamineThread(threading.Thread):&lt;br /&gt;    """Threaded Url Grab"""&lt;br /&gt;    def __init__(self, out_queue):&lt;br /&gt;        threading.Thread.__init__(self)&lt;br /&gt;        self.out_queue = out_queue&lt;br /&gt;&lt;br /&gt;    def run(self):&lt;br /&gt;        while True:&lt;br /&gt;            #grabs host from queue&lt;br /&gt;            chunk = self.out_queue.get()&lt;br /&gt;&lt;br /&gt;            #parse the chunk&lt;br /&gt;            soup = BeautifulSoup(chunk)&lt;br /&gt;            print soup.findAll(['title'])&lt;br /&gt;&lt;br /&gt;            #signals to queue job is done&lt;br /&gt;            self.out_queue.task_done()&lt;br /&gt;&lt;br /&gt;start = time.time()&lt;br /&gt;def main():&lt;br /&gt;&lt;br /&gt;    #spawn a pool of threads, and pass them queue instance&lt;br /&gt;    for i in range(5):&lt;br /&gt;        t = ThreadUrl(queue, out_queue)&lt;br /&gt;        t.setDaemon(True)&lt;br /&gt;        t.start()&lt;br /&gt;&lt;br /&gt;    #populate queue with data&lt;br /&gt;    for host in hosts:&lt;br /&gt;        queue.put(host)&lt;br /&gt;&lt;br /&gt;    for i in range(5):&lt;br /&gt;        dt = DatamineThread(out_queue)&lt;br /&gt;        dt.setDaemon(True)&lt;br /&gt;        dt.start()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    #wait on the queue until everything has been processed&lt;br /&gt;    queue.join()&lt;br /&gt;    out_queue.join()&lt;br /&gt;&lt;br /&gt;main()&lt;br /&gt;print "Elapsed Time: %s" % (time.time() - start)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-9020946723489655456?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/9020946723489655456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=9020946723489655456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9020946723489655456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/9020946723489655456'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/working-with-multiple-queues.html' title='Working with multiple queues'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1975621213327307810</id><published>2009-06-16T12:08:00.002+03:00</published><updated>2009-06-16T12:09:28.499+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Controlling concurrent access to resources with a Semaphore</title><content type='html'>Sometimes it is useful to allow more than one worker access to a resource at a time, while still limiting the overall number. For example, a connection pool might support a fixed number of simultaneous connections, or a network application might support a fixed number of concurrent downloads. A Semaphore is one way to manage those connections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import logging&lt;br /&gt;import random&lt;br /&gt;import threading&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;logging.basicConfig(level=logging.DEBUG,&lt;br /&gt;                    format='%(asctime)s (%(threadName)-2s) %(message)s',&lt;br /&gt;                    )&lt;br /&gt;&lt;br /&gt;class ActivePool(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        super(ActivePool, self).__init__()&lt;br /&gt;        self.active = []&lt;br /&gt;        self.lock = threading.Lock()&lt;br /&gt;    def makeActive(self, name):&lt;br /&gt;        with self.lock:&lt;br /&gt;            self.active.append(name)&lt;br /&gt;    def makeInactive(self, name):&lt;br /&gt;        with self.lock:&lt;br /&gt;            self.active.remove(name)&lt;br /&gt;    def __str__(self):&lt;br /&gt;        with self.lock:&lt;br /&gt;            return str(self.active)&lt;br /&gt;&lt;br /&gt;def worker(s, pool):&lt;br /&gt;    with s:&lt;br /&gt;        name = threading.currentThread().getName()&lt;br /&gt;        pool.makeActive(name)&lt;br /&gt;        logging.debug('Running: %s', str(pool))&lt;br /&gt;        time.sleep(random.random())&lt;br /&gt;        pool.makeInactive(name)&lt;br /&gt;&lt;br /&gt;pool = ActivePool()&lt;br /&gt;s = threading.Semaphore(5)&lt;br /&gt;for i in range(20):&lt;br /&gt;    t = threading.Thread(target=worker, name=str(i), args=(s, pool))&lt;br /&gt;    t.start()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1975621213327307810?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1975621213327307810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1975621213327307810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1975621213327307810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1975621213327307810'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/controlling-concurrent-access-to.html' title='Controlling concurrent access to resources with a Semaphore'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7940701719081982219</id><published>2009-06-16T12:08:00.001+03:00</published><updated>2009-06-16T12:08:43.572+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Synchronizing threads with a Condition object</title><content type='html'>In addition to using Events, another way of synchronizing threads is through using a Condition object. Because the Condition uses a Lock, it can be tied to a shared resource. This allows threads to wait for the resource to be updated. In this example, the consumer() threads wait() for the Condition to be set before continuing. The producer() thread is responsible for setting the condition and notifying the other threads once they can continue.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import logging&lt;br /&gt;import threading&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;logging.basicConfig(level=logging.DEBUG,&lt;br /&gt;                    format='%(asctime)s (%(threadName)-2s) %(message)s',&lt;br /&gt;                    )&lt;br /&gt;&lt;br /&gt;def consumer(cond):&lt;br /&gt;    """wait for the condition and use the resource"""&lt;br /&gt;    logging.debug('Starting consumer thread')&lt;br /&gt;    t = threading.currentThread()&lt;br /&gt;    with cond:&lt;br /&gt;        cond.wait()&lt;br /&gt;        logging.debug('Resource is available to consumer')&lt;br /&gt;&lt;br /&gt;def producer(cond):&lt;br /&gt;    """set up the resource to be used by the consumer"""&lt;br /&gt;    logging.debug('Starting producer thread')&lt;br /&gt;    with cond:&lt;br /&gt;        logging.debug('Making resource available')&lt;br /&gt;        cond.notifyAll()&lt;br /&gt;&lt;br /&gt;condition = threading.Condition()&lt;br /&gt;c1 = threading.Thread(name='c1', target=consumer, args=(condition,))&lt;br /&gt;c2 = threading.Thread(name='c2', target=consumer, args=(condition,))&lt;br /&gt;p = threading.Thread(name='p', target=producer, args=(condition,))&lt;br /&gt;&lt;br /&gt;c1.start()&lt;br /&gt;time.sleep(2)&lt;br /&gt;c2.start()&lt;br /&gt;time.sleep(2)&lt;br /&gt;p.start()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7940701719081982219?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7940701719081982219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7940701719081982219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7940701719081982219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7940701719081982219'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/synchronizing-threads-with-condition.html' title='Synchronizing threads with a Condition object'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3818172680690807208</id><published>2009-06-16T12:07:00.001+03:00</published><updated>2009-06-16T12:07:20.978+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Signaling between threads with Event objects</title><content type='html'>import logging&lt;br /&gt;import threading&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;logging.basicConfig(level=logging.DEBUG,&lt;br /&gt;                    format='(%(threadName)-10s) %(message)s',&lt;br /&gt;                    )&lt;br /&gt;                    &lt;br /&gt;def wait_for_event(e):&lt;br /&gt;    """Wait for the event to be set before doing anything"""&lt;br /&gt;    logging.debug('wait_for_event starting')&lt;br /&gt;    e.wait()&lt;br /&gt;    logging.debug('e.isSet()-&gt;%s', e.isSet())&lt;br /&gt;&lt;br /&gt;def wait_for_event_timeout(e, t):&lt;br /&gt;    """Wait t seconds and then timeout"""&lt;br /&gt;    logging.debug('wait_for_event_timeout starting')&lt;br /&gt;    e.wait(t)&lt;br /&gt;    logging.debug('e.isSet()-&gt;%s', e.isSet())&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e = threading.Event()&lt;br /&gt;t1 = threading.Thread(name='block', &lt;br /&gt;                      target=wait_for_event,&lt;br /&gt;                      args=(e,))&lt;br /&gt;t1.start()&lt;br /&gt;&lt;br /&gt;t2 = threading.Thread(name='non-block', &lt;br /&gt;                      target=wait_for_event_timeout, &lt;br /&gt;                      args=(e, 2))&lt;br /&gt;t2.start()&lt;br /&gt;&lt;br /&gt;logging.debug('Waiting before calling Event.set()')&lt;br /&gt;time.sleep(3)&lt;br /&gt;e.set()&lt;br /&gt;logging.debug('Event is set')&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3818172680690807208?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3818172680690807208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3818172680690807208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3818172680690807208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3818172680690807208'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/signaling-between-threads-with-event.html' title='Signaling between threads with Event objects'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-5069658429840126416</id><published>2009-06-14T13:56:00.002+03:00</published><updated>2009-06-14T14:23:15.231+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>Phun</title><content type='html'>Три часа през нощта. Мъж и жена спят. Изведнъж се звъни на вратата. Мъжът, псувайки, отива да отвори. На прага стои мъж, очевидно пийнал:&lt;br /&gt;- Приятел, ела, моля ти се, долу да ме бутнеш.&lt;br /&gt;- Абе, човек, ти полудя ли! Три часа през нощта е! Ходи помоли някой друг.&lt;br /&gt;Връща се мъжът в леглото и жена му го пита:&lt;br /&gt;- Кой беше?&lt;br /&gt;- Някакъв идиот, искаше да го бутна.&lt;br /&gt;- И ти какво направи?&lt;br /&gt;- Пратих го на майната му!&lt;br /&gt;- Звяр! Говедо! Помниш ли на нас как ни изгасна колата в големия дъжд и едно момче цял час ни бута? Толкова ли не можеш да помогнеш на човека!&lt;br /&gt;Мъжът пак се разпсувал, станал от леглото и се облякъл. Слиза на двора, а там пълна тъма. Вика:&lt;br /&gt;- Ей, приятел! Къде си?!&lt;br /&gt;От тъмнината:&lt;br /&gt;- Тук съм! Ела тук!&lt;br /&gt;- Къде тук?&lt;br /&gt;- Тука бе, на люлките!&lt;br /&gt;--------------------------&lt;br /&gt;Мъж и жена ще правят секс, но нещо не се получава.&lt;br /&gt;Мъжa:&lt;br /&gt;- Много си грозна, за това е…&lt;br /&gt;Жената:&lt;br /&gt;- Не, ти си много пиян затова не ти става…&lt;br /&gt;Мъжа:&lt;br /&gt;- Да, ама аз на сутринта ще изтрезнея, а ти к’во? &lt;br /&gt;---------------------------&lt;br /&gt;Пътувала монахиня през гората. Срещнали я група разбойници и и се изредили всичките. Станала монахинята поотупала си дрехите и продължила пътя си, кръстила се и с двете ръце и непрекъснато повтаряла щастлива: " Благодаря ти господи, хем на воля, хем без грях "! &lt;br /&gt;---------------------------&lt;br /&gt;Мъж се прибира мъртво пиян и буди жена си ,която е дълбоко заспала:&lt;br /&gt;-Жена ставаи,женаааааааааа!&lt;br /&gt;Жената:&lt;br /&gt;-Остави ме да спя бе идиот!&lt;br /&gt;Мъжът:&lt;br /&gt;-Ставай ,МА,спечелих 6-ца от тотото,СТАВАЙ!&lt;br /&gt;Жената:&lt;br /&gt;ООООО,какъв късмет ни сполетя,чудесно!Сега ме остави да подремна ,утре ще се черпим....&lt;br /&gt;Мъжът:&lt;br /&gt;-Кво черпенеееее МАААААА,ставай си заминавай!&lt;br /&gt;----------------------------&lt;br /&gt;С научна цел заселили два необитаеми острова:&lt;br /&gt;- на първия пратили 1 жена и 100 мъже;&lt;br /&gt;- на втория 1 мъж и 100 жени.&lt;br /&gt;След 2 години учените отишли да видят какво е станало.&lt;br /&gt;На първият остров царял ред и благополучие. Островът бил опасан от павирани алеи и канали. Било много чисто, даже палмовите листа били излъскани.&lt;br /&gt;По средата на острова се издигал огромен дворец. Охраната въвела учените при владетеля - Жената. Когато я попитали как е постигнала всичко това, тя отговорила:&lt;br /&gt;- Много е просто. Всички мъже са подредени в списък със съответни дати, на които ще спят с мен. Който не слуша, го пращам в дъното на списъка.&lt;br /&gt;След това учените отишли на другия остров.&lt;br /&gt;Там царял пълен хаос. Всички палми били изтръгнати, с изключение на една по средата на острова. Около нея&lt;br /&gt;се били скупчили всички жени и я клатели със все сила.&lt;br /&gt;На върха на палмата се забелязвало треперещо мършаво създание в което учените трудно познали мъжа.&lt;br /&gt;На въпросът на учените "Защо правите това?" - жените хором отговорили:&lt;br /&gt;- Той вече 20 минути си почива! &lt;br /&gt;:) &lt;br /&gt;----------------------------&lt;br /&gt;На вожда на африканско племе му се ражда бяло дете. Вика той белия мисионер и му вика:&lt;br /&gt;- Я казвай сега, като много знаеш и като си единственият бял на стотици километри, как е станала тази работа с детето?&lt;br /&gt;Притеснил се мисионерът, започнал да мисли трескаво:&lt;br /&gt;- Ами виж, това е игра на гените, стават такива работи; ето например виждаш ли там стадото кози: цялото бяло, а по средата - една черна.&lt;br /&gt;Помълчал вожда, пък казал:&lt;br /&gt;- Добре. Обещавам да не вдигам шум за детето, но и ти си трай за козичката...&lt;br /&gt;-------------------------------&lt;br /&gt;Двама приятели си стоели и единият казал:&lt;br /&gt;- Бай Евстати, еба жена ти&lt;br /&gt;Другият:&lt;br /&gt;- Абе луд ли си бе, т'ва не е вярно.&lt;br /&gt;- Абе не е вярно, ама има рима.&lt;br /&gt;- А, бай Пешо, еба твойта жена.&lt;br /&gt;- Т'ва няма рима бе.&lt;br /&gt;- Няма рима ама е вярно. &lt;br /&gt;---------------------------------&lt;br /&gt;Шофирането в София значително обогатява речниковия запас.&lt;br /&gt;---------------------------------&lt;br /&gt;Пращаме Краси Аврамов на Евровизия в Москва,за да отмъстим на руснаците за газовата криза.&lt;br /&gt;---------------------------------&lt;br /&gt;Англичанка, французойка и българка си говорят за семейния живот.&lt;br /&gt;Англичанката: Аз, когато се омъжих казах на съпруга ми, че няма да пера и няма да мета. Той стана и излезе. Един ден не го видях, два дни не го видях и на третия той се върна с прахосмукачка и пералня.&lt;br /&gt;Французойката: Аз, когато се омъжих казах на съпруга ми, че няма да пера и няма да мета. Той стана и излезе. Един ден не го видях, два дни не го видях и на третия доведе домашна прислужница.&lt;br /&gt;Българката: И аз, когато се омъжих казах на съпруга ми, че няма да пера и няма да мета. Един ден не го видях, два дни не го видях и на третия ден започнах да виждам с лявото око.&lt;br /&gt;-----------------------------------&lt;br /&gt;Млада двойка седи в киното на последния ред.&lt;br /&gt;-Скъпа, вече цял час седим тук, а ти още не си ме целунала нито веднъж!&lt;br /&gt;-Как, нали преди малко ти направих свирка!&lt;br /&gt;-На мен ли?&lt;br /&gt;-----------------------------------&lt;br /&gt;Двама приятели разговарят:&lt;br /&gt;-Интересно как жените винаги помнят датата на сватбата си, а ние не.&lt;br /&gt;-Много просто. Ти нали си рибар? Помниш ли кога хвана първия си шаран?&lt;br /&gt;-Помня, разбира се.&lt;br /&gt;-Виждаш ли, а шаранът не помни…&lt;br /&gt;-----------------------------------&lt;br /&gt;Айшето накарала Асан да я ближе. След няколко минути измежду краката на Айшето се чува жален гласец:- Айше, пръдни да дойде малко чист въздух, ма!&lt;br /&gt;--------------------------------------&lt;br /&gt;Четири монахини умрели и отишли в рая. На вратата ги посреща свети Петър и пита първата:&lt;br /&gt;Ти пипала ли си мъжки член?&lt;br /&gt;-Да, само с един пръст.&lt;br /&gt;- Добре, топни го в светената вода и влизай.&lt;br /&gt;Пита втората:&lt;br /&gt;-Да, само с едната ръка.&lt;br /&gt;-Топния в светената вода.&lt;br /&gt;Пита третата. Четвъртата обаче я изпреварва: „Ако тая си натопи задника в светената вода, аз отказвам да пия!&lt;br /&gt;---------------------------------------&lt;br /&gt;-Скъпи, искам за рождения ми ден едно такова нещо, дето като натисна с крак и стрелката се вдига от 0 до 100 за три секунди. - казва съпругата.-След седмица на рождения ден на жена си мъжът поднася пакет и казва:- Заповядай, миличка, намерих ти каквото искаше. Ето ти кантарче да се мериш!&lt;br /&gt;--------------------------------------&lt;br /&gt;На вратата на заподозрян се звъни.&lt;br /&gt;- Кой е?&lt;br /&gt;- Отворете, полиция!&lt;br /&gt;- Полиция? А защо звъните?&lt;br /&gt;- Трябва да си поговорим!&lt;br /&gt;- А колко души сте?&lt;br /&gt;- Двама.&lt;br /&gt;- Ами, поговорете си двамата…&lt;br /&gt;---------------------------------------&lt;br /&gt;Блондинка влиза в кафе. Поръчва си нормално кафе. Сервитьорката носи поръчката.&lt;br /&gt;Блондинката:&lt;br /&gt;- Извинявайте, но това кафе мирише на пенис…&lt;br /&gt;Сервитьорката се изчервила, грабнала кафето и отишла при бармана.&lt;br /&gt;- Клиентката каза, че кафето мирише на пенис…&lt;br /&gt;Бармана вдигнал чашата, помирисал я и казал:&lt;br /&gt;- Кажи на клиентката да го пие с другата ръка…&lt;br /&gt;----------------------------------------&lt;br /&gt;- Господине, след като пихте, защо не дадохте на жена си да седне зад волана и да кара колата?&lt;br /&gt;- Господин полицай, аз може и да съм пиян, но това съвсем не означава, че съм луд &lt;br /&gt;----------------------------------------&lt;br /&gt;Две приятелки си говорят:&lt;br /&gt;- Вчера си купих вибратор с гаранция.&lt;br /&gt;- Каква гаранция?&lt;br /&gt;- Продавачът каза, че ако вибраторът се счупи, той лично ще дойде да свърши работата...&lt;br /&gt;-----------------------------------------&lt;br /&gt;Песимистът вижда само един безкраен тунел.&lt;br /&gt;Оптимистът вижда светлина в тунела.&lt;br /&gt;Реалистът вижда тунела, светлината и идващ влак.&lt;br /&gt;А машинистът вижда трима идиоти, седящи на релсите...&lt;br /&gt;-------------------------------------------&lt;br /&gt;Всички жени са красиви от определено разстояние, при някои то достига до 300 километра.&lt;br /&gt;----------------------------------------------&lt;br /&gt;- Ало?&lt;br /&gt;- Да!&lt;br /&gt;- Петьо,ти ли си?&lt;br /&gt;- Да!&lt;br /&gt;- Бременна съм!&lt;br /&gt;- О! Имате грешка!&lt;br /&gt;------------------------------------------------&lt;br /&gt;Мъж след изморителен спор с тъща се обръща към сина си:&lt;br /&gt;- Сине, донеси на баба ти крема за устни.&lt;br /&gt;- Кой крем?&lt;br /&gt;- Онзи в малката тубичка в хладилника, на него пише "Канаконлит".&lt;br /&gt;----------------------------------------------------&lt;br /&gt;Италианец отива на изповед.&lt;br /&gt;- Съгреших отче.&lt;br /&gt;- Кажи синко.&lt;br /&gt;- Измамих един евреин.&lt;br /&gt;- Но това не е грях синко! Това е чудо!&lt;br /&gt;----------------------------------------------------&lt;br /&gt;Мутра в Чикаго влиза в едно такси и с един куфар и казва на шофьора на чист български език: &lt;br /&gt;- Карай към Пловдив, майна.&lt;br /&gt;Шофьорът отговаря зачудено на английски:&lt;br /&gt;- What?&lt;br /&gt;Мутрата пак повтаря на български език:&lt;br /&gt;- Карай към Пловдив-&lt;br /&gt;Шофьорът пак казва на английски:&lt;br /&gt;- Sorry I do not understand you, what do you want?&lt;br /&gt;Тогава мутрата отваря куфарчето надиплено с пари и му отговаря:&lt;br /&gt;- Карай кам Пловдив.&lt;br /&gt;Тогава шофьорът му отговаря:&lt;br /&gt;- Стария или новия град?&lt;br /&gt;----------------------------------------------------&lt;br /&gt;Имало една жена, която била много ненаситна и само секс искала. Веднъж мъжът и отишъл командировка и тя веднага звъннала на любовника си. Дошъл той, правили секс, но не щеш ли се позвъняло на вратата! Какво да прави жената казала на любовника си:&lt;br /&gt;- Бързо скачай в този чувал и на терасата!&lt;br /&gt;Така и станало. Отворила жената вратата и гледа нейно старо гадже, което разбрало, че мъжа й е командировка и дошъл да се позабавляват. Тъкмо приключвали, когато се позвъняло на вратата отново. Жената пак се извикала:&lt;br /&gt;- Скачай в този чувал и на терасата!&lt;br /&gt;Отворила тя вратата, гледа съседа. Поканила го да влезе и не щеш ли се озовали в леглото. Тъкмо когато той обувал панталона си отново се позвъняло на вратата. Тя нахлузила чувал на главата на съседа си и го изкарала на терасата. Отворила вратата и гледа мъжа си!&lt;br /&gt;- Защо си гола, жено!? - попитал съпруга.&lt;br /&gt;- Ами бях под душа до сега.&lt;br /&gt;- А какви са тези чували на терасата?&lt;br /&gt;- Ами мама прати малко зимнина.&lt;br /&gt;Отишъл мъжът, подритнал първият чувал и се чуло:&lt;br /&gt;- Кудкудяаак!&lt;br /&gt;- Ооо маминка пилешко е пратила!&lt;br /&gt;Подритнал втория, чуло се:&lt;br /&gt;- Грух!&lt;br /&gt;- Ооо маминка и свинско е изпратила!&lt;br /&gt;Подритнал третия, нищо! Учуден мъжът го ритнал отново и пак нищо. Ритнал го трети път а от вътре се чуло:&lt;br /&gt;- Аз съм картофи бе педерас! &lt;br /&gt;---------------------------------------&lt;br /&gt;Полицай спира огромен Мерцедес, вътре красива блондинка:&lt;br /&gt;- Добър ден, документите за проверка!&lt;br /&gt;Блондинката:&lt;br /&gt;- Не знам за какво говорите.&lt;br /&gt;Полицаят:&lt;br /&gt;- Ами за шофьорска книжка и талона на колата!&lt;br /&gt;Блондинката отново отговаря, че не знае, за какво става въпрос и настоява, че няма документи.&lt;br /&gt;Полицаят:&lt;br /&gt;- Госпожице, защо не проверите в дамската си чанта или в жабката на колата !&lt;br /&gt;Блондинката проверява и наистина намира необходимите документи. В този момент по радиостанцията на полицая се обажда негов колега и след като разбира, че е спрял същата блондинка с Мерцедеса, го съветва да си събуе гащите пред нея и да види какво ще стане.&lt;br /&gt;Полицаят си свалил панталоните и застанал пред красивата блондинка.&lt;br /&gt;Възмутена блондинката отвърнала:&lt;br /&gt;- Е-е-е-е-е пак ли алкохолна проба!&lt;br /&gt;------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-5069658429840126416?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/5069658429840126416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=5069658429840126416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5069658429840126416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/5069658429840126416'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/phun.html' title='Phun'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-464532101671948377</id><published>2009-06-14T13:53:00.000+03:00</published><updated>2009-06-14T13:54:04.073+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>Из автомобилните форуми....</title><content type='html'>Бентли: &lt;br /&gt;- Днес използвах пепелника. Как се сменя? &lt;br /&gt;&lt;br /&gt;Мустанг: &lt;br /&gt;- Някакъв ръчкач с Хонда ми се пънеше днес.. &lt;br /&gt;&lt;br /&gt;Хонда: &lt;br /&gt;- Някакъв ръчкач с Мустанг ми се пънеше днес.. &lt;br /&gt;&lt;br /&gt;Макларън Ф1: &lt;br /&gt;- Някакъв ръчкач с Ф16 ми се пънеше днес.. &lt;br /&gt;&lt;br /&gt;Застава: &lt;br /&gt;- Кога за последно карахте колата си? &lt;br /&gt;&lt;br /&gt;Ламборджини: &lt;br /&gt;- Странен шум около 345-350 км/ч. &lt;br /&gt;&lt;br /&gt;Миата: &lt;br /&gt;- Някъв селяндур с пикап ми прегази колата (снимки) &lt;br /&gt;&lt;br /&gt;Пикап: &lt;br /&gt;- Една Миата ми се заклещи в предната броня. Как да я махна? (снимки) &lt;br /&gt;&lt;br /&gt;Форд Crown Victoria: &lt;br /&gt;- Защо никой не ме изпреварва на мигистралата? &lt;br /&gt;&lt;br /&gt;Тойота Приус: &lt;br /&gt;- Какви батерии да купя AAA или AA? &lt;br /&gt;&lt;br /&gt;Mini: &lt;br /&gt;- Обърнах Минито след като гледах "The Italian Job". Ще съдя студиото(снимки). &lt;br /&gt;&lt;br /&gt;Хъмър: &lt;br /&gt;- Днес катастрофирах. 24 ранени, 10 убити. Трябва ли да взема черната боя от официалния вносител? До там са 25 километра. Това са си 35 лева за бензин. &lt;br /&gt;&lt;br /&gt;фиат: &lt;br /&gt;- Здравейте. Само аз ли съм регистриран? &lt;br /&gt;&lt;br /&gt;Форд: &lt;br /&gt;- Помощ! Смених всичко и пак не пали!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-464532101671948377?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/464532101671948377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=464532101671948377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/464532101671948377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/464532101671948377'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/blog-post.html' title='Из автомобилните форуми....'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7897072494901631750</id><published>2009-06-11T22:07:00.000+03:00</published><updated>2009-06-11T22:08:15.724+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phun'/><title type='text'>fortune</title><content type='html'>#define BITCOUNT(x) (((BX_(x)+(BX_(x)&gt;&gt;4)) &amp; 0x0F0F0F0F) % 255)&lt;br /&gt;#define  BX_(x)  ((x) - (((x)&gt;&gt;1)&amp;0x77777777)   \&lt;br /&gt;        - (((x)&gt;&gt;2)&amp;0x33333333)   \&lt;br /&gt;        - (((x)&gt;&gt;3)&amp;0x11111111))&lt;br /&gt;&lt;br /&gt;  -- really weird C code to count the number of bits in a word&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7897072494901631750?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7897072494901631750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7897072494901631750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7897072494901631750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7897072494901631750'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/fortune.html' title='fortune'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-914980729677741261</id><published>2009-06-11T21:51:00.002+03:00</published><updated>2009-06-11T21:54:33.496+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python: Fibonacci numberz</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://georgi.forkbomb.nl/lib/exe/fetch.php?w=&amp;h=&amp;cache=cache&amp;media=cache_mathplugin%3amath_969.5_344c32e5c35116f9be0be6e3e426f686.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 148px; height: 42px;" src="http://georgi.forkbomb.nl/lib/exe/fetch.php?w=&amp;h=&amp;cache=cache&amp;media=cache_mathplugin%3amath_969.5_344c32e5c35116f9be0be6e3e426f686.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def fib(n):&lt;br /&gt;    if n==0 or n==1:&lt;br /&gt;        return 1&lt;br /&gt;    else:&lt;br /&gt;        if n-1 in cache.keys():&lt;br /&gt;            fib1=cache[n-1]&lt;br /&gt;        else:&lt;br /&gt;            fib1=fib(n-1)&lt;br /&gt;            cache[n-1]=fib1&lt;br /&gt;        if n-2 in cache.keys():&lt;br /&gt;            fib2=cache[n-2]&lt;br /&gt;        else:&lt;br /&gt;            fib2=fib(n-2)&lt;br /&gt;            cache[n-2]=fib2&lt;br /&gt;        return fib1+fib2&lt;br /&gt; &lt;br /&gt;def fib2(n):&lt;br /&gt;    if n==0 or n==1: return 1&lt;br /&gt;    else: return fib2(n-1)+fib2(n-2)&lt;br /&gt;&lt;br /&gt;def fib3(n):&lt;br /&gt;    f1=1&lt;br /&gt;    f2=1&lt;br /&gt;    retval=0&lt;br /&gt;    for q in range(n-1):&lt;br /&gt;        retval=f1+f2&lt;br /&gt;        f2=f1&lt;br /&gt;        f1=retval&lt;br /&gt;    return retval&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-914980729677741261?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/914980729677741261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=914980729677741261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/914980729677741261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/914980729677741261'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/python-fibonacci-numberz.html' title='python: Fibonacci numberz'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3499315961013313025</id><published>2009-06-11T21:48:00.000+03:00</published><updated>2009-06-11T21:49:22.914+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python get dir size</title><content type='html'>import os&lt;br /&gt; &lt;br /&gt;def getsize(arg,dirname,files):&lt;br /&gt;    for t in files:&lt;br /&gt;        arg.append(os.stat(os.path.join(dirname,t))[6])&lt;br /&gt; &lt;br /&gt;def dirsize(dir):&lt;br /&gt;    filesizes=[]&lt;br /&gt;    bytes=0&lt;br /&gt;    os.path.walk(dir,getsize,filesizes)&lt;br /&gt;    for t in filesizes:&lt;br /&gt;        bytes+=t&lt;br /&gt;    return bytes&lt;br /&gt;&lt;br /&gt;print dirsize('f:\mirrors')&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3499315961013313025?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3499315961013313025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3499315961013313025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3499315961013313025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3499315961013313025'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/python-get-dir-size.html' title='python get dir size'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-446888154639022244</id><published>2009-06-11T21:20:00.003+03:00</published><updated>2009-06-11T21:35:31.865+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>bitchx ....</title><content type='html'>spawn new window          - /win new hide&lt;br /&gt;connect to 2nd server     - /win server [server]&lt;br /&gt;show channel users list   - /scan&lt;br /&gt;change username           - /newuser [username]&lt;br /&gt;change ircname            - /ircname [ircname]&lt;br /&gt;ignore                    - /ignore [nick] [mode]&lt;br /&gt;  modes: [ALL MSGS PUBLIC WALLS WALLOPS INVITES &lt;br /&gt;          NOTICES NOTES CTCPS CDCC KICKS MODES &lt;br /&gt;          SMODES JOINS TOPICS QUITS PARTS NICKS&lt;br /&gt;          PONGS SQUITS CRAP NONE]&lt;br /&gt;ignore list               - /ignore&lt;br /&gt;DCC chat                  - /q =[nick] &lt;br /&gt;                          - /dcc chat [nick]&lt;br /&gt;list/remove ignores       - /tig [ignore]&lt;br /&gt;flood protection          - /fprot [on/off]&lt;br /&gt;alias for command         - /alias foo window new double on hide&lt;br /&gt;   -&gt;  /foo&lt;br /&gt;see list of bx options    - /toggle&lt;br /&gt;&lt;br /&gt;Set default server, nick and so on:&lt;br /&gt; root@dummy:~# export IRCSERVER="irc.dummy_server.net"&lt;br /&gt; root@dummy:~# export IRCNICK="dummy_nick"&lt;br /&gt; root@dummy:~# BitchX&lt;br /&gt;     -&gt; bx will connect to irc.dummy_server.net with nick dummy_nick&lt;br /&gt;&lt;br /&gt;detach bitchx              - /detach&lt;br /&gt;re-attach bitchx:&lt;br /&gt; root@dummy:~# scr-bx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-446888154639022244?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/446888154639022244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=446888154639022244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/446888154639022244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/446888154639022244'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/bitchx.html' title='bitchx ....'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-3703016887439653964</id><published>2009-06-11T14:23:00.000+03:00</published><updated>2009-06-11T14:24:13.084+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>linux &lt;&gt; cisco  ipsec tunnel</title><content type='html'>root@darkstar:/usr/local/sbin# cat /etc/ipsec.conf &lt;br /&gt;#!/usr/sbin/setkey -f&lt;br /&gt;#&lt;br /&gt;# Flush SAD and SPD&lt;br /&gt;flush;&lt;br /&gt;spdflush;&lt;br /&gt;# Remote Office - Main Office VPN&lt;br /&gt;spdadd 0.0.0.0/0 192.168.1.0/24  any -P out ipsec&lt;br /&gt;esp/tunnel/195.24.92.52-195.24.88.74/require;&lt;br /&gt;spdadd 192.168.1.0/24  0.0.0.0/0 any -P in ipsec&lt;br /&gt;esp/tunnel/195.24.88.74-195.24.92.52/require;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root@darkstar:/usr/local/sbin# cat /etc/racoon.conf &lt;br /&gt;path include "/etc";&lt;br /&gt;path pre_shared_key "/etc/psk.txt";&lt;br /&gt;padding&lt;br /&gt;{&lt;br /&gt;    maximum_length 20;    # maximum padding length.&lt;br /&gt;    randomize off;        # enable randomize length.&lt;br /&gt;    strict_check off;    # enable strict check.&lt;br /&gt;    exclusive_tail off;    # extract last one octet.&lt;br /&gt;}&lt;br /&gt;listen&lt;br /&gt;{&lt;br /&gt;    #isakmp ::1 [7000];&lt;br /&gt;    isakmp 195.24.92.52 [500];&lt;br /&gt;    #admin [7002];       # administrative's port by kmpstat.&lt;br /&gt;    #strict_address;     # required all addresses must be bound.&lt;br /&gt;}&lt;br /&gt;# Specification of default various timer.&lt;br /&gt;timer&lt;br /&gt;{&lt;br /&gt;    # These value can be changed per remote node.&lt;br /&gt;    counter 5;        # maximum trying count to send.&lt;br /&gt;    interval 20 sec;    # maximum interval to resend.&lt;br /&gt;    persend 1;        # the number of packets per a send.&lt;br /&gt;&lt;br /&gt;    # timer for waiting to complete each phase.&lt;br /&gt;    phase1 90 sec;&lt;br /&gt;    phase2 90 sec;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;remote 195.24.88.74  {&lt;br /&gt;        my_identifier address 195.24.92.52;&lt;br /&gt;        exchange_mode aggressive,main;&lt;br /&gt;        initial_contact off;&lt;br /&gt;        proposal {&lt;br /&gt;                encryption_algorithm 3des;&lt;br /&gt;                hash_algorithm md5;&lt;br /&gt;                authentication_method pre_shared_key;&lt;br /&gt;                dh_group 2;&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;# authentication_algorithm hmac_md5;&lt;br /&gt;sainfo anonymous {&lt;br /&gt;        pfs_group 2;&lt;br /&gt;        lifetime time 12 hour; &lt;br /&gt;        encryption_algorithm 3des;&lt;br /&gt;        #hash_algorithm md5;&lt;br /&gt;        #authentication_method pre_shared_key;&lt;br /&gt;        authentication_algorithm hmac_md5;&lt;br /&gt;        compression_algorithm deflate;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root@darkstar:/usr/local/sbin# cat /etc/rc.d/rc.local &lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# /etc/rc.d/rc.local:  Local system initialization script.&lt;br /&gt;#&lt;br /&gt;# Put any local startup commands in here.  Also, if you have&lt;br /&gt;# anything that needs to be run at shutdown time you can&lt;br /&gt;# make an /etc/rc.d/rc.local_shutdown script and put those&lt;br /&gt;# commands in there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#/etc/init.d/vpnclient_init start&lt;br /&gt;&lt;br /&gt;## Start ipsec tunnel&lt;br /&gt;/usr/local/sbin/setkey -f /etc/ipsec.conf&lt;br /&gt;/usr/local/sbin/racoon -f /etc/racoon/racoon.conf -v -dd&lt;br /&gt;/usr/local/sbin/racoonctl vpn-connect -u anonymous 195.24.88.74&lt;br /&gt;#/usr/local/sbin/racoon -f /etc/racoon/racoon.conf -F -ddd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-3703016887439653964?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/3703016887439653964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=3703016887439653964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3703016887439653964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/3703016887439653964'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/linux-cisco-ipsec-tunnel.html' title='linux &lt;&gt; cisco  ipsec tunnel'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-1893441064674171471</id><published>2009-06-09T10:01:00.000+03:00</published><updated>2009-06-09T10:02:00.520+03:00</updated><title type='text'>extreme sflow</title><content type='html'>enable sflow&lt;br /&gt;configure sflow config agent 10.199.5.10&lt;br /&gt;configure sflow collector 192.168.72.67 port 6343&lt;br /&gt;configure sflow sample-rate 128&lt;br /&gt;configure sflow poll-interval 30&lt;br /&gt;configure sflow backoff-threshold 50&lt;br /&gt;enable sflow backoff-threshold&lt;br /&gt;enable sflow ports all&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-1893441064674171471?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/1893441064674171471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=1893441064674171471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1893441064674171471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/1893441064674171471'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/extreme-sflow.html' title='extreme sflow'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-409244990166822991</id><published>2009-06-03T17:59:00.001+03:00</published><updated>2009-06-03T18:11:58.957+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><title type='text'>file transfer with nc</title><content type='html'>nc lets you stream over the network. When used with tar, you can transfer files and directories.&lt;br /&gt;&lt;br /&gt;First, on PC1:&lt;br /&gt;netcat -l -q 0 -p 3000 | tar xzv&lt;br /&gt;&lt;br /&gt;Second, on PC2:&lt;br /&gt;tar czv ~/dir/ | nc -q 0 boom 3000&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-409244990166822991?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/409244990166822991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=409244990166822991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/409244990166822991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/409244990166822991'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/file-transfer-with-nc.html' title='file transfer with nc'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7240745851013002049.post-7480069710812823002</id><published>2009-06-03T11:08:00.001+03:00</published><updated>2009-06-03T11:08:52.186+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lnx'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python show popup notification</title><content type='html'>&gt;&gt;&gt; import pynotify&lt;br /&gt;&gt;&gt;&gt; pynotify.init('foo')&lt;br /&gt;True&lt;br /&gt;&gt;&gt;&gt; pynotify.Notification('foo', 'bar').show()&lt;br /&gt;True&lt;br /&gt;&gt;&gt;&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7240745851013002049-7480069710812823002?l=pli0k.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pli0k.blogspot.com/feeds/7480069710812823002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7240745851013002049&amp;postID=7480069710812823002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7480069710812823002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7240745851013002049/posts/default/7480069710812823002'/><link rel='alternate' type='text/html' href='http://pli0k.blogspot.com/2009/06/python-show-popup-notification.html' title='python show popup notification'/><author><name>gfunk</name><uri>http://www.blogger.com/profile/03770939177083850570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_C9_uoqMmSpw/SNZpjUae5UI/AAAAAAAAAAM/2y56Ef43o58/s1600-R/bsd.gif'/></author><thr:total>0</thr:total></entry></feed>
