<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nick-black.com/dankwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop</id>
	<title>dankwiki - user contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://nick-black.com/dankwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop"/>
	<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Special:Contributions/WikiSysop"/>
	<updated>2026-04-25T19:47:12Z</updated>
	<subtitle>user contributions</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=MediaWiki:Timeless.css&amp;diff=6167</id>
		<title>MediaWiki:Timeless.css</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=MediaWiki:Timeless.css&amp;diff=6167"/>
		<updated>2019-07-11T07:21:20Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will affect users of the Timeless skin */&lt;br /&gt;
&lt;br /&gt;
#ca-talk { display:none!important; }&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=MediaWiki:Timeless.css&amp;diff=6166</id>
		<title>MediaWiki:Timeless.css</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=MediaWiki:Timeless.css&amp;diff=6166"/>
		<updated>2019-07-11T07:20:20Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Created page with &amp;quot;/* CSS placed here will affect users of the Timeless skin */ #ca-talk { display:none!important; }&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will affect users of the Timeless skin */&lt;br /&gt;
#ca-talk { display:none!important; }&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Main_Page&amp;diff=201</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Main_Page&amp;diff=201"/>
		<updated>2009-01-28T07:33:29Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Redirecting to Hack on; hack on&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hack_on%3B_hack_on]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Main_Page&amp;diff=200</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Main_Page&amp;diff=200"/>
		<updated>2009-01-28T07:33:19Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Replacing page with &amp;#039;#REDIRECT Hack_on%3B_hack_on&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT Hack_on%3B_hack_on&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=XVInfo_output&amp;diff=199</id>
		<title>XVInfo output</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=XVInfo_output&amp;diff=199"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is from an i965 and a Dell 2007FP (via DVI):&lt;br /&gt;
&amp;lt;pre&amp;gt;X-Video Extension version 2.2&lt;br /&gt;
screen #0&lt;br /&gt;
  Adaptor #0: &amp;quot;Intel(R) Textured Video&amp;quot;&lt;br /&gt;
    number of ports: 16&lt;br /&gt;
    port base: 89&lt;br /&gt;
    operations supported: PutImage &lt;br /&gt;
    supported visuals:&lt;br /&gt;
      depth 16, visualID 0x23&lt;br /&gt;
      depth 16, visualID 0x24&lt;br /&gt;
      depth 16, visualID 0x25&lt;br /&gt;
      depth 16, visualID 0x26&lt;br /&gt;
      depth 16, visualID 0x27&lt;br /&gt;
      depth 16, visualID 0x28&lt;br /&gt;
      depth 16, visualID 0x29&lt;br /&gt;
      depth 16, visualID 0x2a&lt;br /&gt;
    number of attributes: 2&lt;br /&gt;
      &amp;quot;XV_BRIGHTNESS&amp;quot; (range -128 to 127)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 0)&lt;br /&gt;
      &amp;quot;XV_CONTRAST&amp;quot; (range 0 to 255)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 0)&lt;br /&gt;
    maximum XvImage size: 1920 x 1088&lt;br /&gt;
    Number of image formats: 4&lt;br /&gt;
      id: 0x32595559 (YUY2)&lt;br /&gt;
        guid: 59555932-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&lt;br /&gt;
      id: 0x32315659 (YV12)&lt;br /&gt;
        guid: 59563132-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x30323449 (I420)&lt;br /&gt;
        guid: 49343230-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x59565955 (UYVY)&lt;br /&gt;
        guid: 55595659-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[XVInfo ADD2|Output including an ADD2 card]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=XVInfo_ADD2&amp;diff=197</id>
		<title>XVInfo ADD2</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=XVInfo_ADD2&amp;diff=197"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;[recombinator](1) $ xvinfo &lt;br /&gt;
X-Video Extension version 2.2&lt;br /&gt;
screen #0&lt;br /&gt;
  Adaptor #0: &amp;quot;Intel(R) Textured Video&amp;quot;&lt;br /&gt;
    number of ports: 16&lt;br /&gt;
    port base: 93&lt;br /&gt;
    operations supported: PutImage &lt;br /&gt;
    supported visuals:&lt;br /&gt;
      depth 24, visualID 0x21&lt;br /&gt;
    number of attributes: 2&lt;br /&gt;
      &amp;quot;XV_BRIGHTNESS&amp;quot; (range -128 to 127)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 0)&lt;br /&gt;
      &amp;quot;XV_CONTRAST&amp;quot; (range 0 to 255)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 0)&lt;br /&gt;
    maximum XvImage size: 1920 x 1088&lt;br /&gt;
    Number of image formats: 5&lt;br /&gt;
      id: 0x32595559 (YUY2)&lt;br /&gt;
        guid: 59555932-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&lt;br /&gt;
      id: 0x32315659 (YV12)&lt;br /&gt;
        guid: 59563132-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x30323449 (I420)&lt;br /&gt;
        guid: 49343230-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x59565955 (UYVY)&lt;br /&gt;
        guid: 55595659-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&lt;br /&gt;
      id: 0x434d5658 (XVMC)&lt;br /&gt;
        guid: 58564d43-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
  Adaptor #1: &amp;quot;Intel(R) Video Overlay&amp;quot;&lt;br /&gt;
    number of ports: 1&lt;br /&gt;
    port base: 109&lt;br /&gt;
    operations supported: PutImage &lt;br /&gt;
    supported visuals:&lt;br /&gt;
      depth 24, visualID 0x21&lt;br /&gt;
    number of attributes: 12&lt;br /&gt;
      &amp;quot;XV_COLORKEY&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 66046)&lt;br /&gt;
      &amp;quot;XV_BRIGHTNESS&amp;quot; (range -128 to 127)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is -19)&lt;br /&gt;
      &amp;quot;XV_CONTRAST&amp;quot; (range 0 to 255)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 75)&lt;br /&gt;
      &amp;quot;XV_SATURATION&amp;quot; (range 0 to 1023)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 146)&lt;br /&gt;
      &amp;quot;XV_DOUBLE_BUFFER&amp;quot; (range 0 to 1)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 1)&lt;br /&gt;
      &amp;quot;XV_PIPE&amp;quot; (range -1 to 1)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is -1)&lt;br /&gt;
      &amp;quot;XV_GAMMA0&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 526344)&lt;br /&gt;
      &amp;quot;XV_GAMMA1&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 1052688)&lt;br /&gt;
      &amp;quot;XV_GAMMA2&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 2105376)&lt;br /&gt;
      &amp;quot;XV_GAMMA3&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 4210752)&lt;br /&gt;
      &amp;quot;XV_GAMMA4&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 8421504)&lt;br /&gt;
      &amp;quot;XV_GAMMA5&amp;quot; (range 0 to 16777215)&lt;br /&gt;
              client settable attribute&lt;br /&gt;
              client gettable attribute (current value is 12632256)&lt;br /&gt;
    maximum XvImage size: 1920 x 1088&lt;br /&gt;
    Number of image formats: 5&lt;br /&gt;
      id: 0x32595559 (YUY2)&lt;br /&gt;
        guid: 59555932-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&lt;br /&gt;
      id: 0x32315659 (YV12)&lt;br /&gt;
        guid: 59563132-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x30323449 (I420)&lt;br /&gt;
        guid: 49343230-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
      id: 0x59565955 (UYVY)&lt;br /&gt;
        guid: 55595659-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 16&lt;br /&gt;
        number of planes: 1&lt;br /&gt;
        type: YUV (packed)&lt;br /&gt;
      id: 0x434d5658 (XVMC)&lt;br /&gt;
        guid: 58564d43-0000-0010-8000-00aa00389b71&lt;br /&gt;
        bits per pixel: 12&lt;br /&gt;
        number of planes: 3&lt;br /&gt;
        type: YUV (planar)&lt;br /&gt;
[recombinator](1) $ &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xsh&amp;diff=195</id>
		<title>Xsh</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xsh&amp;diff=195"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[XML]] / [[XSLT]] / [[XPath]] meet sh&lt;br /&gt;
* Filesystem modeled as an XML document, queryable, but not a filesystem module (all shell-space)&lt;br /&gt;
* This has surely been researched elsewhere -- results?&lt;br /&gt;
* Integration with [[TANGE]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xrandr_output&amp;diff=193</id>
		<title>Xrandr output</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xrandr_output&amp;diff=193"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;[recombinator](0) $ xrandr -v&lt;br /&gt;
Server reports RandR version 1.2&lt;br /&gt;
[recombinator](0) $ xrandr --verbose&lt;br /&gt;
Screen 0: minimum 320 x 200, current 1600 x 1200, maximum 1680 x 1680&lt;br /&gt;
VGA disconnected (normal left inverted right x axis y axis)&lt;br /&gt;
	Identifier: 0x4b&lt;br /&gt;
	Timestamp:  362902&lt;br /&gt;
	Subpixel:   unknown&lt;br /&gt;
	Clones:    &lt;br /&gt;
	CRTCs:      0 1&lt;br /&gt;
TMDS-1 connected 1600x1200+0+0 (0x4d) normal (normal left inverted right x axis y axis) 367mm x 275mm&lt;br /&gt;
	Identifier: 0x4c&lt;br /&gt;
	Timestamp:  362902&lt;br /&gt;
	Subpixel:   horizontal rgb&lt;br /&gt;
	Clones:    &lt;br /&gt;
	CRTC:       0&lt;br /&gt;
	CRTCs:      0 1&lt;br /&gt;
	EDID_DATA:&lt;br /&gt;
		00ffffffffffff0010ac21a04c313532&lt;br /&gt;
		0a10010380291f78eeee91a3544c9926&lt;br /&gt;
		0f5054a54b008180a940714f01010101&lt;br /&gt;
		010101010101483f403062b0324040c0&lt;br /&gt;
		13006f131100001e000000ff00433935&lt;br /&gt;
		33363633373235314c0a000000fc0044&lt;br /&gt;
		454c4c203230303746500a20000000fd&lt;br /&gt;
		00384c1e5311000a2020202020200008&lt;br /&gt;
  1600x1200 (0x4d)  162.0MHz +HSync +VSync *current +preferred&lt;br /&gt;
        h: width  1600 start 1664 end 1856 total 2160 skew    0 clock   75.0KHz&lt;br /&gt;
        v: height 1200 start 1201 end 1204 total 1250           clock   60.0Hz&lt;br /&gt;
  1600x1200 (0x4e)  161.0MHz -HSync +VSync&lt;br /&gt;
        h: width  1600 start 1712 end 1880 total 2160 skew    0 clock   74.5KHz&lt;br /&gt;
        v: height 1200 start 1203 end 1207 total 1245           clock   59.9Hz&lt;br /&gt;
  1680x1050 (0x4f)  147.1MHz&lt;br /&gt;
        h: width  1680 start 1784 end 1968 total 2256 skew    0 clock   65.2KHz&lt;br /&gt;
        v: height 1050 start 1051 end 1054 total 1087           clock   60.0Hz&lt;br /&gt;
  1600x1024 (0x50)  106.9MHz -HSync -VSync&lt;br /&gt;
        h: width  1600 start 1620 end 1640 total 1670 skew    0 clock   64.0KHz&lt;br /&gt;
        v: height 1024 start 1027 end 1030 total 1067           clock   60.0Hz&lt;br /&gt;
  1400x1050 (0x51)  155.8MHz +HSync +VSync&lt;br /&gt;
        h: width  1400 start 1464 end 1784 total 1912 skew    0 clock   81.5KHz&lt;br /&gt;
        v: height 1050 start 1052 end 1064 total 1090           clock   74.8Hz&lt;br /&gt;
  1400x1050 (0x52)  151.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1400 start 1464 end 1656 total 1960 skew    0 clock   77.0KHz&lt;br /&gt;
        v: height 1050 start 1051 end 1054 total 1100           clock   70.0Hz&lt;br /&gt;
  1400x1050 (0x53)  122.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1400 start 1488 end 1640 total 1880 skew    0 clock   64.9KHz&lt;br /&gt;
        v: height 1050 start 1052 end 1064 total 1082           clock   60.0Hz&lt;br /&gt;
  1280x1024 (0x54)  135.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1280 start 1296 end 1440 total 1688 skew    0 clock   80.0KHz&lt;br /&gt;
        v: height 1024 start 1025 end 1028 total 1066           clock   75.0Hz&lt;br /&gt;
  1280x1024 (0x55)  109.0MHz -HSync +VSync&lt;br /&gt;
        h: width  1280 start 1368 end 1496 total 1712 skew    0 clock   63.7KHz&lt;br /&gt;
        v: height 1024 start 1027 end 1034 total 1063           clock   59.9Hz&lt;br /&gt;
  1280x1024 (0x56)  108.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock   64.0KHz&lt;br /&gt;
        v: height 1024 start 1025 end 1028 total 1066           clock   60.0Hz&lt;br /&gt;
  1440x900 (0x57)  108.8MHz +HSync +VSync&lt;br /&gt;
        h: width  1440 start 1472 end 1880 total 1912 skew    0 clock   56.9KHz&lt;br /&gt;
        v: height  900 start  918 end  927 total  946           clock   60.2Hz&lt;br /&gt;
  1280x960 (0x58)  108.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1280 start 1376 end 1488 total 1800 skew    0 clock   60.0KHz&lt;br /&gt;
        v: height  960 start  961 end  964 total 1000           clock   60.0Hz&lt;br /&gt;
  1280x800 (0x59)   83.5MHz&lt;br /&gt;
        h: width  1280 start 1344 end 1480 total 1680 skew    0 clock   49.7KHz&lt;br /&gt;
        v: height  800 start  801 end  804 total  828           clock   60.0Hz&lt;br /&gt;
  1152x864 (0x5a)  108.0MHz +HSync +VSync&lt;br /&gt;
        h: width  1152 start 1216 end 1344 total 1600 skew    0 clock   67.5KHz&lt;br /&gt;
        v: height  864 start  865 end  868 total  900           clock   75.0Hz&lt;br /&gt;
  1152x864 (0x5b)  104.0MHz -HSync +VSync&lt;br /&gt;
        h: width  1152 start 1224 end 1344 total 1536 skew    0 clock   67.7KHz&lt;br /&gt;
        v: height  864 start  867 end  871 total  905           clock   74.8Hz&lt;br /&gt;
  1280x768 (0x5c)   80.1MHz&lt;br /&gt;
        h: width  1280 start 1344 end 1480 total 1680 skew    0 clock   47.7KHz&lt;br /&gt;
        v: height  768 start  769 end  772 total  795           clock   60.0Hz&lt;br /&gt;
  1024x768 (0x5d)   78.8MHz +HSync +VSync&lt;br /&gt;
        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.1KHz&lt;br /&gt;
        v: height  768 start  769 end  772 total  800           clock   75.1Hz&lt;br /&gt;
  1024x768 (0x5e)   78.8MHz +HSync +VSync&lt;br /&gt;
        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.0KHz&lt;br /&gt;
        v: height  768 start  769 end  772 total  800           clock   75.0Hz&lt;br /&gt;
  1024x768 (0x5f)   75.0MHz -HSync -VSync&lt;br /&gt;
        h: width  1024 start 1048 end 1184 total 1328 skew    0 clock   56.5KHz&lt;br /&gt;
        v: height  768 start  771 end  777 total  806           clock   70.1Hz&lt;br /&gt;
  1024x768 (0x60)   65.0MHz -HSync -VSync&lt;br /&gt;
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock   48.4KHz&lt;br /&gt;
        v: height  768 start  771 end  777 total  806           clock   60.0Hz&lt;br /&gt;
  832x624 (0x61)   57.3MHz -HSync -VSync&lt;br /&gt;
        h: width   832 start  864 end  928 total 1152 skew    0 clock   49.7KHz&lt;br /&gt;
        v: height  624 start  625 end  628 total  667           clock   74.6Hz&lt;br /&gt;
  800x600 (0x62)   50.0MHz +HSync +VSync&lt;br /&gt;
        h: width   800 start  856 end  976 total 1040 skew    0 clock   48.1KHz&lt;br /&gt;
        v: height  600 start  637 end  643 total  666           clock   72.2Hz&lt;br /&gt;
  800x600 (0x63)   49.5MHz +HSync +VSync&lt;br /&gt;
        h: width   800 start  816 end  896 total 1056 skew    0 clock   46.9KHz&lt;br /&gt;
        v: height  600 start  601 end  604 total  625           clock   75.0Hz&lt;br /&gt;
  800x600 (0x64)   40.0MHz +HSync +VSync&lt;br /&gt;
        h: width   800 start  840 end  968 total 1056 skew    0 clock   37.9KHz&lt;br /&gt;
        v: height  600 start  601 end  605 total  628           clock   60.3Hz&lt;br /&gt;
  800x600 (0x65)   36.0MHz +HSync +VSync&lt;br /&gt;
        h: width   800 start  824 end  896 total 1024 skew    0 clock   35.2KHz&lt;br /&gt;
        v: height  600 start  601 end  603 total  625           clock   56.2Hz&lt;br /&gt;
  640x480 (0x66)   31.5MHz -HSync -VSync&lt;br /&gt;
        h: width   640 start  656 end  720 total  840 skew    0 clock   37.5KHz&lt;br /&gt;
        v: height  480 start  481 end  484 total  500           clock   75.0Hz&lt;br /&gt;
  640x480 (0x67)   31.5MHz -HSync -VSync&lt;br /&gt;
        h: width   640 start  664 end  704 total  832 skew    0 clock   37.9KHz&lt;br /&gt;
        v: height  480 start  489 end  492 total  520           clock   72.8Hz&lt;br /&gt;
  640x480 (0x66)   31.5MHz -HSync -VSync&lt;br /&gt;
        h: width   640 start  656 end  720 total  840 skew    0 clock   37.5KHz&lt;br /&gt;
        v: height  480 start  481 end  484 total  500           clock   75.0Hz&lt;br /&gt;
  640x480 (0x68)   25.2MHz -HSync -VSync&lt;br /&gt;
        h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz&lt;br /&gt;
        v: height  480 start  490 end  492 total  525           clock   60.0Hz&lt;br /&gt;
  640x480 (0x69)   25.2MHz -HSync -VSync&lt;br /&gt;
        h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz&lt;br /&gt;
        v: height  480 start  490 end  492 total  525           clock   59.9Hz&lt;br /&gt;
  720x400 (0x6a)   28.3MHz -HSync +VSync&lt;br /&gt;
        h: width   720 start  738 end  846 total  900 skew    0 clock   31.5KHz&lt;br /&gt;
        v: height  400 start  412 end  414 total  449           clock   70.1Hz&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xorg_hell&amp;diff=191</id>
		<title>Xorg hell</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xorg_hell&amp;diff=191"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ahhh, XFree86/Xorg. What a steaming pile of FUBAR it&#039;s been. Things are rapidly getting better, though (unfortunately, the [[Linux framebuffer|framebuffer]] kernel layer now seems to be rotting slightly -- there&#039;s no intention, from what I can tell, to support [[Intel 965]] for instance). I use [[Intel 965]] video extensively, and have for some time -- info within might only be applicable to that card, and of course all of this may vary based on your [[Debian]] setup.&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
* Display: An X server, made up of one or more screens&lt;br /&gt;
* Screen: A display area for an X server, made up of one or more outputs, having the name hostname:displaynumber.screennumber&lt;br /&gt;
** hostname should be left blank for local displays&lt;br /&gt;
* Monitor: An output/port to a physical display device, having a resolution and a position within a screen&lt;br /&gt;
** LVDS: Integrated LCD (digital, differential signaling)&lt;br /&gt;
** TMDS: DVI, HDMI (digital, differential signaling)&lt;br /&gt;
** VGA: HD-15 (3-row DE-15) (analog)&lt;br /&gt;
** S-Video: Mini-DIN 4 (analog)&lt;br /&gt;
* crtc? pipe?&lt;br /&gt;
&lt;br /&gt;
== Diagnostics/Control ==&lt;br /&gt;
* &amp;lt;tt&amp;gt;xdpyinfo(1)&amp;lt;/tt&amp;gt; - X server information&lt;br /&gt;
** Use the &amp;lt;tt&amp;gt;-ext extensionName&amp;lt;/tt&amp;gt; option for extension-specific info (&amp;lt;tt&amp;gt;-ext all&amp;lt;/tt&amp;gt; for all)&lt;br /&gt;
* &amp;lt;tt&amp;gt;xvinfo(1)&amp;lt;/tt&amp;gt; - X-Video extension information&lt;br /&gt;
* &amp;lt;tt&amp;gt;glxinfo(1)&amp;lt;/tt&amp;gt; - [[OpenGL]] implementation information (via GLX)&lt;br /&gt;
* &amp;lt;tt&amp;gt;glewinfo(1)&amp;lt;/tt&amp;gt; - [[OpenGL]] extension information&lt;br /&gt;
* &amp;lt;tt&amp;gt;visualinfo(1)&amp;lt;/tt&amp;gt; - [[OpenGL]] visual info&lt;br /&gt;
* &amp;lt;tt&amp;gt;xrandr(1)&amp;lt;/tt&amp;gt; RandR (X Resize, Rotate and Reflect) extension information and control (operates on [[#Terminology|Monitors]])&lt;br /&gt;
* &amp;lt;tt&amp;gt;xprop(1)&amp;lt;/tt&amp;gt; Window and font property information (select window with mouseclick, &amp;lt;tt&amp;gt;-id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;-name&amp;lt;/tt&amp;gt;)&lt;br /&gt;
* &amp;lt;tt&amp;gt;fbset(1)&amp;lt;/tt&amp;gt; [[Framebuffer]] information and control (use &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; to get more (basic) info)&lt;br /&gt;
* &amp;lt;tt&amp;gt;xdriinfo(1)&amp;lt;/tt&amp;gt; DRI (Direct Rendering Infrastructure) driver information for all screens&lt;br /&gt;
** &amp;lt;tt&amp;gt;xdriinfo nscreens&amp;lt;/tt&amp;gt; for screen count, &amp;lt;tt&amp;gt;xdriinfo driver screenno&amp;lt;/tt&amp;gt; for drivers&lt;br /&gt;
** &amp;lt;tt&amp;gt;xdriinfo option drivername/screenno&amp;lt;/tt&amp;gt; for detailed configuration (as set using &amp;lt;tt&amp;gt;driconf(1)&amp;lt;/tt&amp;gt;)&lt;br /&gt;
* &amp;lt;tt&amp;gt;xbacklight(1)&amp;lt;/tt&amp;gt; device backlight information and control&lt;br /&gt;
* &amp;lt;tt&amp;gt;xprop(1)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xwininfo(1)&amp;lt;/tt&amp;gt; display information about X objects specified via command line or mouse click&lt;br /&gt;
&lt;br /&gt;
=== Sample Output ===&lt;br /&gt;
All output is from an [[Intel 965|i965]] on a 64-bit Core 2 Duo machine.&lt;br /&gt;
* [[xdpyinfo output]]&lt;br /&gt;
* [[XVInfo output]]&lt;br /&gt;
* [[GLXInfo output]]&lt;br /&gt;
* [[glewinfo output]]&lt;br /&gt;
* [[visualinfo output]]&lt;br /&gt;
* [[xrandr output]]&lt;br /&gt;
* [[xdriinfo output]]&lt;br /&gt;
&lt;br /&gt;
== Multiple Monitors ==&lt;br /&gt;
* Four modes: clone, span mode, extended desktop, multiseat&lt;br /&gt;
** Clone: same image on each monitor (good for presentations etc)&lt;br /&gt;
** Span mode: Stretch desktop of resolution 2M+N across two monitors of resolutions M and N&lt;br /&gt;
** Extended desktop: Disjoint desktops of resolution M and N on monitors of resolutions M and N&lt;br /&gt;
** Multiseat: Two distinct displays/inputs/users&lt;br /&gt;
* http://wiki.debian.org/XStrikeForce/HowToRandR12 seems up-to-date and useful&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* These days, the less in your &amp;lt;tt&amp;gt;xorg.conf&amp;lt;/tt&amp;gt;, the (likely, almost certain) better&lt;br /&gt;
* Most necessary modules are these days automatically loaded or builtin&lt;br /&gt;
* xrandr obsoletes most monitor setup requirements, so long as [[DDC/EDID]] work&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=X_Macros&amp;diff=189</id>
		<title>X Macros</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=X_Macros&amp;diff=189"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The C/C++ preprocessor expands a nested macro only when the subsuming macro is expanded, as opposed to defined. It also allows macros to be redefined. This leads to an elegant and powerful technique, not used nearly widely enough, for eliminating unmaintainable duplications. The problem originates in C&#039;s divergent (tetrapartite, to be precise) syntactic namespace:&lt;br /&gt;
* Aggregates (names of &amp;lt;tt&amp;gt;struct&amp;lt;/tt&amp;gt;s, &amp;lt;tt&amp;gt;union&amp;lt;/tt&amp;gt;s, and &amp;lt;tt&amp;gt;enum&amp;lt;/tt&amp;gt;s)&lt;br /&gt;
* Members within each aggregate&lt;br /&gt;
* Labels&lt;br /&gt;
* Ordinary identifiers&lt;br /&gt;
It can be difficult to ensure bijections defined between, say, the members of an enumeration and two mutually-exclusive constant, statically-initialized arrays of structures remain preserved across changes to the code. This is, of course, the central problem of duplication. Eliminating the redundancy seems impossible (without explicitly-coded runtime checks, and the associated assurance problems and performance penalties): Designated initializers can ensure that reorderings are preserved and that deletions result in compilation failures, but they fail to address augmentations in any one set; the bijection can be violated when members are added.&lt;br /&gt;
&lt;br /&gt;
==Case study==&lt;br /&gt;
Check section 2.4.3 of [http://people.redhat.com/drepper/dsohowto.pdf &amp;quot;How to Write Shared Libraries&amp;quot;] by [[glibc]] maintainer Ulrich Drepper. The &amp;quot;Arrays of Data Pointers&amp;quot; solution provided therein is optimal for constant strings of common length, but an unmaintainable eyesore. X macros address this problem exquisitely. I was going to write up a solution, until I realized Appendix B of aforementioned paper already contains one, credited to Bruno Haible. Well, there you go.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://www.ddj.com/cpp/184401387 The New C: X Macros] &#039;&#039;Dr. Dobb&#039;s&#039;&#039; 2001-05-01&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xdriinfo_output&amp;diff=187</id>
		<title>Xdriinfo output</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xdriinfo_output&amp;diff=187"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is with an i965 and a Dell 2007FP (via DVI), with command line parameters &amp;lt;tt&amp;gt;options i965&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;driinfo&amp;gt;&lt;br /&gt;
&amp;lt;section&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Performance&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Leistung&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Rendimiento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Prestatie&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Performance&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Prestanda&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;fthrottle_mode&amp;quot; type=&amp;quot;enum&amp;quot; default=&amp;quot;2&amp;quot; valid=&amp;quot;0:2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Method to limit rendering latency&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Busy waiting for the graphics hardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Sleep for brief intervals while waiting for the graphics hardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Let the graphics hardware emit a software interrupt and sleep&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Methode zur Begrenzung der Bildverzögerung&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Aktives Warten auf die Grafikhardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Kurze Schlafintervalle beim Warten auf die Grafikhardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Método para limitar la latencia de rénder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Esperar activamente al hardware gráfico&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Dormir en intervalos cortos mientras se espera al hardware gráfico&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Permitir que el hardware gráfico emita una interrupción de software y duerma&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Methode om beeldopbouwvertraging te onderdrukken&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Actief wachten voor de grafische hardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Slaap voor korte intervallen tijdens het wachten op de grafische hardware&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Laat de grafische hardware een software onderbreking uitzenden en in slaap vallen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Méthode d&#039;attente de la carte graphique&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Attente active de la carte graphique&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Attente utilisant usleep()&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Utiliser les interruptions&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Metod för att begränsa renderingslatens&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Upptagen med att vänta på grafikhårdvaran&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Sov i korta intervall under väntan på grafikhårdvaran&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Låt grafikhårdvaran sända ut ett programvaruavbrott och sov&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;vblank_mode&amp;quot; type=&amp;quot;enum&amp;quot; default=&amp;quot;1&amp;quot; valid=&amp;quot;0:3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Synchronization with vertical refresh (swap intervals)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Never synchronize with vertical refresh, ignore application&#039;s choice&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Initial swap interval 0, obey application&#039;s choice&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Initial swap interval 1, obey application&#039;s choice&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Always synchronize with vertical refresh, application chooses the minimum swap interval&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Synchronisation mit der vertikalen Bildwiederholung&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung ignorieren&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale Bildintervall&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Sincronización con el refresco vertical (intervalos de intercambio)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;No sincronizar nunca con el refresco vertical, ignorar la elección de la aplicación&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Intervalo de intercambio inicial 0, obedecer la elección de la aplicación&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Intervalo de intercambio inicial 1, obedecer la elección de la aplicación&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Sincronizar siempre con el refresco vertical, la aplicación elige el intervalo de intercambio mínimo&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Synchronisatie met verticale verversing (interval omwisselen)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Nooit synchroniseren met verticale verversing, negeer de keuze van de applicatie&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Initïeel omwisselingsinterval 0, honoreer de keuze van de applicatie&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Initïeel omwisselingsinterval 1, honoreer de keuze van de applicatie&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Synchroniseer altijd met verticale verversing, de applicatie kiest het minimum omwisselingsinterval&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Synchronisation de l&#039;affichage avec le balayage vertical&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Ne jamais synchroniser avec le balayage vertical, ignorer le choix de l&#039;application&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Ne pas synchroniser avec le balayage vertical par défaut, mais obéir au choix de l&#039;application&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Synchroniser avec le balayage vertical par défaut, mais obéir au choix de l&#039;application&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Toujours synchroniser avec le balayage vertical, l&#039;application choisit l&#039;intervalle minimal&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Synkronisering med vertikal uppdatering (växlingsintervall)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Synkronisera aldrig med vertikal uppdatering, ignorera programmets val&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Initialt växlingsintervall 0, följ programmets val&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Initialt växlingsintervall 1, följ programmets val&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;3&amp;quot; text=&amp;quot;Synkronisera alltid med vertikal uppdatering, programmet väljer den minsta växlingsintervallen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;section&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Image Quality&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Bildqualität&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Calidad de imagen&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Beeldkwaliteit&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Qualité d&#039;image&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Bildkvalitet&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;force_s3tc_enable&amp;quot; type=&amp;quot;bool&amp;quot; default=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Enable S3TC texture compression even if software support is not available&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Aktiviere S3TC Texturkomprimierung auch wenn die nötige Softwareunterstützung fehlt&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Activar la compresión de texturas S3TC incluso si el soporte por software no está disponible&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Schakel S3TC textuurcompressie in, zelfs als softwareondersteuning niet aanwezig is&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Activer la compression de texture S3TC même si le support logiciel est absent&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Aktivera S3TC-texturkomprimering även om programvarustöd saknas&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;allow_large_textures&amp;quot; type=&amp;quot;enum&amp;quot; default=&amp;quot;1&amp;quot; valid=&amp;quot;0:2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en&amp;quot; text=&amp;quot;Support larger textures not guaranteed to fit into graphics memory&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;No&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;At least 1 texture must fit under worst-case assumptions&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Announce hardware limits&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de&amp;quot; text=&amp;quot;Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Nein&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Benutze Hardware-Limits&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;es&amp;quot; text=&amp;quot;Support larger textures not guaranteed to fit into graphics memory&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;No&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;At least 1 texture must fit under worst-case assumptions&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Announce hardware limits&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;nl&amp;quot; text=&amp;quot;Support larger textures not guaranteed to fit into graphics memory&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;No&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;At least 1 texture must fit under worst-case assumptions&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Announce hardware limits&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;fr&amp;quot; text=&amp;quot;Support larger textures not guaranteed to fit into graphics memory&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;No&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;At least 1 texture must fit under worst-case assumptions&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Announce hardware limits&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;sv&amp;quot; text=&amp;quot;Stöd för större texturer är inte garanterat att passa i grafikminnet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;0&amp;quot; text=&amp;quot;Nej&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;1&amp;quot; text=&amp;quot;Åtminstone en textur måste passa för antaget sämsta förhållande&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;enum value=&amp;quot;2&amp;quot; text=&amp;quot;Annonsera hårdvarubegränsningar&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/driinfo&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xdpyinfo_output&amp;diff=185</id>
		<title>Xdpyinfo output</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xdpyinfo_output&amp;diff=185"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using an i965 and a Dell 2007FP (via DVI):&lt;br /&gt;
&amp;lt;pre&amp;gt;name of display:    :0.0&lt;br /&gt;
version number:    11.0&lt;br /&gt;
vendor string:    The X.Org Foundation&lt;br /&gt;
vendor release number:    10400090&lt;br /&gt;
X.Org version: 1.4.0.90&lt;br /&gt;
maximum request size:  16777212 bytes&lt;br /&gt;
motion buffer size:  256&lt;br /&gt;
bitmap unit, bit order, padding:    32, LSBFirst, 32&lt;br /&gt;
image byte order:    LSBFirst&lt;br /&gt;
number of supported pixmap formats:    7&lt;br /&gt;
supported pixmap formats:&lt;br /&gt;
    depth 1, bits_per_pixel 1, scanline_pad 32&lt;br /&gt;
    depth 4, bits_per_pixel 8, scanline_pad 32&lt;br /&gt;
    depth 8, bits_per_pixel 8, scanline_pad 32&lt;br /&gt;
    depth 15, bits_per_pixel 16, scanline_pad 32&lt;br /&gt;
    depth 16, bits_per_pixel 16, scanline_pad 32&lt;br /&gt;
    depth 24, bits_per_pixel 32, scanline_pad 32&lt;br /&gt;
    depth 32, bits_per_pixel 32, scanline_pad 32&lt;br /&gt;
keycode range:    minimum 8, maximum 255&lt;br /&gt;
focus:  window 0x2e30c29, revert to Parent&lt;br /&gt;
number of extensions:    33&lt;br /&gt;
    BIG-REQUESTS&lt;br /&gt;
    Composite&lt;br /&gt;
    DAMAGE&lt;br /&gt;
    DOUBLE-BUFFER&lt;br /&gt;
    DPMS&lt;br /&gt;
    Extended-Visual-Information&lt;br /&gt;
    GLX&lt;br /&gt;
    MIT-SCREEN-SAVER&lt;br /&gt;
    MIT-SHM&lt;br /&gt;
    MIT-SUNDRY-NONSTANDARD&lt;br /&gt;
    RANDR&lt;br /&gt;
    RECORD&lt;br /&gt;
    RENDER&lt;br /&gt;
    SECURITY&lt;br /&gt;
    SGI-GLX&lt;br /&gt;
    SHAPE&lt;br /&gt;
    SYNC&lt;br /&gt;
    TOG-CUP&lt;br /&gt;
    X-Resource&lt;br /&gt;
    XAccessControlExtension&lt;br /&gt;
    XC-APPGROUP&lt;br /&gt;
    XC-MISC&lt;br /&gt;
    XFIXES&lt;br /&gt;
    XFree86-Bigfont&lt;br /&gt;
    XFree86-DGA&lt;br /&gt;
    XFree86-DRI&lt;br /&gt;
    XFree86-Misc&lt;br /&gt;
    XFree86-VidModeExtension&lt;br /&gt;
    XINERAMA&lt;br /&gt;
    XInputExtension&lt;br /&gt;
    XKEYBOARD&lt;br /&gt;
    XTEST&lt;br /&gt;
    XVideo&lt;br /&gt;
default screen number:    0&lt;br /&gt;
number of screens:    1&lt;br /&gt;
&lt;br /&gt;
screen #0:&lt;br /&gt;
  dimensions:    1600x1200 pixels (367x275 millimeters)&lt;br /&gt;
  resolution:    111x111 dots per inch&lt;br /&gt;
  depths (7):    16, 1, 4, 8, 15, 24, 32&lt;br /&gt;
  root window id:    0x6d&lt;br /&gt;
  depth of root window:    16 planes&lt;br /&gt;
  number of colormaps:    minimum 1, maximum 1&lt;br /&gt;
  default colormap:    0x20&lt;br /&gt;
  default number of colormap cells:    64&lt;br /&gt;
  preallocated pixels:    black 0, white 65535&lt;br /&gt;
  options:    backing-store NO, save-unders NO&lt;br /&gt;
  largest cursor:    64x64&lt;br /&gt;
  current input event mask:    0x7a802c&lt;br /&gt;
    ButtonPressMask          ButtonReleaseMask        LeaveWindowMask          &lt;br /&gt;
    ExposureMask             StructureNotifyMask      SubstructureNotifyMask   &lt;br /&gt;
    SubstructureRedirectMask FocusChangeMask          PropertyChangeMask       &lt;br /&gt;
  number of visuals:    17&lt;br /&gt;
  default visual id:  0x23&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x23&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x24&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x25&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x26&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x27&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x28&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x29&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2a&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2b&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2c&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2d&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2e&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x2f&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x30&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x31&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x32&lt;br /&gt;
    class:    DirectColor&lt;br /&gt;
    depth:    16 planes&lt;br /&gt;
    available colormap entries:    64 per subfield&lt;br /&gt;
    red, green, blue masks:    0xf800, 0x7e0, 0x1f&lt;br /&gt;
    significant bits in color specification:    6 bits&lt;br /&gt;
  visual:&lt;br /&gt;
    visual id:    0x6b&lt;br /&gt;
    class:    TrueColor&lt;br /&gt;
    depth:    32 planes&lt;br /&gt;
    available colormap entries:    256 per subfield&lt;br /&gt;
    red, green, blue masks:    0xff0000, 0xff00, 0xff&lt;br /&gt;
    significant bits in color specification:    8 bits&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=X86&amp;diff=183</id>
		<title>X86</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=X86&amp;diff=183"/>
		<updated>2009-01-28T07:32:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;s a dirty job, but someone&#039;s gotta do it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;FIXME&#039;&#039; data goes here&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[cpuid]]&lt;br /&gt;
* [[SMP on x86]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=X&amp;diff=181</id>
		<title>X</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=X&amp;diff=181"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Xorg hell]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Working_with_libraries&amp;diff=179</id>
		<title>Working with libraries</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Working_with_libraries&amp;diff=179"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Building libraries==&lt;br /&gt;
===[[gcc]] issues===&lt;br /&gt;
* For predictable results, the same set of options used to generate code (see &amp;quot;Code Gen Options&amp;quot; and &amp;quot;Submodel Options&amp;quot; in the [[gcc]] Info pages) must be used to link (see &amp;quot;Link Options&amp;quot; in the [[gcc]] Info pages)!&lt;br /&gt;
* &amp;lt;tt&amp;gt;-shared&amp;lt;/tt&amp;gt; should be supplied with the link step to produce a shared object.&lt;br /&gt;
* Regarding &amp;lt;tt&amp;gt;-fpic&amp;lt;/tt&amp;gt; vs &amp;lt;tt&amp;gt;-fPIC&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;-fPIC&amp;lt;/tt&amp;gt; is only necessary in certain architecture-dependent situations; [[gcc]] will let you know if it&#039;s needed, and fail out, should you provide &amp;lt;tt&amp;gt;-fpic&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;-Wl,&#039;&#039;ldopt&#039;&#039;&amp;lt;/tt&amp;gt; to pass options to &amp;lt;tt&amp;gt;ld&amp;lt;/tt&amp;gt; ([[Working with libraries#ld issues|see below]])&lt;br /&gt;
===ld issues===&lt;br /&gt;
* Generally, either the packaging system or build process needs invoke &amp;lt;tt&amp;gt;ldconfig&amp;lt;/tt&amp;gt; with suitable arguments so that the linker cache is updated.&lt;br /&gt;
* The &amp;lt;tt&amp;gt;-t&amp;lt;/tt&amp;gt; option (&amp;lt;tt&amp;gt;-Wl,-t&amp;lt;/tt&amp;gt; as a [[gcc]] option) traces input files to ld, and can be useful for debugging, as can &amp;lt;tt&amp;gt;-y &#039;&#039;symbol&#039;&#039;&amp;lt;/tt&amp;gt; to trace a given symbol&#039;s introduction and use.m&lt;br /&gt;
* &amp;lt;tt&amp;gt;soname=&#039;&#039;name&#039;&#039;&amp;lt;/tt&amp;gt; sets the internal DT_SONAME field of an [[ELF]] object&lt;br /&gt;
* &amp;lt;tt&amp;gt;-fini &#039;&#039;name&#039;&#039;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-init &#039;&#039;name&#039;&#039;&amp;lt;/tt&amp;gt; to specify alternative values for the [[ELF]] DT_INIT and DT_FINI initialization and finalization fields. By default, &amp;lt;tt&amp;gt;_init&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;_finit&amp;lt;/tt&amp;gt; are used.&lt;br /&gt;
* &amp;lt;tt&amp;gt;-rpath=&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;-R &#039;&#039;directory&#039;&#039;&amp;lt;/tt&amp;gt; on some linkers; GNU ld supports this) sets the DT_RUNPATH (DT_RPATH without new dtags) dtag, controlling [[rpaths]]&lt;br /&gt;
** &amp;lt;tt&amp;gt;--enable-new-dtags&amp;lt;/tt&amp;gt; is required to generate DT_RUNPATH or DT_FLAGS dtags specified by newer [[ELF]] systems.&lt;br /&gt;
&lt;br /&gt;
==Building with libraries==&lt;br /&gt;
* If the library supports [http://pkg-config.freedesktop.org pkg-config], and you&#039;re willing to depend on that tool being installed, proper compilation flags can be lifted from it:&lt;br /&gt;
** &amp;lt;tt&amp;gt;pkg-config --cflags &#039;&#039;pkgname&#039;&#039;&amp;lt;/tt&amp;gt; will pull the preprocessor and compilation flags&lt;br /&gt;
** &amp;lt;tt&amp;gt;pkg-config --libs &#039;&#039;pkgname&#039;&#039;&amp;lt;/tt&amp;gt; will pull the linking flags&lt;br /&gt;
** &amp;lt;tt&amp;gt;pkg-config --list-all&amp;lt;/tt&amp;gt; lists all libraries registered with &amp;lt;tt&amp;gt;pkg-config&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Runtime linking==&lt;br /&gt;
===Environment variables that control ld.so===&lt;br /&gt;
===Files that control ld.so===&lt;br /&gt;
&lt;br /&gt;
==Quality Assurance==&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;ldd&amp;lt;/tt&amp;gt;&#039;s command line options to check the library.&lt;br /&gt;
** Discover unused direct dependencies with &amp;lt;tt&amp;gt;-u -r&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](1) $ ldd -u -r /usr/lib/libapr-1.so.0&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
	&lt;br /&gt;
	/lib/librt.so.1&lt;br /&gt;
	/lib/libcrypt.so.1&lt;br /&gt;
[recombinator](1) $ ldd -u -r .out/libdank/libdank.so&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
	&lt;br /&gt;
[recombinator](1) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ld warn options, especially &amp;lt;tt&amp;gt;--warn-shared-textrel&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;--fatal-warnings&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;--warn-common&amp;lt;/tt&amp;gt;, etc&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[ELF]] / [[rpaths]]&lt;br /&gt;
* [[Interesting libraries]] / [[Glibc]] &lt;br /&gt;
* [http://wiki.linuxquestions.org/wiki/Library-related_Commands_and_Files Library] entry on [http://wiki.linuxquestions.org LQWiki]&lt;br /&gt;
* Ulrich Drepper&#039;s excellent paper, &amp;quot;[http://people.redhat.com/drepper/dsohowto.pdf How to Write Shared Libraries]&amp;quot;&lt;br /&gt;
* [http://sourceware.org/ml/binutils/2008-03/msg00162.html Gold], a new linker introduced to binutils in March 2008. As of November 2008, it&#039;s not been a part of any binutils release.&lt;br /&gt;
* Solaris 9 [http://docsun.cites.uiuc.edu/sun_docs/C/solaris_9/SUNWdev/LLM/p55.html dtag documentation] from Sun&lt;br /&gt;
* This 1997-11 [http://www.linuxfocus.org/English/November1997/article6.html LinuxFocus article] is old but pretty good&lt;br /&gt;
* The Linux Documentation Project&#039;s [http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html Shared Library HOWTO]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Wordlist&amp;diff=177</id>
		<title>Wordlist</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Wordlist&amp;diff=177"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Tumah - a state of ritual impurity in Halakha (Jewish law)&lt;br /&gt;
* condottiere - leader of plundering mercenaries&lt;br /&gt;
* sehr einfallsreich - &amp;quot;very imaginative&amp;quot;, used sarcastically -- an unimaginative but practical solution&lt;br /&gt;
* gravid - advanced with child, especially in the sense of an insect&lt;br /&gt;
* benthic - bottom-feeding, pertaining to the bottom of a body of water&lt;br /&gt;
* parusia - figure of speech by which the present tense is used instead of the past or the future&lt;br /&gt;
** as in the animated narration of past, or in the prediction of future, events.&lt;br /&gt;
* persiflage - frivolous banter; treating serious subjects frivolously; light raillery&lt;br /&gt;
* afflatus -  a strong creative impulse; divine inspiration; supernatural impulse&lt;br /&gt;
* epithalamia - a nuptial song in honor of bridge and groom&lt;br /&gt;
* sybaritic - luxurious; wanton; effeminate (from the ancient Italian city Sybaris) / sybarite - one inclined to pleasure&lt;br /&gt;
* casuistry - argumentation that is specious or excessively subtle and intended to be misleading OR&lt;br /&gt;
** moral philosophy based on the application of general ethical principles to resolve moral dilemmas&lt;br /&gt;
* lucanae - missing parts, gaps&lt;br /&gt;
* lummox - an awkward, bumbling, fat, stupid person&lt;br /&gt;
* myodesopsia - the perception of protein-based visual discrepancies (&amp;quot;floaters&amp;quot;)&lt;br /&gt;
* Vernichtungsgedanke - the doctrine of swift annihilation of enemy forces&lt;br /&gt;
* zetetic - one who seeks to resolve unknown quantities by direct investigation&lt;br /&gt;
* intercalate - to insert between others, particularly periods of time, layers of rock, or stanzas&lt;br /&gt;
* untrammeled - unhampered, unencumbered&lt;br /&gt;
* demitint - shading in a composition, that part of a painting not in full light&lt;br /&gt;
* cicatrix - the pellicle which turns white and becomes a scar&lt;br /&gt;
* anabasis - first period of a disease, journey up the coast&lt;br /&gt;
* volte-face - an about-face especially viz policy&lt;br /&gt;
* meretricious - pertaining to harlots, seeming plausible but based in deception&lt;br /&gt;
* orotund - ostentatiously lofty in style, characterized by roundness&lt;br /&gt;
* enclitic - affixed at the end so as to lose its independent accent&lt;br /&gt;
* etude - a composition designed for study en route to technical mastery&lt;br /&gt;
* morceau - a bit, a morsel, a short literary or musical composition&lt;br /&gt;
* desuetude - the cessation of use, a state of inactivity&lt;br /&gt;
* kismet - destiny, fate, the will of Allah&lt;br /&gt;
* dies funestis - a proscribed day of death&lt;br /&gt;
* moira - the deity who assigns men their fates&lt;br /&gt;
* perorate - to conclude a speech with formal recapitulation, to harangue&lt;br /&gt;
* toxophilite - a lover of archery&lt;br /&gt;
* epiphytotic - epidemic among a single type of plant over a large area&lt;br /&gt;
* larrup - to beat, thrash or flog soundly, especially with a whip&lt;br /&gt;
* peccant - sinning, guilty of transgression, morbid, corrupt&lt;br /&gt;
* sphacelate - to die, to decay, to become gangrenous&lt;br /&gt;
* sportula - a luxurious feeding; largess in gift-giving&lt;br /&gt;
* lagniappe - a trifling present, a serendipitous tip, gratuity&lt;br /&gt;
* suborn - to procure privately, to incite secretly, to cause false oath/purjury&lt;br /&gt;
* pourboire - a relatively small amount of money for services rendered&lt;br /&gt;
* emolument - profit arising from holding office&lt;br /&gt;
* guerdon - a compensation or reward&lt;br /&gt;
* wergild - the price paid for murder or another peccant crime&lt;br /&gt;
* exequatur - official recognition or permission&lt;br /&gt;
* nyctipelagic - regarding organisms that migrate into surface waters at night&lt;br /&gt;
* onychophagy - biting nails, chronically bitten-down deformed nails&lt;br /&gt;
* poliorcetics - the art of siege warfare and fortification&lt;br /&gt;
* altricial - born naked and blind and dependent on parents for food; hatchlings&lt;br /&gt;
* farraginous - Formed of various materials; mixed&lt;br /&gt;
* insessorial - Pertaining to, or having the character of, perching birds&lt;br /&gt;
* trichotillomania - tearing out one&#039;s own hair&lt;br /&gt;
* farrago - a mishmash of things&lt;br /&gt;
* obstreperous - Attended by, or making, a loud and tumultuous noise; vociferous&lt;br /&gt;
* opprobrium - a state of disgrace, odium, public dishonor&lt;br /&gt;
* Laodicean - lukewarm in religion&lt;br /&gt;
* exiguous - lean, meagre, lacking, dessicated&lt;br /&gt;
* bedizenment - the state of being dressed tawdrily; that which bedizens&lt;br /&gt;
* velleity - lowest wish, with no accompanying effort&lt;br /&gt;
* esprit d&#039; escalier - thinking of a witty rejoinder after the fact&lt;br /&gt;
* trenchant - cutting, sharp, fit to dig a trench&lt;br /&gt;
* griffonage - illegible handwriting&lt;br /&gt;
* barbouillage - cramped, dirty writing&lt;br /&gt;
* vaticinate - foretell as through prophecy&lt;br /&gt;
* graveolent - having a rank smell&lt;br /&gt;
* bien pensant - acceptance of a fashionable or newly mainstream idea without critical thought&lt;br /&gt;
* rechauffe - something made up from old material; a rehash, rewarmed food&lt;br /&gt;
* tergiversating - to use evasions, to change sides, apostacy, equivocation&lt;br /&gt;
* glochidate - having barbs and bristles&lt;br /&gt;
* funicular - dependent on the tension of a cord&lt;br /&gt;
* flocculent - covered with small flakes; flakey&lt;br /&gt;
* barbellate - being covered with stiff hairs or quils&lt;br /&gt;
* pilose - covered with soft, downy hairs&lt;br /&gt;
* moiety - that which is left behind after settlement, half &lt;br /&gt;
* phatry - people descended from a common ancestor&lt;br /&gt;
* pyx - box in which coins waiting assay or consecrated Eucharist is stored&lt;br /&gt;
* postprandial - coming after a meal&lt;br /&gt;
* barbican - defensive hole in a castle through which forward attacks were made&lt;br /&gt;
* hyperborean - frigidly cold (from the ancient Greek people of the far north)&lt;br /&gt;
* comme il faut - behaving according to custom&lt;br /&gt;
* consuetudinary - manual describing customs and practices of a sect&lt;br /&gt;
* sacerdotal - pertaining to priests and their divinely-inspired task&lt;br /&gt;
* hieratic - consecrated for holy purposes, especially performed by priests&lt;br /&gt;
* insufflate - to bring a powder into the nose&lt;br /&gt;
* rodomontade - vain, empty boasting&lt;br /&gt;
* quincunx - a pentuple arranged at points and middle of a rectangle&lt;br /&gt;
* peripatetic - pertaining to walking about in the manner of Aristotle @ Lyceum&lt;br /&gt;
* armamentarium - the collection of equipment and methods used in medicine&lt;br /&gt;
* entrepot - a depository for goods on which import is not paid&lt;br /&gt;
* nosism - the use of &#039;we&#039; in referring to oneself&lt;br /&gt;
* sprachgefühl - feeling for language; an instinctive appreciation for words and idioms that are linguistically appropriate&lt;br /&gt;
* anodyne - anything taken to soothe disturbed feelings&lt;br /&gt;
* innominate - having no proper name when one would be expected&lt;br /&gt;
* corsucate - to glitter in flashes&lt;br /&gt;
* eutectic - of greatest fusibility: an alloy whose melting point is lower than that of any other alloy of the same ingredients.&lt;br /&gt;
* lettre-fertis - &#039;man marked by letters&#039; - pretender to learning&lt;br /&gt;
* contumely - a debasement ; a rudeness and haughtiness&lt;br /&gt;
* odalisque - a female slave or concubine in the harem of the Turkish sultan&lt;br /&gt;
* brocade - silk stuff woven with gold ornamentation&lt;br /&gt;
* hypocoristic - a lesser name of the given name&lt;br /&gt;
* saccadic - jumpy like the movements of an eye&lt;br /&gt;
* ecphrasis - a sudden intense, self-contained verbal summary of an issue or art&lt;br /&gt;
* amanuensis - one who is employed to take diction or copy another&#039;s words&lt;br /&gt;
* tergiversate - to use ambiguities and evasions, to equivocate, or to change sides/apostatize&lt;br /&gt;
* autonomasy - use of a common word to refer to a particular: &amp;quot;gone to town&amp;quot; for &amp;quot;gone to Atlanta&amp;quot;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=WORDHORDE&amp;diff=175</id>
		<title>WORDHORDE</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=WORDHORDE&amp;diff=175"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have far too much incoming information, all the time. This torrent is only likely to increase. How best to organize it? The WORDHORDE, inspired by William S. Burroughs&#039;s [http://en.wikipedia.org/wiki/The_Word_Hoard Word Hoard], is my ongoing attempt. Requirements, or at least desired properties, of WORDHORDE include:&lt;br /&gt;
* spooling to a personal store, using NNTP or perhaps Maildir or even IMAP&lt;br /&gt;
** whatever backend is used, it must support speedy ncurses-based clients (like [[slrn]] and [[mutt]]) and scripts&lt;br /&gt;
** further UI must address Bayesian searching, clustering-based searching, etc...&lt;br /&gt;
** an actual database might be desirable, as opposed to flat files ala an NNTP spool&lt;br /&gt;
* permanent personal archival of all incoming data (including spam, phishing, malware etc for later/long-term analysis)&lt;br /&gt;
* being a good netizen -- event-driven mechanisms when possible, optimal bulk transfers, etc&lt;br /&gt;
* sources/dests must include RSS feeds, NNTP, mailing lists, personal mail, IM history&lt;br /&gt;
* full bidirectional gateway capabilites -- post NNTP and have it turned into an IM, a mail, a phone call voiced by &amp;lt;tt&amp;gt;festival(1)&amp;lt;/tt&amp;gt;, a blog comment, etc...&lt;br /&gt;
** needs address protected poll-based feeds: [http://dankamongmen.livejournal.com LJ flist], [http://lwn.net LWN subscription], etc...&lt;br /&gt;
&lt;br /&gt;
== HTTP ==&lt;br /&gt;
=== RSS ===&lt;br /&gt;
==== Mail Gateways ====&lt;br /&gt;
* [http://packages.debian.org/rss2email rss2email]: &amp;lt;tt&amp;gt;r2e&amp;lt;/tt&amp;gt; binary seems pretty simple for turning RSS into SMTP.&lt;br /&gt;
** &amp;lt;tt&amp;gt;r2e new defaultmail&amp;lt;/tt&amp;gt;: create a new r2e database, with default email target defaultmail&lt;br /&gt;
** &amp;lt;tt&amp;gt;r2e add url optmail&amp;lt;/tt&amp;gt;: add a feed to the database by URL, with an optional email target optmail&lt;br /&gt;
** &amp;lt;tt&amp;gt;r2e run&amp;lt;/tt&amp;gt;: scan for new articles; mail them. designed for cronjob use, it seems.&lt;br /&gt;
&lt;br /&gt;
==== Console Readers ====&lt;br /&gt;
* [http://packages.debian.org/olive olive] (Olive r1 01b7): attractive reader, imports [[OPML]] directly&lt;br /&gt;
** Add a new feed with ^A, edit with ^E, options with ^O&lt;br /&gt;
** Not very configurable, kind of slow&lt;br /&gt;
* [http://packages.debian.org/nrss nrss]&lt;br /&gt;
* [http://packages.debian.org/snownews snownews]&lt;br /&gt;
* [http://packages.debian.org/rsstail rsstail]&lt;br /&gt;
* [http://packages.debian.org/newsbeuter newsbeuter]&lt;br /&gt;
&lt;br /&gt;
== NNTP ==&lt;br /&gt;
=== Standards ===&lt;br /&gt;
* RFC 977 (1986), &amp;quot;Network News Transfer Protocol: A Proposed Standard for the Stream-Based Transmission of News&amp;quot;&lt;br /&gt;
* RFC 1036 (1987), &amp;quot;Standard for Interchange of USENET Messages&amp;quot;&lt;br /&gt;
* RFC 2980 (2000), &amp;quot;Common NNTP Extensions&amp;quot;&lt;br /&gt;
* RFC 3977 (2006), &amp;quot;Network News Transfer Protocol (NNTP)&amp;quot;&lt;br /&gt;
* This [http://www.tin.org/docs.html tin] page seems to be kept up-to-date&lt;br /&gt;
&lt;br /&gt;
=== Servers ===&lt;br /&gt;
* [http://packages.debian.org/leafnode leadnode] - http://leafnode.sourceforge.net/&lt;br /&gt;
** Perhaps the only actively-developed open, sane NNTP server?&lt;br /&gt;
** Last stable release 2007-03-17 (1.11.6), release candidate 2008-01-25 (1.11.7.rc1)&lt;br /&gt;
* [http://packages.debian.org/sn sn] - http://patrik.infa.fi/sn/&lt;br /&gt;
** Last release 2004-04-10&lt;br /&gt;
* [http://packages.debian.org/papercut papercut] - http://pessoal.org/papercut/&lt;br /&gt;
** Last release 2005-04-21, primarily an NNTP wrapper around web forums&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [http://packages.debian.org/nglister nglister] - list newsgroups / stats from an NNTP server&lt;br /&gt;
* [http://packages.debian.org/postnews postnews] - post an article from stdin to an NNTP server&lt;br /&gt;
&lt;br /&gt;
=== Web Gateways ===&lt;br /&gt;
* [http://www.aei.mpg.de/~peekas/w3news/ W3news] (NNTP/HTTP) (no debian package)&lt;br /&gt;
* [http://sourceforge.net/projects/web-imap/ WING] (NNTP/IMAP) (no debian package)&lt;br /&gt;
* [http://amrhein.eu/newsportal NewsPortal] (NNTP/HTTP) (no debian package)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=VoIP&amp;diff=173</id>
		<title>VoIP</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=VoIP&amp;diff=173"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==History==&lt;br /&gt;
* 1942 - [http://en.wikipedia.org/wiki/SIGSALY SIGSALY] system is used for secure voice communications, introducing PCM and spectrum spreading&lt;br /&gt;
* 1972 - [http://www.itu.int/rec/recommendation.asp?type=folders&amp;amp;lang=e&amp;amp;parent=T-REC-G.711 ITU-T G.711] audio companding standard&lt;br /&gt;
* 1977 - [http://tools.ietf.org/html/rfc741 RFC 741], the Network Voice Protocol&lt;br /&gt;
* 1990 - [http://www.ietf.org/rfc/rfc1183.txt RFC 1183] introduces the [[VoIP#ISDN record|ISDN record]]&lt;br /&gt;
&lt;br /&gt;
==Content==&lt;br /&gt;
===Voice===&lt;br /&gt;
====Encodings====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Linear_predictive_coding Linear Predictive (LPC)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Continuously_variable_slope_delta_modulation Continuously Variable Slope Data Modulation (CVSDM)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Pulse-code_modulation Pulse Code Modulation (PCM)] (used in [http://en.wikipedia.org/wiki/G.711 G.711] and many others)&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Companding Companding] mitigates the detrimental effects of a channel with limited dynamic range&lt;br /&gt;
===Modem/Digital FAX===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/ITU-T_V-Series_Recommendations ITU-T V-Series] recommendations&lt;br /&gt;
* Group 3 FAX -- ITU-T T.4 + ITU-T T.30 (interoperable with Group 2)&lt;br /&gt;
* Group 4 FAX -- ISDN-oriented, ITU-T T.6, T.563, T.503, T.521, T.6, T.62, T.70, T.72, T.411 to T.41&lt;br /&gt;
&lt;br /&gt;
===Analog FAX===&lt;br /&gt;
* Group 1 -- ITU-T T.2&lt;br /&gt;
* Group 2 -- ITU-T T.3 + ITU-T T.30 (interoperable with Group 3)&lt;br /&gt;
&lt;br /&gt;
==POTS==&lt;br /&gt;
Plain ol&#039; Telephone Service. At the user level, analog telephones connect to telco Network Interfaces (NIs) and thus the [http://en.wikipedia.org/wiki/Telephone_exchange telephone exchanges] making up the [http://en.wikipedia.org/wiki/PSTN Public Switched Telephone Network], most commonly via [http://en.wikipedia.org/wiki/Twisted_pair twisted pair] cable, this most commonly terminated via [http://en.wikipedia.org/wiki/RJ11,_RJ14,_RJ25 Registered Jacks 11, 14 and 25] (handsets and the like use [http://en.wikipedia.org/wiki/4P4C 4P4C] terminators, with no Registered Jack identifier). Connection of an analog telephone to a digital network is performed via an Analog Telephony Adapter (ATA), implementing one or more Foreign Exchange Stations (FXS). Devices on the PSTN use [http://en.wikipedia.org/wiki/E.164 E.163/E.164] addresses, also known as &#039;+1 telephone numbers&#039;; these can further reduce to, for instance, [[http://en.wikipedia.org/wiki/North_American_Numbering_Plan#Current_system NANP Numbers]] (3-3-4-style North American numbers). Unification of the E.163/E.164 and IPv4/IPv6 address spaces is attempted via [http://en.wikipedia.org/wiki/ENUM tElephone NUmber Mapping (ENUM)] and NAPTR records.&lt;br /&gt;
&lt;br /&gt;
The PSTN is implemented atop [http://en.wikipedia.org/wiki/Carrier_system carrier systems] such as [http://en.wikipedia.org/wiki/T-carrier T-Carrier] (North America, Japan, Korea) and [http://en.wikipedia.org/wiki/E-carrier E-Carrier] (most everywhere else). These carrier systems specify the digital transmission hierarchy in terms of circuits and the multiplexing strategies used to aggregate and disaggregate circuits.&lt;br /&gt;
&lt;br /&gt;
Between the customer and the telco lies the [http://en.wikipedia.org/wiki/Demarcation_point Point of Demarcation] (aka MPOE, Minimum Point Of Entry). The customer owns wiring and appliances behind the MPOE; telcos (ILECs) and common carriers (CLECs) own everything above (switches/NIs are housed in CO (when a CLEC rents space from the ILEC, this is a POP)). In the United States, demarcation points are wiring junctions produced under the regulating auspices of [http://www.part68.org/ FCC 47 C.F.R. Part 68]. The customer may freely implement either or both of:&lt;br /&gt;
* Extension telephones -- multiple phones wired to the same physical circuit and numbers&lt;br /&gt;
* Telephone extensions -- internal lines using a PBX or key system&lt;br /&gt;
===PBXs===&lt;br /&gt;
* Circuits to the telco are &amp;quot;trunk lines&amp;quot;, internal circuits are &amp;quot;extension lines&amp;quot;&lt;br /&gt;
* Require a Direct Dial Central Office (DDCO) prefix to select an external line&lt;br /&gt;
===Key Systems===&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;line&amp;quot; is the combination of physical circuitry and a number by which equipment might be addressed and billed.&lt;br /&gt;
&lt;br /&gt;
===Signaling===&lt;br /&gt;
Signaling within the PSTN is accomplished via the use of tones. Within the [http://en.wikipedia.org/wiki/NANP North American Numbering Plan (NANP)], these are specified by the [http://en.wikipedia.org/wiki/Precise_Tone_Plan Precise Tone Plan]:&lt;br /&gt;
* dial tone, a continuous tone having frequencies of 350 and 440Hz at a level of −13dBm&lt;br /&gt;
* ringback tone, frequencies of 440 and 480Hz at a level of −19dBm and a cadence of 2 seconds ON and 4 seconds OFF&lt;br /&gt;
* busy tone, frequencies of 480 and 620Hz at a level of −24dBm and a cadence of half a second ON and half a second OFF&lt;br /&gt;
* reorder tone (also called &amp;quot;fast busy tone&amp;quot;), a busy tone with a cadence of 0.25 of a second ON and 0.25 of a second OFF&lt;br /&gt;
&lt;br /&gt;
==Address Resolution==&lt;br /&gt;
===ISDN record===&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc1183.txt RFC 1183], &amp;quot;New DNS RR Definitions&amp;quot;, defines the ISDN record:&lt;br /&gt;
&amp;lt;pre&amp;gt;3.2. The ISDN RR&lt;br /&gt;
&lt;br /&gt;
   The ISDN RR is defined with mnemonic ISDN and type code 20 (decimal).&lt;br /&gt;
&lt;br /&gt;
   An ISDN (Integrated Service Digital Network) number is simply a&lt;br /&gt;
   telephone number.  The intent of the members of the CCITT is to&lt;br /&gt;
   upgrade all telephone and data network service to a common service.&lt;br /&gt;
&lt;br /&gt;
   The numbering plan (E.163/E.164) is the same as the familiar&lt;br /&gt;
   international plan for POTS (an un-official acronym, meaning Plain&lt;br /&gt;
   Old Telephone Service).  In E.166, CCITT says &amp;quot;An E.163/E.164&lt;br /&gt;
   telephony subscriber may become an ISDN subscriber without a number&lt;br /&gt;
   change.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   ISDN has the following format:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;owner&amp;gt; &amp;lt;ttl&amp;gt; &amp;lt;class&amp;gt; ISDN &amp;lt;ISDN-address&amp;gt; &amp;lt;sa&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   The &amp;lt;ISDN-address&amp;gt; field is required; &amp;lt;sa&amp;gt; is optional.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;ISDN-address&amp;gt; identifies the ISDN number of &amp;lt;owner&amp;gt; and DDI (Direct&lt;br /&gt;
   Dial In) if any, as defined by E.164 [8] and E.163 [7], the ISDN and&lt;br /&gt;
   PSTN (Public Switched Telephone Network) numbering plan.  E.163&lt;br /&gt;
   defines the country codes, and E.164 the form of the addresses.  Its&lt;br /&gt;
   format in master files is a &amp;lt;character-string&amp;gt; syntactically&lt;br /&gt;
   identical to that used in TXT and HINFO.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;sa&amp;gt; specifies the subaddress (SA).  The format of &amp;lt;sa&amp;gt; in master&lt;br /&gt;
   files is a &amp;lt;character-string&amp;gt; syntactically identical to that used in&lt;br /&gt;
   TXT and HINFO.&lt;br /&gt;
&lt;br /&gt;
   The format of ISDN is class insensitive.  ISDN RRs cause no&lt;br /&gt;
   additional section processing.&lt;br /&gt;
&lt;br /&gt;
   The &amp;lt;ISDN-address&amp;gt; is a string of characters, normally decimal&lt;br /&gt;
   digits, beginning with the E.163 country code and ending with the DDI&lt;br /&gt;
   if any.  Note that ISDN, in Q.931, permits any IA5 character in the&lt;br /&gt;
&lt;br /&gt;
   general case.&lt;br /&gt;
&lt;br /&gt;
   The &amp;lt;sa&amp;gt; is a string of hexadecimal digits.  For digits 0-9, the&lt;br /&gt;
   concrete encoding in the Q.931 call setup information element is&lt;br /&gt;
   identical to BCD.&lt;br /&gt;
&lt;br /&gt;
   For example:&lt;br /&gt;
&lt;br /&gt;
   Relay.Prime.COM.   IN   ISDN      150862028003217&lt;br /&gt;
   sh.Prime.COM.      IN   ISDN      150862028003217 004&lt;br /&gt;
&lt;br /&gt;
   (Note: &amp;quot;1&amp;quot; is the country code for the North American Integrated&lt;br /&gt;
   Numbering Area, i.e., the system of &amp;quot;area codes&amp;quot; familiar to people&lt;br /&gt;
   in those countries.)&lt;br /&gt;
&lt;br /&gt;
   The RR data is the ASCII representation of the digits.  It is encoded&lt;br /&gt;
   as one or two &amp;lt;character-string&amp;gt;s, i.e., count followed by&lt;br /&gt;
   characters.&lt;br /&gt;
&lt;br /&gt;
   CCITT recommendation E.166 [9] defines prefix escape codes for the&lt;br /&gt;
   representation of ISDN (E.163/E.164) addresses in X.121, and PSDN&lt;br /&gt;
   (X.121) addresses in E.164.  It specifies that the exact codes are a&lt;br /&gt;
   &amp;quot;national matter&amp;quot;, i.e., different on different networks.  A host&lt;br /&gt;
   connected to the ISDN may be able to use both the X25 and ISDN&lt;br /&gt;
   addresses, with the local prefix added.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synonyms==&lt;br /&gt;
* Station == Phone&lt;br /&gt;
* Switch == Exchange&lt;br /&gt;
* Network Interface == Terminal Attachment == MPOE&lt;br /&gt;
* Local Loop == Subscriber Line == Last Mile (wrt PSTN)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://www.itu.int/rec/T-REC-E.164/en E.164 specifications] at the International Telecommunications Union (ITU), aka &amp;quot;Numbering Plan for the ISDN Era&amp;quot;&lt;br /&gt;
* [http://www.its.bldrdoc.gov/fs-1037/fs-1037c.htm Federal Standard 1037C] Telecommunications: Glossary of Telecommunication Terms (superseded by 2001&#039;s ANSI T1.523-2001)&lt;br /&gt;
* A good glossary of [http://www.arcelect.com/RJ_Jack_Glossary.htm Registered Jacks 11 through 48]&lt;br /&gt;
* [http://www.tech-faq.com/telephone-tone-frequencies.shtml Tone Frequencies] from tech-faq.com&lt;br /&gt;
* [http://www.nanpa.com/ NANPA], the North American Numbering Plan Administration&lt;br /&gt;
* [http://www.voip-info.org/ VoIP-info.org]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Visualinfo_output&amp;diff=171</id>
		<title>Visualinfo output</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Visualinfo_output&amp;diff=171"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;[recombinator](0) $ visualinfo &lt;br /&gt;
OpenGL vendor string: Tungsten Graphics, Inc&lt;br /&gt;
OpenGL renderer string: Mesa DRI Intel(R) 965G 4.1.3002&lt;br /&gt;
OpenGL version string: 1.4 Mesa 7.0.4&lt;br /&gt;
OpenGL extensions (GL_): &lt;br /&gt;
    GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,&lt;br /&gt;
    GL_ARB_fragment_shader, GL_ARB_imaging, GL_ARB_multisample,&lt;br /&gt;
    GL_ARB_multitexture, GL_ARB_point_parameters, GL_ARB_point_sprite,&lt;br /&gt;
    GL_ARB_shader_objects, GL_ARB_shading_language_100,&lt;br /&gt;
    GL_ARB_shading_language_120, GL_ARB_shadow, GL_ARB_texture_border_clamp,&lt;br /&gt;
    GL_ARB_texture_compression, GL_ARB_texture_cube_map, GL_ARB_texture_env_add,&lt;br /&gt;
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,&lt;br /&gt;
    GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,&lt;br /&gt;
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,&lt;br /&gt;
    GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program,&lt;br /&gt;
    GL_ARB_vertex_shader, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra,&lt;br /&gt;
    GL_EXT_blend_color, GL_EXT_blend_equation_separate,&lt;br /&gt;
    GL_EXT_blend_func_separate, GL_EXT_blend_logic_op, GL_EXT_blend_minmax,&lt;br /&gt;
    GL_EXT_blend_subtract, GL_EXT_clip_volume_hint, GL_EXT_cull_vertex,&lt;br /&gt;
    GL_EXT_compiled_vertex_array, GL_EXT_convolution, GL_EXT_copy_texture,&lt;br /&gt;
    GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_histogram,&lt;br /&gt;
    GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels, GL_EXT_point_parameters,&lt;br /&gt;
    GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_secondary_color,&lt;br /&gt;
    GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,&lt;br /&gt;
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,&lt;br /&gt;
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,&lt;br /&gt;
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,&lt;br /&gt;
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,&lt;br /&gt;
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,&lt;br /&gt;
    GL_EXT_vertex_array, GL_3DFX_texture_compression_FXT1,&lt;br /&gt;
    GL_APPLE_client_storage, GL_APPLE_packed_pixels,&lt;br /&gt;
    GL_ATI_blend_equation_separate, GL_ATI_separate_stencil,&lt;br /&gt;
    GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,&lt;br /&gt;
    GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,&lt;br /&gt;
    GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent,&lt;br /&gt;
    GL_NV_point_sprite, GL_NV_texture_rectangle, GL_NV_texgen_reflection,&lt;br /&gt;
    GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,&lt;br /&gt;
    GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,&lt;br /&gt;
    GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SGIX_depth_texture,&lt;br /&gt;
    GL_SUN_multi_draw_arrays.&lt;br /&gt;
GLU version string: 1.3&lt;br /&gt;
GLU extensions (GLU_): &lt;br /&gt;
    GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess.&lt;br /&gt;
GLX extensions (GLX_): &lt;br /&gt;
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,&lt;br /&gt;
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,&lt;br /&gt;
    GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,&lt;br /&gt;
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,&lt;br /&gt;
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group.&lt;br /&gt;
 +-----+-------------------------+-----------------+----------+-------------+-------+------+&lt;br /&gt;
 |     |        visual           |      color      | ax dp st |    accum    |   ms  |  cav |&lt;br /&gt;
 |  id | tp xr cl fm db st lv xp |  sz  r  g  b  a | bf th cl | r  g  b  a  | ns  b |  eat |&lt;br /&gt;
 +-----+-------------------------+-----------------+----------+-------------+-------+------+&lt;br /&gt;
 |  35 | wn  y tc  i  y  .  0  . |  32  8  8  8  8 |  .  .  . |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  36 | wn  y tc  i  .  .  0  . |  32  8  8  8  8 |  .  .  . |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  37 | wn  y tc  i  y  .  0  . |  32  8  8  8  8 |  . 24  8 |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  38 | wn  y tc  i  .  .  0  . |  32  8  8  8  8 |  . 24  8 |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  39 | wn  y tc  i  y  .  0  . |  32  8  8  8  8 |  .  .  . | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  40 | wn  y tc  i  .  .  0  . |  32  8  8  8  8 |  .  .  . | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  41 | wn  y tc  i  y  .  0  . |  32  8  8  8  8 |  . 24  8 | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  42 | wn  y tc  i  .  .  0  . |  32  8  8  8  8 |  . 24  8 | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  43 | wn  y dc  i  y  .  0  . |  32  8  8  8  8 |  .  .  . |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  44 | wn  y dc  i  .  .  0  . |  32  8  8  8  8 |  .  .  . |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  45 | wn  y dc  i  y  .  0  . |  32  8  8  8  8 |  . 24  8 |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  46 | wn  y dc  i  .  .  0  . |  32  8  8  8  8 |  . 24  8 |  .  .  .  . |  0  0 | none |&lt;br /&gt;
 |  47 | wn  y dc  i  y  .  0  . |  32  8  8  8  8 |  .  .  . | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  48 | wn  y dc  i  .  .  0  . |  32  8  8  8  8 |  .  .  . | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  49 | wn  y dc  i  y  .  0  . |  32  8  8  8  8 |  . 24  8 | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 |  50 | wn  y dc  i  .  .  0  . |  32  8  8  8  8 |  . 24  8 | 16 16 16 16 |  0  0 | slow |&lt;br /&gt;
 | 126 | wn  y tc  i  .  .  0  . |  32  8  8  8  8 |  .  .  . |  .  .  .  . |  0  0 | ncft |&lt;br /&gt;
 +-----+-------------------------+-----------------+----------+-------------+-------+------+&lt;br /&gt;
 |  id | tp xr cl fm db st lv xp |  sz  r  g  b  a | bf th cl | r  g  b  a  | ns  b |  eat |&lt;br /&gt;
 |     |        visual           |      color      | ax dp st |    accum    |   ms  |  cav |&lt;br /&gt;
 +-----+-------------------------+-----------------+----------+-------------+-------+------+&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Vim&amp;diff=169</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Vim&amp;diff=169"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information on entering characters beyond the current keymap can be found on the [[Using_Unicode#vim|Using Unicode]] page.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Using_Unicode&amp;diff=167</id>
		<title>Using Unicode</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Using_Unicode&amp;diff=167"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Good references include:&lt;br /&gt;
* The utf8(7) and unicode(7) pages from the Linux man pages&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc3629.txt RFC 3829], &amp;quot;UTF-8, a transformation format of ISO 10646&amp;quot;&lt;br /&gt;
* [http://www.cl.cam.ac.uk/~mgk25/unicode.html UTF-8 FAQ for Linux]&lt;br /&gt;
* [http://www.linux.org/docs/ldp/howto/Unicode-HOWTO.html The Linux Unicode HOWTO]&lt;br /&gt;
* [http://www.jw-stumpel.nl/stestu.html Multilingual text on Linux]&lt;br /&gt;
* The Unicode [http://www.unicode.org/standard/standard.html Book], version 5.0 (the web-only 5.1.0 standard supersedes this) is one of the most beautifully-constructed books I&#039;ve ever seen, and well worth the price.&lt;br /&gt;
Unicode 5.0 corresponds to ISO 10646:2003, including amendments 1–3. Unicodes since 2.0 are backwards-compatible -- no characters are removed or replaced in new versions, only added. ISO 14651 defines string sorting order. RFC 3629 defines UTF-8, an [[ASCII]]-compatible Unicode encoding, usable in any context designed for [[ASCII]] but insensitive to characters&#039; meanings.&lt;br /&gt;
&lt;br /&gt;
== [[libc]] ==&lt;br /&gt;
* Ensure the proper locales are present, and being regenerated on package updates. &amp;lt;tt&amp;gt;locale -a&amp;lt;/tt&amp;gt; will list all available locales. You want en_US.utf8 or its regional equivalent: &amp;lt;tt&amp;gt;locale -a | grep utf8$&amp;lt;/tt&amp;gt; should generate output. On [[Debian]], run &amp;lt;tt&amp;gt;dpkg-reconfigure locales&amp;lt;/tt&amp;gt; to select generated locales and rebuild the locale database (it uses [[libc|libc&#039;s]] &amp;lt;tt&amp;gt;localedef&amp;lt;/tt&amp;gt;).&lt;br /&gt;
* Ensure that you&#039;re exposing a UTF-8-enabled locale to setlocale(3) and friends: &amp;lt;tt&amp;gt;LANG=en_US.UTF-8&amp;lt;/tt&amp;gt; should be exported in your environment (the various LC_* variables can override LANG for certain subsets of context, while LC_ALL overrides other LC_* values). On [[Debian]], configure /etc/default/locale via &amp;lt;tt&amp;gt;dpkg-reconfigure locales&amp;lt;/tt&amp;gt; (which subsequently drives &amp;lt;tt&amp;gt;update-locale&amp;lt;/tt&amp;gt; from the same package). This file is sourced by pam configs and /etc/init.d files.&lt;br /&gt;
&lt;br /&gt;
== filesystems ==&lt;br /&gt;
ext3 and friends use octets for filenames; it is up to applications to interpret them. For VFAT, ISO9660 and some others:&lt;br /&gt;
* Ensure the UTF-8 module is being built (CONFIG_NLS_UTF8)&lt;br /&gt;
* Ensure the &amp;quot;Default NLS Language&amp;quot; is &amp;quot;utf8&amp;quot; in the [[kernel config]] (CONFIG_NLS_DEFAULT)&lt;br /&gt;
** &amp;lt;tt&amp;gt;nls=utf8&amp;lt;/tt&amp;gt; as an option to &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; will work on a per-filesystem basis&lt;br /&gt;
&lt;br /&gt;
== [[Consoles|Console]] ==&lt;br /&gt;
* Check whether UTF-8 mode is being used in the terminal driver via &amp;lt;tt&amp;gt;vt-is-utf8&amp;lt;/tt&amp;gt; from [http://packages.debian.org/sid/console-tools console-tools].&lt;br /&gt;
* Set it with &amp;lt;tt&amp;gt;unicode_start&amp;lt;/tt&amp;gt;, also from [http://packages.debian.org/sid/console-tools console-tools].&lt;br /&gt;
&lt;br /&gt;
== Application details ==&lt;br /&gt;
=== [[vim]] ===&lt;br /&gt;
* In Insert mode, Ctrl-K can be used to enter characters by digraph (see loaded digraphs with :dig). Classes of digraphs share a common suffix character:&lt;br /&gt;
*** Greek: * (thus Ctrl-K, a* generates α, Ctrl-K, m* generates μ, etc)&lt;br /&gt;
*** [http://en.wikipedia.org/wiki/Grave_accent Grave accent]: ! ( a! -&amp;gt; à, A! -&amp;gt; À )&lt;br /&gt;
*** [http://en.wikipedia.org/wiki/Acute_accent Acute/sharp accent]: &#039; ( a&#039; -&amp;gt; á, A&#039; -&amp;gt; Á )&lt;br /&gt;
* In Insert mode, Ctrl-V starts a reference input sequence. Use the Unicode decimal codepoint. Examples:&lt;br /&gt;
** Ctrl-V, 227 generates ã&lt;br /&gt;
** Ctrl-V, 167 generates §&lt;br /&gt;
&lt;br /&gt;
== [[X]] ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Updating_FreeBSD&amp;diff=165</id>
		<title>Updating FreeBSD</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Updating_FreeBSD&amp;diff=165"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There&#039;s four parts of a FreeBSD machine which must be individually maintained: base system sources (/usr/src), the ports collection (/usr/ports), the installed system (/), and the installed ports (/usr/local).&lt;br /&gt;
&lt;br /&gt;
==Tools referenced, and where to get them==&lt;br /&gt;
*cvs: base system&lt;br /&gt;
*cvsup: net/cvsup or net/cvsup-without-gui&lt;br /&gt;
*portsnap: ports-mgmt/portsnap (base system in 5-RELENG+)&lt;br /&gt;
*portupgrade: ports-mgmt/portupgrade&lt;br /&gt;
*portsclean: base system&lt;br /&gt;
&lt;br /&gt;
==Base system sources==&lt;br /&gt;
The installer (/stand/sysinstall) can unpack the src distribution wholesale or piecemeal (see &amp;quot;source collections&amp;quot; below) into your /usr/src. cvsup(1) or cvs(1) can be used to both check out base system sources and keep them up-to-date. CVS is part of the base FreeBSD system, whereas CVSup is a port. Otherwise, however, CVSup is generally superior; it is faster, generates less network load and disk I/O, and understands source collections.&lt;br /&gt;
&lt;br /&gt;
The base system sources are broken up into source collections:&lt;br /&gt;
*src-all: The master source collection, it includes all sources for the base system.&lt;br /&gt;
&lt;br /&gt;
==Ports collection==&lt;br /&gt;
The installer (/stand/sysinstall) can unpack the ports distribution into /usr/ports. portsnap(8), cvsup(1) and cvs(1) can all be used to both check out the ports collection and keep it up-to-date. CVS is part of the base FreeBSD system, whereas CVSup and portsnap are ports. Of these, portsnap is preferred, due to its superior security.&lt;br /&gt;
&lt;br /&gt;
===Portsnap===&lt;br /&gt;
The first time portsnap(8) is run, use the following method: &amp;lt;tt&amp;gt;portsnap fetch extract&amp;lt;/tt&amp;gt; (on older versions of portsnap, you&#039;ll also need append a configuration file argument via &amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;; the default works just fine for most cases, ie &amp;lt;tt&amp;gt;portsnap fetch extract -f /usr/local/etc/portsnap.conf.sample&amp;lt;/tt&amp;gt;). Following this (time-consuming) run, &amp;lt;tt&amp;gt;portsnap fetch upgrade&amp;lt;/tt&amp;gt; is sufficient to pull in package updates (the same rule about &amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; applies).&lt;br /&gt;
&lt;br /&gt;
===Cvsup===&lt;br /&gt;
To use the less preferred cvsup method (madness, because it is less secure and uses 10 times the bandwidth of portsnap) create a file /usr/local/etc/ports-supfile with the following contents (based off /usr/share/examples/cvsup/ports-supfile):&lt;br /&gt;
&amp;lt;pre&amp;gt;* default base=/var/db&lt;br /&gt;
* default prefix=/usr&lt;br /&gt;
* default release=cvs tag=.&lt;br /&gt;
* default delete use-rel-suffix&lt;br /&gt;
* default compress&lt;br /&gt;
ports-all&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then run &amp;lt;tt&amp;gt;cvsup -g -L 2 /usr/local/etc/ports-supfile&amp;lt;/tt&amp;gt; to update the Ports Collection.&lt;br /&gt;
&lt;br /&gt;
===FreeBSD-4.x gotcha===&lt;br /&gt;
The most recent FreeBSD ports collections will not work on FreeBSD 4.x. You will need to check out something older than 2007. No method is known to specify this for portsnap(8), but a working methodology for cvsup under 4.10 is to add &amp;lt;tt&amp;gt;*default date=2006.12.31.00.00.00&amp;lt;/tt&amp;gt; to your ports-supfile.&lt;br /&gt;
&lt;br /&gt;
==Installed system==&lt;br /&gt;
Configure /etc/make.conf, based off /etc/defaults/make.conf and the make.conf(5) man page.&lt;br /&gt;
&lt;br /&gt;
*make buildworld&lt;br /&gt;
*make buildkernel&lt;br /&gt;
*make installkernel&lt;br /&gt;
*reboot&lt;br /&gt;
*mergemaster -p&lt;br /&gt;
*make installworld&lt;br /&gt;
*make delete-old&lt;br /&gt;
*mergemaster&lt;br /&gt;
*reboot&lt;br /&gt;
*make delete-old-libs&lt;br /&gt;
&lt;br /&gt;
Consult the toplevel Makefile and the FreeBSD Handbook for more information.&lt;br /&gt;
&lt;br /&gt;
==Installed ports==&lt;br /&gt;
The list of ports installed on the machine can be displayed with pkg_info. Ports generally confine themselves to /usr/local. After syncing the ports collection, installed ports can be rebuilt and upgraded automatically using portupgrade(1) or the make(1) mechanism of the ports collection. Use portsclean -L to clean old, duplicate and/or orphaned shared libraries. I typically use &amp;lt;tt&amp;gt;portupgrade -uap&amp;lt;/tt&amp;gt; to rebuild all ports, and make new packages as well.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Udev&amp;diff=163</id>
		<title>Udev</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Udev&amp;diff=163"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;udev is introduced by the sparse website at http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html. It extended, superseded and utterly replaced [http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html devfs], a turn-of-the-century abortion birthed by [http://www.atnf.csiro.au/people/rgooch/linux/kernel-patches.html Richard Gooch] (for details on this gory struggle (long since settled in udev&#039;s favor), see Greg Kroah-Hartman&#039;s whitepaper, &#039;[http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs udev and devfs - the final word]&#039;. It implements device naming for Linux systems -- that is, maps kernel hardware entities to userspace keys. Furthermore, it emits low-level [[DBus]] messages; clients such as [[HAL]] can listen to these events and perform arbitrarily complex actions. udev is made up of both a kernel component (included in 2.6 Linux kernels; 2.6.19 is the minimum recommended version as of this writing (see the [http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=README kernel documentation])) and a userspace daemon (&amp;lt;tt&amp;gt;udevd&amp;lt;/tt&amp;gt;) plus its configuration.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Tunneling&amp;diff=161</id>
		<title>Tunneling</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Tunneling&amp;diff=161"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SSH==&lt;br /&gt;
This information largely pertains to [[OpenSSH]], although other SSH agents ought theoretically be able to implement similar functionality.&lt;br /&gt;
* Individual TCP ports can be forwarded using the &amp;lt;tt&amp;gt;-L&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-R&amp;lt;/tt&amp;gt; options. The latter involves an RFC 4254 &amp;quot;tcpip-forward&amp;quot;-type request.&lt;br /&gt;
** Set the &amp;lt;tt&amp;gt;ExitOnForwardFailure&amp;lt;/tt&amp;gt; configuration directive to &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt; to reliably detect forwarding failures&lt;br /&gt;
* X11 can be forwarded using the &amp;lt;tt&amp;gt;-X&amp;lt;/tt&amp;gt; option. This will involve &amp;quot;x11&amp;quot;-type requests.&lt;br /&gt;
* Arbitrary Ethernet (&amp;quot;ethernet&amp;quot;) or IP (&amp;quot;point-to-point&amp;quot;) tunnel devices can be forwarded with &amp;lt;tt&amp;gt;-w&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** The remote side must have set &amp;lt;tt&amp;gt;PermitTunnel&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt; or a value matching the configured &amp;lt;tt&amp;gt;TunnelDevice&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
==OpenVPN==&lt;br /&gt;
&lt;br /&gt;
==Steganography==&lt;br /&gt;
* [http://packages.debian.org/unstable/main/snow snow] tunnels octets under trailing whitespace in ASCII lines&lt;br /&gt;
&lt;br /&gt;
==Special-purpose tools==&lt;br /&gt;
* [http://packages.debian.org/search?keywords=udptunnel udptunnel] tunnels UDP under TCP&lt;br /&gt;
* [http://packages.debian.org/search?keywords=ptunnel ptunnel] tunnels TCP under ICMP Echo-Request/Echo-Reply&lt;br /&gt;
* [http://packages.debian.org/search?keywords=httptunnel httptunnel] tunnels octets under HTTP&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=TCP&amp;diff=159</id>
		<title>TCP</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=TCP&amp;diff=159"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* http://articles.techrepublic.com.com/5100-10878_11-1050878.html -- &amp;quot;TCP/IP options for high-performance data transmission&amp;quot;&lt;br /&gt;
* http://www.ussg.iu.edu/hypermail/linux/kernel/0102.0/0943.html -- [[LKML]] thread, &amp;quot;TCP_NOPUSH on FreeBSD, TCP_CORK on Linux&amp;quot;&lt;br /&gt;
* http://www.irbs.net/internet/postfix/0707/1097.html -- postfix thread, &amp;quot;dkim-milter signing terribly slow with Postfix, but not with sendmail&amp;quot;&lt;br /&gt;
** This becomes: &amp;quot;TCP_NODELAY, TCP_CORK, TCP_NOPUSH, etc (was: dkim-milter signing terribly slow...)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Portable APIs ==&lt;br /&gt;
* TCP_NODELAY: Disable [[Nagle&#039;s algorithm]] (coalescing of small packets until an ACK is received or a retransmission triggered). See the [[Linux APIs#IPPROTO_TCP|Linux APIs]] page for interactions with TCP_CORK on that platform.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Linux APIs#IPPROTO_TCP|Linux&#039;s]] TCP socket options&lt;br /&gt;
* [[FreeBSD APIs#IPPROTO_TCP|FreeBSD&#039;s]] TCP socket options&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=TANGE&amp;diff=157</id>
		<title>TANGE</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=TANGE&amp;diff=157"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was reading the &amp;quot;[http://en.wikipedia.org/wiki/Text_mode Text Mode]&amp;quot; page on Wikipedia:&lt;br /&gt;
 Many modern programs with a graphical interface simulate the display style of text mode programs,&lt;br /&gt;
 notably when it is important to preserve the vertical alignment of text, e.g., during computer&lt;br /&gt;
 programming. There exist also software components to emulate text mode, such as terminal&lt;br /&gt;
 emulators or command line consoles. In Microsoft Windows, the Win32 console usually opens in&lt;br /&gt;
 emulated, graphical window mode but it can be switched to full screen, true text mode and vice&lt;br /&gt;
 versa by pressing the Alt and Enter keys together.&lt;br /&gt;
&#039;&#039;Why emulate terminals?&#039;&#039; There&#039;s a wealth of code implemented in terms of terminals.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Why stop there?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Many extensions would require some kind of shell interaction...&lt;br /&gt;
** Pop-ups on filepaths/lscolors etc&lt;br /&gt;
* Pure extensions of shell suitable for a heavier world:&lt;br /&gt;
** New wildcard for recursive globbing? Suffix with optional / to include directores?&lt;br /&gt;
* DOM model taken from browsers makes AJAX, etc applicable&lt;br /&gt;
** See [[xsh]] ideas, also apply XML to the terminal itself / shell history&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Suffer&amp;diff=155</id>
		<title>Suffer</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Suffer&amp;diff=155"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;d really like [http://www.facebook.com Facebook] to be drivable using a command-line interface. My SUFFER &amp;quot;Facebook Application&amp;quot; will attempt to do this. The name is inspired by [http://en.wikipedia.org/wiki/Surfraw Surfraw], the &amp;quot;Shell Users&#039; Reactionary Front Against the Web&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
http://git.facebook.com/apps/application.php?id=8221659402&lt;br /&gt;
&lt;br /&gt;
SUFFER&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;hell&lt;br /&gt;
* &#039;&#039;&#039;U&#039;&#039;&#039;sers&#039;&lt;br /&gt;
* &#039;&#039;&#039;F&#039;&#039;&#039;acebook&lt;br /&gt;
* &#039;&#039;&#039;F&#039;&#039;&#039;rontend&lt;br /&gt;
* (&#039;&#039;&#039;E&#039;&#039;&#039;xtremely&lt;br /&gt;
* &#039;&#039;&#039;R&#039;&#039;&#039;eactionary)&lt;br /&gt;
&lt;br /&gt;
Update: Dave Tompkins&#039;s [http://www.cs.ubc.ca/~davet/fbcmd/ fbcmd] does pretty much everything I wanted SUFFER to do! Awesome! Thanks, Dave! With this find, I&#039;ll likely be aborting the SUFFER effort. ([[User:Dank|Dank]] 23:04, 8 December 2008 (UTC))&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SSHFP&amp;diff=153</id>
		<title>SSHFP</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SSHFP&amp;diff=153"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SSHFP records allow SSH host keys (see [http://tools.ietf.org/html/rfc4253 RFC 4253]) to be published via the Domain Name Service. An interesting benefit is that, should SSHFP lookup be the only allowed method of authenticating a host key, keys can be revoked by removing them from DNS. They are defined in [http://tools.ietf.org/html/rfc4255 RFC 4255]. It is resource record (RR) type 44 (0x2C).&lt;br /&gt;
&amp;lt;pre&amp;gt;       1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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;
       |   algorithm   |    fp type    |                               /&lt;br /&gt;
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               /&lt;br /&gt;
       /                                                               /&lt;br /&gt;
       /                          fingerprint                          /&lt;br /&gt;
       /                                                               /&lt;br /&gt;
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Algorithm: 1 for RSA, 2 for DSS&lt;br /&gt;
* Fingerprint Type: 1 for SHA-1&lt;br /&gt;
&lt;br /&gt;
SSHFP records can be looked up via &amp;lt;tt&amp;gt;dig -t sshfp&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[hoare](0) $ dig +short -t sshfp svn.research.sys&lt;br /&gt;
1 1 CC96EE17FF88BB18AC8994342AE2B24185BA1B26&lt;br /&gt;
[hoare](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On [[FreeBSD]], the [http://www.freebsdports.info/ports/dns/sshfp.html dns/sshfp] port supplies [http://www.xelerance.com/software/sshfp/ sshfp]; [[Debian]] added the [http://packages.debian.org/sid/sshfp sshfp package] 2008-07-13. This tool generates SSHFP output from &amp;lt;tt&amp;gt;ssh-keyscan&amp;lt;/tt&amp;gt; or KnownHosts files:&lt;br /&gt;
&amp;lt;pre&amp;gt;[prometheus](0) $ /usr/local/bin/sshfp ctapd03.research.sys&lt;br /&gt;
ctapd03.research.sys IN SSHFP 1 1 443e23a036005c581f4f3e2e5a7949091d7318cd&lt;br /&gt;
ctapd03.research.sys IN SSHFP 2 1 86b505f00cb65359f6e377758b92359fc6dbd49b&lt;br /&gt;
[prometheus](0) $ /usr/local/bin/sshfp&lt;br /&gt;
[207.59.224.206]:7710. IN SSHFP 2 1 9eee5ceda25f86d4d9bf7f8569e576c56b69b9fc&lt;br /&gt;
hoare.research.sys. IN SSHFP 1 1 cc96ee17ff88bb18ac8994342ae2b24185ba1b26&lt;br /&gt;
localhost IN SSHFP 1 1 46c7cec5dde1fa5647591fd8636087508defea91&lt;br /&gt;
providence.scur. IN SSHFP 1 1 cc96ee17ff88bb18ac8994342ae2b24185ba1b26&lt;br /&gt;
qemfd IN SSHFP 1 1 2626a74a1c42c15ad31da0ee187992606ce135e0&lt;br /&gt;
qemfd.net. IN SSHFP 1 1 2626a74a1c42c15ad31da0ee187992606ce135e0&lt;br /&gt;
svn.research.sys. IN SSHFP 1 1 cc96ee17ff88bb18ac8994342ae2b24185ba1b26&lt;br /&gt;
[prometheus](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use with [[OpenSSH]] ==&lt;br /&gt;
* Set &amp;lt;tt&amp;gt;&amp;quot;VerifyHostKeyDNS yes&amp;quot;&amp;lt;/tt&amp;gt; in your SSH config file or on the command line with &amp;lt;tt&amp;gt;-OVerifyHostKeyDNS=yes&amp;lt;/tt&amp;gt; to automatically trust hosts matching a secure fingerprint in DNS. Set it to &amp;quot;ask&amp;quot; to display the fingerprint, and apply the &amp;lt;tt&amp;gt;StrictHostKeyChecking&amp;lt;/tt&amp;gt; -- this will be used for insecure fingerprints, even if &amp;lt;tt&amp;gt;VerifyHostKeyDNS&amp;lt;/tt&amp;gt; has been set to &amp;quot;yes&amp;quot;. With &amp;quot;no&amp;quot;, SSHFP records will not be consulted.&lt;br /&gt;
* To extract an SSHFP fingerprint for keys in your KnownHosts file, use &amp;lt;tt&amp;gt;ssh-keygen -r HostNameAlias&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ ssh-keygen -r qemfd.net&lt;br /&gt;
qemfd.net IN SSHFP 1 1 2626a74a1c42c15ad31da0ee187992606ce135e0&lt;br /&gt;
qemfd.net IN SSHFP 2 1 4193db02ecc3acd85f9abbaf71c8945ebe7f6067&lt;br /&gt;
[recombinator](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use with djbdns ==&lt;br /&gt;
* Use the generic record format, &#039;&#039;:fqdn:n:rdata:ttl:timestamp:lo&#039;&#039; (see http://cr.yp.to/djbdns/tinydns-data.html)&lt;br /&gt;
* Sample zone data file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;:qemfd.net:44:\001\001\046\046\247\112\034\102\301\132\323\035\240\356\030\171\222\140\154\341\065\340:&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The following perl script (courtesy of [mailto:henning@openbsd.org Henning Brauer]) will write a djbdns record for the RSA key at &amp;lt;tt&amp;gt;/etc/ssh/ssh_host_rsa_key.pub&amp;lt;/tt&amp;gt; (it should be trivial to use &amp;lt;tt&amp;gt;ssh-keyscan&amp;lt;/tt&amp;gt;, instead) to stdout (invoke with the desired FQDN as the single argument):&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
open IN, &amp;quot;ssh-keygen -f /etc/ssh/ssh_host_rsa_key.pub -r $ARGV[0] |&amp;quot;;&lt;br /&gt;
my $FP = &amp;lt;IN&amp;gt;;&lt;br /&gt;
close IN;&lt;br /&gt;
chop $FP;&lt;br /&gt;
my ($host, $in, $sshfp, $alg, $fptype, $fp) = split &amp;quot; &amp;quot;, $FP;&lt;br /&gt;
my $out = sprintf(&amp;quot;\\%03o\\%03o&amp;quot;, $alg, $fptype);&lt;br /&gt;
for (my $i = 0; $i &amp;lt; length($fp); $i += 2) {&lt;br /&gt;
	$out .= sprintf(&amp;quot;\\%03o&amp;quot;, hex substr($fp, $i, 2));&lt;br /&gt;
}&lt;br /&gt;
printf(&amp;quot;:%s:44:%s:\n&amp;quot;, $host, $out);&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Sound_Software&amp;diff=151</id>
		<title>Sound Software</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Sound_Software&amp;diff=151"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sound on Linux is the absolute biggest bunch of bullshit ever.&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
* &#039;&#039;&#039;Determine&#039;&#039;&#039;: are there still ALSA hardware drivers inferior to their OSS equivalents? Assuming no...&lt;br /&gt;
* OSS emulation: kernel, library, or neither?&lt;br /&gt;
** Kernel: snd_pcm_oss, snd_mixer_oss, snd_seq_oss provide /dev/dsp, /dev/seq, /dev/mixer&lt;br /&gt;
** Library: &amp;lt;tt&amp;gt;aoss&amp;lt;/tt&amp;gt; sets LD_PRELOAD to include libaoss.so&lt;br /&gt;
** Neither: force fail on attempts to use OSS&lt;br /&gt;
*** Might be better if OSS-only code is old and crappy, as suggested by OSS-only nature, as it&#039;ll eliminate such code. Might also be better if OSS compatability introduces any kinds of issues. Might be worse if OSS code is better-written than ALSA code alternatives, and OSS compatability introduces no problems.&lt;br /&gt;
* What the fuck ought go in /etc/asoundrc? It&#039;s a complete enigma.&lt;br /&gt;
&lt;br /&gt;
== Sound Servers ==&lt;br /&gt;
* pulseaudio -- crashes mpd every time I try to use it (no longer true as of Fall 2008)&lt;br /&gt;
* To drive ALSA through pulseaudio by default:&lt;br /&gt;
&amp;lt;pre&amp;gt;pcm.!default {&lt;br /&gt;
	type pulse&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ctl.!default {&lt;br /&gt;
	type pulse&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
* jack -- low-latency, professional software; it frightens me&lt;br /&gt;
* esd -- deprecated, replaced by pulseaudio&#039;s esd-compat module&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* A [http://0pointer.de/blog/projects/guide-to-sound-apis.html Guide to Linux Sound APIs] by Lennart Poettering of [http://www.pulseaudio.org/ PulseAudio]&lt;br /&gt;
* [http://lwn.net/Articles/299093/ Linux Audio: It&#039;s a Mess] from [http://lwn.net LWN]&lt;br /&gt;
* PulseAudio -- [http://www.pulseaudio.org/wiki/PerfectSetup The Perfect Setup]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SNMP&amp;diff=149</id>
		<title>SNMP</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SNMP&amp;diff=149"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This all applies to [http://www.net-snmp.org/ Net-SNMP] (they have their own [http://net-snmp.sourceforge.net/wiki/index.php/Main_Page Wiki])&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SMP_on_x86&amp;diff=147</id>
		<title>SMP on x86</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SMP_on_x86&amp;diff=147"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The primary specification for multiprocessor [[x86]]-based setups is the [http://www.intel.com/design/pentium/datashts/242016.HTM Intel MultiProcessor Specification] (last updated, AFAIK, to revision-006 on 1995-05-15).&lt;br /&gt;
&lt;br /&gt;
* [[ACPI]]&lt;br /&gt;
* MP Table&lt;br /&gt;
* Interactions with [[cpuid]]&lt;br /&gt;
* HyperThreading requires CPU, BIOS and OS support. It&#039;s present only on some P4&#039;s and Xeons, NOT Core2Duo.&lt;br /&gt;
&lt;br /&gt;
==libvirt==&lt;br /&gt;
* &amp;lt;tt&amp;gt;virsh(1)&amp;lt;/tt&amp;gt;&#039;s &amp;lt;tt&amp;gt;nodeinfo&amp;lt;/tt&amp;gt; command can be pretty useful:&lt;br /&gt;
&amp;lt;pre&amp;gt;[wopr](0) $ virsh nodeinfo&lt;br /&gt;
CPU model:           x86_64&lt;br /&gt;
CPU(s):              16&lt;br /&gt;
CPU frequency:       1600 MHz&lt;br /&gt;
CPU socket(s):       4&lt;br /&gt;
Core(s) per socket:  4&lt;br /&gt;
Thread(s) per core:  1&lt;br /&gt;
NUMA cell(s):        1&lt;br /&gt;
Memory size:         66113480 kB&lt;br /&gt;
&lt;br /&gt;
[wopr](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo virsh nodeinfo&lt;br /&gt;
CPU model:           x86_64&lt;br /&gt;
CPU(s):              2&lt;br /&gt;
CPU frequency:       1596 MHz&lt;br /&gt;
CPU socket(s):       1&lt;br /&gt;
Core(s) per socket:  2&lt;br /&gt;
Thread(s) per core:  1&lt;br /&gt;
NUMA cell(s):        1&lt;br /&gt;
Memory size:         3908568 kB&lt;br /&gt;
&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==/proc/cpuinfo==&lt;br /&gt;
On [[Linux]] kernels with the &amp;lt;tt&amp;gt;proc&amp;lt;/tt&amp;gt; filesystem enabled (and [[FreeBSD]] kernels with the &amp;lt;tt&amp;gt;linprocfs&amp;lt;/tt&amp;gt; module loaded, although this does not provide all of the information as native Linux /proc/cpuinfo), the mounted &amp;lt;tt&amp;gt;proc/linprocfs&amp;lt;/tt&amp;gt; filesystem contains a file &amp;lt;tt&amp;gt;cpuinfo&amp;lt;/tt&amp;gt; (this is independent of any CPU-related modules being loaded, particularly &amp;lt;tt&amp;gt;cpuid&amp;lt;/tt&amp;gt; on Linux or either OS&#039;s &amp;lt;tt&amp;gt;cpu&amp;lt;/tt&amp;gt; module). Interpreting this file, as it pertains to multiple execution units, can be difficult. The following applies to Linux 2.6 kernels:&lt;br /&gt;
* A physical_id corresponds to a socket (&amp;quot;physical package&amp;quot;), of which there are &amp;gt;=1 per machine. Physical IDs do not necessarily monotonically increase across processors, and thus the maximum physical_id does not by itself determine the number of sockets!&lt;br /&gt;
* A core_id corresponds to a core (&amp;quot;logical processor&amp;quot;), of which there are &amp;gt;=1 per physical_id&lt;br /&gt;
* A processor ID corresponds to an architectural state (HyperThreading == 2 per HyperThreaded core)&lt;br /&gt;
* HyperThreading is in use only if &#039;siblings&#039; != &#039;cpu cores&#039; (from http://kbase.redhat.com/faq/FAQ_46_10715.shtm)&lt;br /&gt;
* The &#039;ht&#039; processor capabilities bit corresponds not to HyperThreading, but to the ability to report sibling count&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
I&#039;ve removed all output from the following examples, save that related to SMP identification.&lt;br /&gt;
&lt;br /&gt;
*EMT64 Xeon, no HyperThreading support, 4 cores per socket, 4 sockets: 16 total execution units (2.6.26)&lt;br /&gt;
&amp;lt;pre&amp;gt;[wopr](0) $ cat /proc/cpuinfo | egrep ^proc\|^model\ \|^phys\|^sib\|^core\|^cpu\ c\|^ap\|^init&lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 0&lt;br /&gt;
initial apicid	: 0&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 2&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 8&lt;br /&gt;
initial apicid	: 8&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 4&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 16&lt;br /&gt;
initial apicid	: 16&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 6&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 24&lt;br /&gt;
initial apicid	: 24&lt;br /&gt;
&lt;br /&gt;
processor	: 4&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 2&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 2&lt;br /&gt;
initial apicid	: 2&lt;br /&gt;
&lt;br /&gt;
processor	: 5&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 2&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 2&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 10&lt;br /&gt;
initial apicid	: 10&lt;br /&gt;
&lt;br /&gt;
processor	: 6&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 4&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 2&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 18&lt;br /&gt;
initial apicid	: 18&lt;br /&gt;
&lt;br /&gt;
processor	: 7&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 6&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 2&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 26&lt;br /&gt;
initial apicid	: 26&lt;br /&gt;
&lt;br /&gt;
processor	: 8&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 1&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 1&lt;br /&gt;
initial apicid	: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 9&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 2&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 1&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 9&lt;br /&gt;
initial apicid	: 9&lt;br /&gt;
&lt;br /&gt;
processor	: 10&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 4&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 1&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 17&lt;br /&gt;
initial apicid	: 17&lt;br /&gt;
&lt;br /&gt;
processor	: 11&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 6&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 1&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 25&lt;br /&gt;
initial apicid	: 25&lt;br /&gt;
&lt;br /&gt;
processor	: 12&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 3&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 3&lt;br /&gt;
initial apicid	: 3&lt;br /&gt;
&lt;br /&gt;
processor	: 13&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 2&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 3&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 11&lt;br /&gt;
initial apicid	: 11&lt;br /&gt;
&lt;br /&gt;
processor	: 14&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 4&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 3&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 19&lt;br /&gt;
initial apicid	: 19&lt;br /&gt;
&lt;br /&gt;
processor	: 15&lt;br /&gt;
model name	: Intel(R) Xeon(R) CPU           X7350  @ 2.93GHz&lt;br /&gt;
physical id	: 6&lt;br /&gt;
siblings	: 4&lt;br /&gt;
core id		: 3&lt;br /&gt;
cpu cores	: 4&lt;br /&gt;
apicid		: 27&lt;br /&gt;
initial apicid	: 27&lt;br /&gt;
[wopr](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
*Core 2 Duo, no HyperThreading support, 2 cores per socket, 1 socket: 2 total execution units (2.6.26)&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 2&lt;br /&gt;
apicid		: 0&lt;br /&gt;
initial apicid	: 0&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 1&lt;br /&gt;
cpu cores	: 2&lt;br /&gt;
apicid		: 1&lt;br /&gt;
initial apicid	: 1&lt;br /&gt;
[recombinator](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
*P4 Xeon, HyperThreading enabled, 1 core per socket, 2 sockets: 4 total execution units (2.6.25-2-686)&lt;br /&gt;
&amp;lt;pre&amp;gt;scurdev@hrududu:~$ cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.40GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.40GHz&lt;br /&gt;
physical id	: 0&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.40GHz&lt;br /&gt;
physical id	: 3&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.40GHz&lt;br /&gt;
physical id	: 3&lt;br /&gt;
siblings	: 2&lt;br /&gt;
core id		: 0&lt;br /&gt;
cpu cores	: 1&lt;br /&gt;
scurdev@hrududu:~$&amp;lt;/pre&amp;gt;&lt;br /&gt;
*P4 Xeon, HyperThreading disabled, 1 core per socket, 2 sockets: 2 total execution units (2.6.25-2-686)&lt;br /&gt;
&amp;lt;pre&amp;gt;[aho](0) $ cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.80GHz&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: Intel(R) Xeon(TM) CPU 2.80GHz&lt;br /&gt;
[aho](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
*P4 Xeon Celeron, HyperThreading disabled, 1 core per socket, 1 socket: 1 total execution unit (2.6.25-2-686)&lt;br /&gt;
&amp;lt;pre&amp;gt;[knuth](0) $ cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: Intel(R) Celeron(R) CPU 2.00GHz&lt;br /&gt;
[knuth](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sysctl==&lt;br /&gt;
On FreeBSD, CPU/SMP information is primarily exported through the &amp;lt;tt&amp;gt;sysctl(8)&amp;lt;/tt&amp;gt; interface. Seemingly relevant sysctls are listed below:&lt;br /&gt;
* &amp;lt;tt&amp;gt;kern.smp.cpus&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hw.ncpu&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;machdep.hyperthreading.allowed&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;kern.threads.virtual_cpu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://osdir.com/ml/linux.ports.x86-64.general/2005-10/msg00022.html This LKML thread] provides much information&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SMART&amp;diff=145</id>
		<title>SMART</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SMART&amp;diff=145"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For help using SMART on [[SATA]] drives, see [[SATA#SMART|that page]].&lt;br /&gt;
&lt;br /&gt;
Apparently, it&#039;s not to be trusted; see [http://www.usenix.org/events/fast07/tech/full_papers/pinheiro/pinheiro.pdf|Failure Trends in a Large Disk Drive Population] (Pinheiro, Weber and Barroso 2007).&lt;br /&gt;
&lt;br /&gt;
==Hardware RAID Controllers==&lt;br /&gt;
*Dell PERC -- See [[Linux on Dells]]. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt; [wopr](0) $ lsscsi -l&lt;br /&gt;
[0:0:32:0]   enclosu DP       BACKPLANE        1.06  -       &lt;br /&gt;
  state=running queue_depth=128 scsi_level=6 type=13 device_blocked=0 timeout=0&lt;br /&gt;
[0:2:0:0]    disk    DELL     PERC 6/i         1.11  /dev/sda&lt;br /&gt;
  state=running queue_depth=128 scsi_level=6 type=0 device_blocked=0 timeout=90&lt;br /&gt;
[wopr](0) $ &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Skip_Lists&amp;diff=143</id>
		<title>Skip Lists</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Skip_Lists&amp;diff=143"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From [http://www.nist.gov/dads/HTML/skiplist.html NIST]:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;A randomized variant of an ordered linked list with additional, parallel lists. Parallel lists at higher levels skip geometrically more items. Searching begins at the highest level, to quickly get to the right part of the list, then uses progressively lower level lists. A new item is added by randomly selecting a level, then inserting it in order in the lists for that and all lower levels. With enough levels, searching is O(log n).&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Simulators&amp;diff=141</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Simulators&amp;diff=141"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Like everything else, there&#039;s too many of these; indeed, only crappy papers by Systems masters students about cache effects that never existed because they misconfigured their wretched NFS server are in more ready supply around Klaus than new simulator platforms (most of them implemented not nearly so professionally as designed or planned, sigh).&lt;br /&gt;
&lt;br /&gt;
== pin ==&lt;br /&gt;
&lt;br /&gt;
Intel.&lt;br /&gt;
&lt;br /&gt;
== COTson ==&lt;br /&gt;
&lt;br /&gt;
HP/AMD.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SPF&amp;diff=139</id>
		<title>SPF</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SPF&amp;diff=139"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Sender Policy Framework&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* The [http://www.openspf.org/ SPF Project]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=SATA&amp;diff=137</id>
		<title>SATA</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=SATA&amp;diff=137"/>
		<updated>2009-01-28T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Power Management==&lt;br /&gt;
What is SATA Link Power Management (as seen in [[Power Management|powertop]] hints)?&lt;br /&gt;
&lt;br /&gt;
==hddtemp==&lt;br /&gt;
&amp;lt;tt&amp;gt;hddtemp&amp;lt;/tt&amp;gt; seems to handle SATA devices just fine:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo hddtemp /dev/sd?&lt;br /&gt;
/dev/sda: WDC WD10EACS-00ZJB0: 34°C&lt;br /&gt;
/dev/sdb: : S.M.A.R.T. not available&lt;br /&gt;
/dev/sdc: ST31000340AS: 41°C&lt;br /&gt;
/dev/sdd: WDC WD10EACS-00ZJB0: 40°C&lt;br /&gt;
/dev/sde: WDC WD10EACS-00ZJB0: 40°C&lt;br /&gt;
/dev/sdf: ST3500630AS: 37°C&lt;br /&gt;
/dev/sdg: ST3500630AS: 39°C&lt;br /&gt;
/dev/sdh: ST3750640AS: 42°C&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==lsscsi==&lt;br /&gt;
&amp;lt;tt&amp;gt;lsscsi&amp;lt;/tt&amp;gt; seems to handle SATA devices just fine:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ lsscsi -l&lt;br /&gt;
[0:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sda&lt;br /&gt;
  state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[1:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sdb&lt;br /&gt;
  state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[2:0:0:0]    disk    ATA      ST31000340AS     SD15  /dev/sdc&lt;br /&gt;
  state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[3:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sdd&lt;br /&gt;
  state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[4:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sde&lt;br /&gt;
  state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[6:0:0:0]    disk    ATA      ST3500630AS      3.AA  /dev/sdf&lt;br /&gt;
  state=running queue_depth=1 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[7:0:0:0]    disk    ATA      ST3500630AS      3.AA  /dev/sdg&lt;br /&gt;
  state=running queue_depth=1 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[8:0:0:0]    disk    ATA      ST3750640AS      3.AA  /dev/sdh&lt;br /&gt;
  state=running queue_depth=1 scsi_level=6 type=0 device_blocked=0 timeout=30&lt;br /&gt;
[9:0:0:0]    cd/dvd  TSSTcorp CD/DVDW SH-S183L SB01  /dev/scd0&lt;br /&gt;
  state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=0&lt;br /&gt;
[recombinator](0) $ lsscsi -H -v&lt;br /&gt;
[0]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host0&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host0&lt;br /&gt;
[1]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host1&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host1&lt;br /&gt;
[2]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host2&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host2&lt;br /&gt;
[3]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host3&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host3&lt;br /&gt;
[4]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host4&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host4&lt;br /&gt;
[5]    ahci          &lt;br /&gt;
  dir: /sys/class/scsi_host/host5&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1f.2/host5&lt;br /&gt;
[6]    sata_promise  &lt;br /&gt;
  dir: /sys/class/scsi_host/host6&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host6&lt;br /&gt;
[7]    sata_promise  &lt;br /&gt;
  dir: /sys/class/scsi_host/host7&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host7&lt;br /&gt;
[8]    sata_promise  &lt;br /&gt;
  dir: /sys/class/scsi_host/host8&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host8&lt;br /&gt;
[9]    sata_promise  &lt;br /&gt;
  dir: /sys/class/scsi_host/host9&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host9&lt;br /&gt;
[10]    pata_marvell  &lt;br /&gt;
  dir: /sys/class/scsi_host/host10&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/host10&lt;br /&gt;
[11]    pata_marvell  &lt;br /&gt;
  dir: /sys/class/scsi_host/host11&lt;br /&gt;
  device dir: /sys/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/host11&lt;br /&gt;
[recombinator](0) $ lsscsi  -v&lt;br /&gt;
[0:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sda&lt;br /&gt;
  dir: /sys/bus/scsi/devices/0:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0]&lt;br /&gt;
[1:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sdb&lt;br /&gt;
  dir: /sys/bus/scsi/devices/1:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0]&lt;br /&gt;
[2:0:0:0]    disk    ATA      ST31000340AS     SD15  /dev/sdc&lt;br /&gt;
  dir: /sys/bus/scsi/devices/2:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0]&lt;br /&gt;
[3:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sdd&lt;br /&gt;
  dir: /sys/bus/scsi/devices/3:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0]&lt;br /&gt;
[4:0:0:0]    disk    ATA      WDC WD10EACS-00Z 01.0  /dev/sde&lt;br /&gt;
  dir: /sys/bus/scsi/devices/4:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0]&lt;br /&gt;
[6:0:0:0]    disk    ATA      ST3500630AS      3.AA  /dev/sdf&lt;br /&gt;
  dir: /sys/bus/scsi/devices/6:0:0:0  [/sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host6/target6:0:0/6:0:0:0]&lt;br /&gt;
[7:0:0:0]    disk    ATA      ST3500630AS      3.AA  /dev/sdg&lt;br /&gt;
  dir: /sys/bus/scsi/devices/7:0:0:0  [/sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host7/target7:0:0/7:0:0:0]&lt;br /&gt;
[8:0:0:0]    disk    ATA      ST3750640AS      3.AA  /dev/sdh&lt;br /&gt;
  dir: /sys/bus/scsi/devices/8:0:0:0  [/sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host8/target8:0:0/8:0:0:0]&lt;br /&gt;
[9:0:0:0]    cd/dvd  TSSTcorp CD/DVDW SH-S183L SB01  /dev/scd0&lt;br /&gt;
  dir: /sys/bus/scsi/devices/9:0:0:0  [/sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/host9/target9:0:0/9:0:0:0]&lt;br /&gt;
[recombinator](0) $ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SMART==&lt;br /&gt;
Generally, &#039;-d ata&#039; is a sufficient descriptor of a device for &amp;lt;tt&amp;gt;smartd&amp;lt;/tt&amp;gt; to handle it. Determine [[SMART]] capability with &amp;lt;tt&amp;gt;smartctl -i&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo smartctl -i /dev/sdc&lt;br /&gt;
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;
Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== START OF INFORMATION SECTION ===&lt;br /&gt;
Model Family:     Seagate Barracuda 7200.11&lt;br /&gt;
Device Model:     ST31000340AS&lt;br /&gt;
Serial Number:    9QJ0YTFN&lt;br /&gt;
Firmware Version: SD15&lt;br /&gt;
User Capacity:    1,000,204,886,016 bytes&lt;br /&gt;
Device is:        In smartctl database [for details use: -P show]&lt;br /&gt;
ATA Version is:   8&lt;br /&gt;
ATA Standard is:  ATA-8-ACS revision 4&lt;br /&gt;
Local Time is:    Tue Sep 30 05:29:37 2008 EDT&lt;br /&gt;
SMART support is: Available - device has SMART capability.&lt;br /&gt;
SMART support is: Enabled&lt;br /&gt;
&lt;br /&gt;
[recombinator](0) $ sudo smartctl -i /dev/sda&lt;br /&gt;
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;
Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== START OF INFORMATION SECTION ===&lt;br /&gt;
Device Model:     WDC WD10EACS-00ZJB0&lt;br /&gt;
Serial Number:    WD-WCASJ0911338&lt;br /&gt;
Firmware Version: 01.01B01&lt;br /&gt;
User Capacity:    1,000,204,886,016 bytes&lt;br /&gt;
Device is:        Not in smartctl database [for details use: -P showall]&lt;br /&gt;
ATA Version is:   8&lt;br /&gt;
ATA Standard is:  Exact ATA specification draft version not indicated&lt;br /&gt;
Local Time is:    Tue Sep 30 05:29:39 2008 EDT&lt;br /&gt;
SMART support is: Available - device has SMART capability.&lt;br /&gt;
SMART support is: Enabled&lt;br /&gt;
&lt;br /&gt;
[recombinator](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
Determine if the specific hard drive model is known via &amp;lt;tt&amp;gt;-P show&amp;lt;/tt&amp;gt; (this is not necessary for [[SMART]] to be used):&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo smartctl -a /dev/sdc -P show&lt;br /&gt;
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;
Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Drive found in smartmontools Database.  Drive identity strings:&lt;br /&gt;
MODEL:              ST31000340AS&lt;br /&gt;
FIRMWARE:           SD15&lt;br /&gt;
match smartmontools Drive Database entry:&lt;br /&gt;
MODEL REGEXP:       ^ST3(500[368]2|750[36]3|1000[36]4)0AS?$&lt;br /&gt;
FIRMWARE REGEXP:    .*&lt;br /&gt;
MODEL FAMILY:       Seagate Barracuda 7200.11&lt;br /&gt;
ATTRIBUTE OPTIONS:  None preset; no -v options are required.&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
To check [[SMART]] statistics for a drive, try &amp;lt;tt&amp;gt;smartctl -a&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](2) $ sudo smartctl -a /dev/sdc&lt;br /&gt;
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;
Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== START OF INFORMATION SECTION ===&lt;br /&gt;
Model Family:     Seagate Barracuda 7200.11&lt;br /&gt;
Device Model:     ST31000340AS&lt;br /&gt;
Serial Number:    9QJ0YTFN&lt;br /&gt;
Firmware Version: SD15&lt;br /&gt;
User Capacity:    1,000,204,886,016 bytes&lt;br /&gt;
Device is:        In smartctl database [for details use: -P show]&lt;br /&gt;
ATA Version is:   8&lt;br /&gt;
ATA Standard is:  ATA-8-ACS revision 4&lt;br /&gt;
Local Time is:    Tue Sep 30 05:17:48 2008 EDT&lt;br /&gt;
SMART support is: Available - device has SMART capability.&lt;br /&gt;
SMART support is: Enabled&lt;br /&gt;
&lt;br /&gt;
=== START OF READ SMART DATA SECTION ===&lt;br /&gt;
SMART overall-health self-assessment test result: PASSED&lt;br /&gt;
&lt;br /&gt;
General SMART Values:&lt;br /&gt;
Offline data collection status:  (0x82)	Offline data collection activity&lt;br /&gt;
					was completed without error.&lt;br /&gt;
					Auto Offline Data Collection: Enabled.&lt;br /&gt;
Self-test execution status:      (   0)	The previous self-test routine completed&lt;br /&gt;
					without error or no self-test has ever &lt;br /&gt;
					been run.&lt;br /&gt;
Total time to complete Offline &lt;br /&gt;
data collection: 		 ( 642) seconds.&lt;br /&gt;
Offline data collection&lt;br /&gt;
capabilities: 			 (0x7b) SMART execute Offline immediate.&lt;br /&gt;
					Auto Offline data collection on/off support.&lt;br /&gt;
					Suspend Offline collection upon new&lt;br /&gt;
					command.&lt;br /&gt;
					Offline surface scan supported.&lt;br /&gt;
					Self-test supported.&lt;br /&gt;
					Conveyance Self-test supported.&lt;br /&gt;
					Selective Self-test supported.&lt;br /&gt;
SMART capabilities:            (0x0003)	Saves SMART data before entering&lt;br /&gt;
					power-saving mode.&lt;br /&gt;
					Supports SMART auto save timer.&lt;br /&gt;
Error logging capability:        (0x01)	Error logging supported.&lt;br /&gt;
					General Purpose Logging supported.&lt;br /&gt;
Short self-test routine &lt;br /&gt;
recommended polling time: 	 (   1) minutes.&lt;br /&gt;
Extended self-test routine&lt;br /&gt;
recommended polling time: 	 ( 232) minutes.&lt;br /&gt;
Conveyance self-test routine&lt;br /&gt;
recommended polling time: 	 (   2) minutes.&lt;br /&gt;
SCT capabilities: 	       (0x103b)	SCT Status supported.&lt;br /&gt;
					SCT Feature Control supported.&lt;br /&gt;
					SCT Data Table supported.&lt;br /&gt;
&lt;br /&gt;
SMART Attributes Data Structure revision number: 10&lt;br /&gt;
Vendor Specific SMART Attributes with Thresholds:&lt;br /&gt;
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE&lt;br /&gt;
  1 Raw_Read_Error_Rate     0x000f   112   099   006    Pre-fail  Always       -       45299905&lt;br /&gt;
  3 Spin_Up_Time            0x0003   091   091   000    Pre-fail  Always       -       0&lt;br /&gt;
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       42&lt;br /&gt;
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0&lt;br /&gt;
  7 Seek_Error_Rate         0x000f   055   054   030    Pre-fail  Always       -       154630173860&lt;br /&gt;
  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       2447&lt;br /&gt;
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0&lt;br /&gt;
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       42&lt;br /&gt;
184 Unknown_Attribute       0x0032   100   100   099    Old_age   Always       -       0&lt;br /&gt;
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0&lt;br /&gt;
188 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0&lt;br /&gt;
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0&lt;br /&gt;
190 Airflow_Temperature_Cel 0x0022   060   052   045    Old_age   Always       -       40 (Lifetime Min/Max 35/46)&lt;br /&gt;
194 Temperature_Celsius     0x0022   040   048   000    Old_age   Always       -       40 (0 20 0 0)&lt;br /&gt;
195 Hardware_ECC_Recovered  0x001a   018   018   000    Old_age   Always       -       45299905&lt;br /&gt;
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0&lt;br /&gt;
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0&lt;br /&gt;
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0&lt;br /&gt;
&lt;br /&gt;
SMART Error Log Version: 1&lt;br /&gt;
No Errors Logged&lt;br /&gt;
&lt;br /&gt;
SMART Self-test log structure revision number 1&lt;br /&gt;
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error&lt;br /&gt;
# 1  Extended offline    Completed without error       00%      2315         -&lt;br /&gt;
# 2  Extended offline    Completed without error       00%      2146         -&lt;br /&gt;
# 3  Extended offline    Completed without error       00%      1978         -&lt;br /&gt;
# 4  Extended offline    Interrupted (host reset)      70%      1808         -&lt;br /&gt;
# 5  Extended offline    Interrupted (host reset)      40%      1641         -&lt;br /&gt;
# 6  Extended offline    Interrupted (host reset)      00%      1305         -&lt;br /&gt;
# 7  Extended offline    Completed without error       00%      1139         -&lt;br /&gt;
# 8  Extended offline    Completed without error       00%       997         -&lt;br /&gt;
# 9  Extended offline    Interrupted (host reset)      50%       827         -&lt;br /&gt;
#10  Extended offline    Completed without error       00%       661         -&lt;br /&gt;
#11  Extended offline    Completed without error       00%       470         -&lt;br /&gt;
#12  Extended offline    Completed without error       00%       302         -&lt;br /&gt;
#13  Extended offline    Interrupted (host reset)      50%       143         -&lt;br /&gt;
&lt;br /&gt;
SMART Selective self-test log data structure revision number 1&lt;br /&gt;
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS&lt;br /&gt;
    1        0        0  Not_testing&lt;br /&gt;
    2        0        0  Not_testing&lt;br /&gt;
    3        0        0  Not_testing&lt;br /&gt;
    4        0        0  Not_testing&lt;br /&gt;
    5        0        0  Not_testing&lt;br /&gt;
Selective self-test flags (0x0):&lt;br /&gt;
  After scanning selected spans, do NOT read-scan remainder of disk.&lt;br /&gt;
If Selective self-test is pending on power-up, resume after 0 minute delay.&lt;br /&gt;
&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==hdparm==&lt;br /&gt;
SATA drive information on Linux can be acquired with &amp;lt;tt&amp;gt;hdparm -I&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo hdparm -I /dev/sda&lt;br /&gt;
&lt;br /&gt;
/dev/sda:&lt;br /&gt;
&lt;br /&gt;
ATA device, with non-removable media&lt;br /&gt;
	Model Number:       WDC WD10EACS-00ZJB0                     &lt;br /&gt;
	Serial Number:      WD-WCASJ0911338&lt;br /&gt;
	Firmware Revision:  01.01B01&lt;br /&gt;
	Transport:          Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5&lt;br /&gt;
Standards:&lt;br /&gt;
	Supported: 8 7 6 5 &lt;br /&gt;
	Likely used: 8&lt;br /&gt;
Configuration:&lt;br /&gt;
	Logical		max	current&lt;br /&gt;
	cylinders	16383	16383&lt;br /&gt;
	heads		16	16&lt;br /&gt;
	sectors/track	63	63&lt;br /&gt;
	--&lt;br /&gt;
	CHS current addressable sectors:   16514064&lt;br /&gt;
	LBA    user addressable sectors:  268435455&lt;br /&gt;
	LBA48  user addressable sectors: 1953525168&lt;br /&gt;
	device size with M = 1024*1024:      953869 MBytes&lt;br /&gt;
	device size with M = 1000*1000:     1000204 MBytes (1000 GB)&lt;br /&gt;
Capabilities:&lt;br /&gt;
	LBA, IORDY(can be disabled)&lt;br /&gt;
	Queue depth: 32&lt;br /&gt;
	Standby timer values: spec&#039;d by Standard, with device specific minimum&lt;br /&gt;
	R/W multiple sector transfer: Max = 16	Current = 0&lt;br /&gt;
	Recommended acoustic management value: 128, current value: 254&lt;br /&gt;
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 &lt;br /&gt;
	     Cycle time: min=120ns recommended=120ns&lt;br /&gt;
	PIO: pio0 pio1 pio2 pio3 pio4 &lt;br /&gt;
	     Cycle time: no flow control=120ns  IORDY flow control=120ns&lt;br /&gt;
Commands/features:&lt;br /&gt;
	Enabled	Supported:&lt;br /&gt;
	   *	SMART feature set&lt;br /&gt;
	    	Security Mode feature set&lt;br /&gt;
	   *	Power Management feature set&lt;br /&gt;
	   *	Write cache&lt;br /&gt;
	   *	Look-ahead&lt;br /&gt;
	   *	Host Protected Area feature set&lt;br /&gt;
	   *	WRITE_BUFFER command&lt;br /&gt;
	   *	READ_BUFFER command&lt;br /&gt;
	   *	NOP cmd&lt;br /&gt;
	   *	DOWNLOAD_MICROCODE&lt;br /&gt;
	    	Power-Up In Standby feature set&lt;br /&gt;
	   *	SET_FEATURES required to spinup after power up&lt;br /&gt;
	    	SET_MAX security extension&lt;br /&gt;
	    	Automatic Acoustic Management feature set&lt;br /&gt;
	   *	48-bit Address feature set&lt;br /&gt;
	   *	Device Configuration Overlay feature set&lt;br /&gt;
	   *	Mandatory FLUSH_CACHE&lt;br /&gt;
	   *	FLUSH_CACHE_EXT&lt;br /&gt;
	   *	SMART error logging&lt;br /&gt;
	   *	SMART self-test&lt;br /&gt;
	   *	General Purpose Logging feature set&lt;br /&gt;
	   *	64-bit World wide name&lt;br /&gt;
	   *	{READ,WRITE}_DMA_EXT_GPL commands&lt;br /&gt;
	   *	Segmented DOWNLOAD_MICROCODE&lt;br /&gt;
	   *	SATA-I signaling speed (1.5Gb/s)&lt;br /&gt;
	   *	SATA-II signaling speed (3.0Gb/s)&lt;br /&gt;
	   *	Native Command Queueing (NCQ)&lt;br /&gt;
	   *	Host-initiated interface power management&lt;br /&gt;
	   *	Phy event counters&lt;br /&gt;
	    	DMA Setup Auto-Activate optimization&lt;br /&gt;
	   *	Software settings preservation&lt;br /&gt;
	   *	SMART Command Transport (SCT) feature set&lt;br /&gt;
	   *	SCT Long Sector Access (AC1)&lt;br /&gt;
	   *	SCT LBA Segment Access (AC2)&lt;br /&gt;
	   *	SCT Error Recovery Control (AC3)&lt;br /&gt;
	   *	SCT Features Control (AC4)&lt;br /&gt;
	   *	SCT Data Tables (AC5)&lt;br /&gt;
	    	unknown 206[12] (vendor specific)&lt;br /&gt;
	    	unknown 206[13] (vendor specific)&lt;br /&gt;
Security: &lt;br /&gt;
	Master password revision code = 65534&lt;br /&gt;
		supported&lt;br /&gt;
	not	enabled&lt;br /&gt;
	not	locked&lt;br /&gt;
	not	frozen&lt;br /&gt;
	not	expired: security count&lt;br /&gt;
		supported: enhanced erase&lt;br /&gt;
	284min for SECURITY ERASE UNIT. 284min for ENHANCED SECURITY ERASE UNIT.&lt;br /&gt;
Logical Unit WWN Device Identifier: 50014ee256448a45&lt;br /&gt;
	NAA		: 5&lt;br /&gt;
	IEEE OUI	: 14ee&lt;br /&gt;
	Unique ID	: 256448a45&lt;br /&gt;
Checksum: correct&lt;br /&gt;
[recombinator](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here&#039;s an older one:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ sudo hdparm -I /dev/sdf&lt;br /&gt;
&lt;br /&gt;
/dev/sdf:&lt;br /&gt;
&lt;br /&gt;
ATA device, with non-removable media&lt;br /&gt;
	Model Number:       ST3500630AS                             &lt;br /&gt;
	Serial Number:      9QG043LY&lt;br /&gt;
	Firmware Revision:  3.AAJ   &lt;br /&gt;
Standards:&lt;br /&gt;
	Supported: 7 6 5 4 &lt;br /&gt;
	Likely used: 7&lt;br /&gt;
Configuration:&lt;br /&gt;
	Logical		max	current&lt;br /&gt;
	cylinders	16383	16383&lt;br /&gt;
	heads		16	16&lt;br /&gt;
	sectors/track	63	63&lt;br /&gt;
	--&lt;br /&gt;
	CHS current addressable sectors:   16514064&lt;br /&gt;
	LBA    user addressable sectors:  268435455&lt;br /&gt;
	LBA48  user addressable sectors:  976773168&lt;br /&gt;
	device size with M = 1024*1024:      476940 MBytes&lt;br /&gt;
	device size with M = 1000*1000:      500107 MBytes (500 GB)&lt;br /&gt;
Capabilities:&lt;br /&gt;
	LBA, IORDY(can be disabled)&lt;br /&gt;
	Queue depth: 32&lt;br /&gt;
	Standby timer values: spec&#039;d by Standard, no device specific minimum&lt;br /&gt;
	R/W multiple sector transfer: Max = 16	Current = ?&lt;br /&gt;
	Recommended acoustic management value: 254, current value: 0&lt;br /&gt;
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 &lt;br /&gt;
	     Cycle time: min=120ns recommended=120ns&lt;br /&gt;
	PIO: pio0 pio1 pio2 pio3 pio4 &lt;br /&gt;
	     Cycle time: no flow control=120ns  IORDY flow control=120ns&lt;br /&gt;
Commands/features:&lt;br /&gt;
	Enabled	Supported:&lt;br /&gt;
	   *	SMART feature set&lt;br /&gt;
	    	Security Mode feature set&lt;br /&gt;
	   *	Power Management feature set&lt;br /&gt;
	   *	Write cache&lt;br /&gt;
	   *	Look-ahead&lt;br /&gt;
	   *	Host Protected Area feature set&lt;br /&gt;
	   *	WRITE_BUFFER command&lt;br /&gt;
	   *	READ_BUFFER command&lt;br /&gt;
	   *	DOWNLOAD_MICROCODE&lt;br /&gt;
	    	SET_MAX security extension&lt;br /&gt;
	   *	48-bit Address feature set&lt;br /&gt;
	   *	Device Configuration Overlay feature set&lt;br /&gt;
	   *	Mandatory FLUSH_CACHE&lt;br /&gt;
	   *	FLUSH_CACHE_EXT&lt;br /&gt;
	   *	SMART error logging&lt;br /&gt;
	   *	SMART self-test&lt;br /&gt;
	   *	General Purpose Logging feature set&lt;br /&gt;
	   *	SATA-I signaling speed (1.5Gb/s)&lt;br /&gt;
	   *	Native Command Queueing (NCQ)&lt;br /&gt;
	   *	Phy event counters&lt;br /&gt;
	    	Device-initiated interface power management&lt;br /&gt;
	   *	Software settings preservation&lt;br /&gt;
Security: &lt;br /&gt;
	Master password revision code = 65534&lt;br /&gt;
		supported&lt;br /&gt;
	not	enabled&lt;br /&gt;
	not	locked&lt;br /&gt;
	not	frozen&lt;br /&gt;
	not	expired: security count&lt;br /&gt;
	not	supported: enhanced erase&lt;br /&gt;
Checksum: correct&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Rpaths&amp;diff=135</id>
		<title>Rpaths</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Rpaths&amp;diff=135"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==See also==&lt;br /&gt;
* This [http://mail.kde.org/pipermail/kde-buildsystem/2006-February/001303.html mail] explains the difference between the DT_RPATH and DT_RUNPATH [[ELF]] dtags.&lt;br /&gt;
* The [[Working with libraries#ld_issues|ld issues]] section of my [[Working with libraries]] page has some useful info.&lt;br /&gt;
* [http://blog.flameeyes.eu/2008/12/30/avoid-ldpath-pollution Avoid LDPATH pollution!]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Research_ideas&amp;diff=133</id>
		<title>Research ideas</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Research_ideas&amp;diff=133"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hackery]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Real_computing&amp;diff=131</id>
		<title>Real computing</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Real_computing&amp;diff=131"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As outlined best by [http://www.cs.cmu.edu/~lblum/ Lenore Blum] et al&#039;s [http://www-2.cs.cmu.edu/~lblum/PAPERS/TuringMeetsNewton.pdf paper], &amp;quot;Computing Over the Reals: Where Turing Meets Newton&amp;quot; (2004):&lt;br /&gt;
*Scientific computing lacks a model of computation and a systematic complexity theory&lt;br /&gt;
*Computer science lacks applicability to problems of numerical analysis&lt;br /&gt;
&lt;br /&gt;
The [http://www.amazon.com/Complexity-Real-Computation-Lenore-Blum/dp/0387982817 canonical textbook] is &amp;quot;Complexity and Real Computation&amp;quot; by Lenore Blum, Felipe Cucker, Michael Shub and Steve Smale.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Pthreads&amp;diff=129</id>
		<title>Pthreads</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Pthreads&amp;diff=129"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Dank&#039;s Sagelike Wisdom Concerning POSIX Threads==&lt;br /&gt;
* The static initializers are unsung heroes. Learn them.&lt;br /&gt;
* If you are using asynchronous cancellation, you have a bug.&lt;br /&gt;
* If you are using pthread_attr_setstackaddr(), and you don&#039;t know why that&#039;s funny, you have a bug.&lt;br /&gt;
* Use of sched_yield() is almost certainly a bug, and furthermore it is womanly in nature.&lt;br /&gt;
** This logic is trivially extended to pthread_yield().&lt;br /&gt;
* The Triforce of POSIX Thread stacks:&lt;br /&gt;
** If you aren&#039;t allocating a stack fit to your thread, you will one day smash that stack.&lt;br /&gt;
** If you&#039;re using your stack, you should probably heap-allocate or use TLS.&lt;br /&gt;
** Recursion&#039;s all fun and games until your recurse on through to the other side.&lt;br /&gt;
** Yes, this all applies to an unthreaded program (especially an embedded one), with a critical difference -- memory management is process-based, causing noisy failures in the unthreaded case. Meanwhile, a POSIX thread will happily push a frame down right over his buddy&#039;s DTV/TLS in NPTL (see [http://www.redhat.com/whitepapers/developer/POSIX_Linux_Threading.pdf NPTL], &amp;quot;Memory Allocation&amp;quot;). Have a good time debugging that, champ!&lt;br /&gt;
* Failure to check every return, especially pthread_mutex_destroy(), is cause for [http://en.wikipedia.org/wiki/Tuol_Sleng_Genocide_Museum#The_Security_Regulations many many lashes of electric wire].&lt;br /&gt;
* Those who fail to designate an alternate signal stack will one day wish they had.&lt;br /&gt;
* Solaris 2.5&#039;s lack of timeslicing among compute-bound user threads can be addressed in two ways:&lt;br /&gt;
** Setting the concurrency level to the number of compute-bound user threads + 1.&lt;br /&gt;
*** Surely this is not the Tao of Programming.&lt;br /&gt;
** Spawning no more than one compute-bound user thread per CPU, and providing preemption.&lt;br /&gt;
*** Surely this is the Tao of Programming.&lt;br /&gt;
* Those who say, &amp;quot;I need never spawn thread one on Solaris 2.5&amp;quot; would trade their birthright for cold pottage.&lt;br /&gt;
* Before trying to solve an issue with POSIX thread scheduling parameters, see if you can&#039;t just drink some hydrochloric acid.&lt;br /&gt;
&lt;br /&gt;
==Compiling code with pthreads==&lt;br /&gt;
First off, POSIX requires _REENTRANT be defined in the scope of all code run in a multithreaded manner. This is most typically achieved via -D_REENTRANT on the gcc command line. Some gcc versions / target architectures provide a -pthread option which sets -D_REENTRANT (as well as setting up pthread linking), as evidenced below:&amp;lt;pre&amp;gt;Date: Sun, 8 Apr 2007 23:33:23 -0400&lt;br /&gt;
From: nick black &amp;lt;nick_black@securecomputing.com&amp;gt;&lt;br /&gt;
To: Sven Krasser &amp;lt;skrasser@securecomputing.com&amp;gt;&lt;br /&gt;
Cc: Nick Black &amp;lt;nblack@securecomputing.com&amp;gt;&lt;br /&gt;
Subject: Re: [repper-304] REENTRANT is required by POSIX for any code using pthreads&lt;br /&gt;
&lt;br /&gt;
Sven Krasser rigorously showed:&lt;br /&gt;
&amp;gt; This is on Linux:&lt;br /&gt;
&amp;gt; skrasser@ctapd01:~$ cat test.c&lt;br /&gt;
&amp;gt; #ifdef _REENTRANT&lt;br /&gt;
&amp;gt; #error xxx&lt;br /&gt;
&amp;gt; #endif&lt;br /&gt;
&amp;gt; skrasser@ctapd01:~$ gcc -pthread test.c&lt;br /&gt;
&amp;gt; test.c:2:2: error: #error xxx&lt;br /&gt;
&lt;br /&gt;
interesting. from the gcc pinfo page, &amp;quot;Index of Options&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
* pthread &amp;lt;1&amp;gt;:                           SPARC Options.      (line  240)&lt;br /&gt;
* pthread &amp;lt;2&amp;gt;:                           RS/6000 and PowerPC Options.&lt;br /&gt;
                                                             (line  653)&lt;br /&gt;
* pthread:                               IA-64 Options.      (line  106)&lt;br /&gt;
* pthreads:                              SPARC Options.      (line  234)&lt;br /&gt;
&lt;br /&gt;
how odd. i must investigate. in any case, yes, -pthread is definitely&lt;br /&gt;
defining _REEENTRANT here:&lt;br /&gt;
&lt;br /&gt;
[diaconicon](0) $ touch t.c&lt;br /&gt;
[diaconicon](0) $ cpp -dM -pthread t.c &amp;gt; e 2&amp;gt;&amp;amp;1&lt;br /&gt;
[diaconicon](1) $ cpp -dM t.c &amp;gt; f 2&amp;gt;&amp;amp;1&lt;br /&gt;
[diaconicon](1) $ diff -ur f e&lt;br /&gt;
--- f   2007-04-08 23:31:12.000000000 -0400&lt;br /&gt;
+++ e   2007-04-08 23:31:05.000000000 -0400&lt;br /&gt;
@@ -26,6 +27,7 @@&lt;br /&gt;
 #define __DECIMAL_DIG__ 21&lt;br /&gt;
 #define __gnu_linux__ 1&lt;br /&gt;
 #define __LDBL_HAS_QUIET_NAN__ 1&lt;br /&gt;
+#define _REENTRANT 1&lt;br /&gt;
 #define __GNUC__ 4&lt;br /&gt;
 #define __DBL_MAX__ 1.7976931348623157e+308&lt;br /&gt;
 #define __DBL_HAS_INFINITY__ 1&lt;br /&gt;
[diaconicon](1) $&lt;br /&gt;
&lt;br /&gt;
interesting. no matter what, you definitely need to be declaring&lt;br /&gt;
-D_THREAD_SAFE, though, as my previous example asserted.&lt;br /&gt;
&lt;br /&gt;
off to dig through gcc source....&amp;lt;/pre&amp;gt;Nonetheless, this is a poorly-documented gcc-specific method; best to always provide -D_REENTRANT explicitly. -D_REENTRANT and other preprocessor directives which affect code selection should always precede -include options to gcc, ie:&amp;lt;pre&amp;gt;gcc -D_REENTRANT -I/usr/local -include pthread.h ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On FreeBSD&#039;s libc (and also possibly with regard to other third-part libraries), it&#039;s also necessary to define _THREAD_SAFE, as evidenced below (furthermore, you need _POSIX_PTHREAD_SEMANTICS and _P1003_1B_VISIBLE for reasons I determined long ago and have since forgotten, see the [[make]] snippet below --&#039;&#039;dank&#039;&#039;):&amp;lt;pre&amp;gt;Newsgroups: sys.research.subversion.repper&lt;br /&gt;
From: Nick Black &amp;lt;nblack@securecomputing.com&amp;gt;&lt;br /&gt;
Subject: Re: [repper-304] REENTRANT is required by POSIX for any code using pthr&lt;br /&gt;
On 2007-04-08, Sven Krasser &amp;lt;skrasser@securecomputing.com&amp;gt; wrote:&lt;br /&gt;
&amp;gt; Hmm, doesn&#039;t -pthread do that?&lt;br /&gt;
&amp;gt; -pthread&lt;br /&gt;
&amp;gt;    Adds support for multithreading with the pthreads library.  This&lt;br /&gt;
&amp;gt;    option sets flags for both the preprocessor and linker.&lt;br /&gt;
&lt;br /&gt;
where do you see this? from the gcc docs on freebsd 4.10-p24 (source:&lt;br /&gt;
/usr/src/contrib/gcc/gcc.1):&lt;br /&gt;
&lt;br /&gt;
-pthread Link a user-threaded process against libc_r instead of libc.&lt;br /&gt;
         Objects linked into user-threaded processes  should  be&lt;br /&gt;
         compiled with -D_THREAD_SAFE.&lt;br /&gt;
&lt;br /&gt;
[newdhcpbox](0) $ cat &amp;gt; g.c&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
feof(stderr)&lt;br /&gt;
[newdhcpbox](0) $ gcc -pthread -D_THREAD_SAFE -E g.c | grep stderr&lt;br /&gt;
extern FILE *__stdinp, *__stdoutp, *__stderrp;&lt;br /&gt;
feof((__stderrp) )&lt;br /&gt;
[newdhcpbox](0) $ gcc -pthread -E g.c | grep stderr&lt;br /&gt;
extern FILE *__stdinp, *__stdoutp, *__stderrp;&lt;br /&gt;
(((   (__stderrp)    )-&amp;gt;_flags &amp;amp; 0x0020 ) != 0)&lt;br /&gt;
[newdhcpbox](0) $ grep -C3 feof /usr/include/stdio.h&lt;br /&gt;
__BEGIN_DECLS&lt;br /&gt;
void     clearerr __P((FILE *));&lt;br /&gt;
int      fclose __P((FILE *));&lt;br /&gt;
int      feof __P((FILE *));&lt;br /&gt;
int      ferror __P((FILE *));&lt;br /&gt;
int      fflush __P((FILE *));&lt;br /&gt;
int      fgetc __P((FILE *));&lt;br /&gt;
--&lt;br /&gt;
                (*(p)-&amp;gt;_p = (c), (int)*(p)-&amp;gt;_p++))&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#define __sfeof(p)      (((p)-&amp;gt;_flags &amp;amp; __SEOF) != 0)&lt;br /&gt;
#define __sferror(p)    (((p)-&amp;gt;_flags &amp;amp; __SERR) != 0)&lt;br /&gt;
#define __sclearerr(p)  ((void)((p)-&amp;gt;_flags &amp;amp;= ~(__SERR|__SEOF)))&lt;br /&gt;
#define __sfileno(p)    ((p)-&amp;gt;_file)&lt;br /&gt;
#define __sfileno(p)    ((p)-&amp;gt;_file)&lt;br /&gt;
--&lt;br /&gt;
 * See ISO/IEC 9945-1 ANSI/IEEE Std 1003.1 Second Edition 1996-07-12&lt;br /&gt;
 * B.8.2.7 for the rationale behind the *_unlocked() macros.&lt;br /&gt;
 */&lt;br /&gt;
#define feof_unlocked(p)        __sfeof(p)&lt;br /&gt;
#define ferror_unlocked(p)      __sferror(p)&lt;br /&gt;
#define clearerr_unlocked(p)    __sclearerr(p)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#ifndef  _THREAD_SAFE&lt;br /&gt;
#define feof(p)         feof_unlocked(p)&lt;br /&gt;
#define ferror(p)       ferror_unlocked(p)&lt;br /&gt;
#define clearerr(p)     clearerr_unlocked(p)&lt;br /&gt;
&lt;br /&gt;
[newdhcpbox](0) $&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
nick black          &amp;quot;np:  the class of dashed hopes and idle dreams.&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Failure to properly define _REENTRANT (and, where applicable, _THREAD_SAFE) will result in silent inclusions of unsafe, improperly-locked code and global variables in the place of thread-local data (ala errno(3)).&lt;br /&gt;
&lt;br /&gt;
==Linking objects with pthreads==&lt;br /&gt;
On linux, this is as simple as things get: add -lpthread to the linker options. There&#039;s only two major pthread libraries on [[Linux]], both of them affiliated with [[glibc]] -- [[LinuxThreads]] and then [[NPTL]]. [[NPTL]] is used on all recent distributions. -lpthread will link the primary pthreads implementation on your build machine.&lt;br /&gt;
&lt;br /&gt;
On [[FreeBSD]], the situation is a bit more complex, due to multiple pthread implementations, some of which are only available on recent [[FreeBSD]] versions. [[FreeBSD]] 4 provides the simplest case, with only two implementations:&lt;br /&gt;
* native BSD threads&lt;br /&gt;
* the [[LinuxThreads]] port (devel/linuxthreads; this does NOT require emulators/linux-base*)&lt;br /&gt;
all threaded code muse use the reentrant version of the gcc builtin libs; this is done via -lgcc_r (-pthread should set this up). In addition, use -llthread to link against [[LinuxThreads]].&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Power_Management&amp;diff=127</id>
		<title>Power Management</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Power_Management&amp;diff=127"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==References==&lt;br /&gt;
[http://www.linux.com/articles/54610 linux.com article on hibernate and suspend]&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
* APM (Advanced Power Management): All PM policy/mechanism resides within the BIOS&lt;br /&gt;
** Motivated by, largely relevant only to laptops&lt;br /&gt;
** [http://packages.debian.org/stable/admin/apmd apmd debian package]&lt;br /&gt;
** No longer supported in Vista. Off by default in recent Debian kernels.&lt;br /&gt;
* [[ACPI]]: Current, often buggy (but also often easily repairable via BIOS flash or by hand)&lt;br /&gt;
&lt;br /&gt;
==CPU Frequency Throttling==&lt;br /&gt;
* On Linux, &amp;lt;tt&amp;gt;cpufreq-info&amp;lt;/tt&amp;gt; provides lots of good information:&lt;br /&gt;
&amp;lt;pre&amp;gt;[recombinator](0) $ cpufreq-info&lt;br /&gt;
cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006&lt;br /&gt;
Report errors and bugs to cpufreq@lists.linux.org.uk, please.&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: acpi-cpufreq&lt;br /&gt;
  CPUs which need to switch frequency at the same time: 0&lt;br /&gt;
  hardware limits: 1.60 GHz - 2.39 GHz&lt;br /&gt;
  available frequency steps: 2.39 GHz, 1.60 GHz&lt;br /&gt;
  available cpufreq governors: ondemand, performance&lt;br /&gt;
  current policy: frequency should be within 1.60 GHz and 2.39 GHz.&lt;br /&gt;
                  The governor &amp;quot;ondemand&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency is 1.60 GHz.&lt;br /&gt;
  cpufreq stats: 2.39 GHz:27.25%, 1.60 GHz:72.75%  (78631)&lt;br /&gt;
analyzing CPU 1:&lt;br /&gt;
  driver: acpi-cpufreq&lt;br /&gt;
  CPUs which need to switch frequency at the same time: 1&lt;br /&gt;
  hardware limits: 1.60 GHz - 2.39 GHz&lt;br /&gt;
  available frequency steps: 2.39 GHz, 1.60 GHz&lt;br /&gt;
  available cpufreq governors: ondemand, performance&lt;br /&gt;
  current policy: frequency should be within 1.60 GHz and 2.39 GHz.&lt;br /&gt;
                  The governor &amp;quot;ondemand&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency is 1.60 GHz.&lt;br /&gt;
  cpufreq stats: 2.39 GHz:4.32%, 1.60 GHz:95.68%  (19387)&lt;br /&gt;
[recombinator](0) $ &amp;lt;/pre&amp;gt;&lt;br /&gt;
* On [[FreeBSD]], sysctls from the dev.cpu and debug.cpufreq MIB hierarchies are your window into frequency control. See [http://www.freebsd.org/cgi/man.cgi?query=cpufreq&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;format=html cpufreq(4)].&lt;br /&gt;
&lt;br /&gt;
==Disks/Filesystems==&lt;br /&gt;
* noatime -- critical for all kinds of things! &#039;&#039;FIXME: find and add great Ingo Molnar quote&#039;&#039;&lt;br /&gt;
* [[SATA]] link state management? what is this? seen in &amp;lt;tt&amp;gt;powertop&amp;lt;/tt&amp;gt; output&lt;br /&gt;
* turning up the writeback time / disk head parking / other debatable techniques&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Performance_Counters&amp;diff=125</id>
		<title>Performance Counters</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Performance_Counters&amp;diff=125"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Normally driven through [[MSR|MSRs]]&lt;br /&gt;
* RDPMC instruction: http://www.x86.org/secrets/opcodes/rdpmc.htm&lt;br /&gt;
* FreeBSD includes libpmc as part of the base system&lt;br /&gt;
* On Linux, we have libpfm&lt;br /&gt;
* This is the preferred way we get at TSC (TSC has fallen out of favor, though)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Packages_by_Purpose&amp;diff=123</id>
		<title>Packages by Purpose</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Packages_by_Purpose&amp;diff=123"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Generate presentations using [[LaTeX]] -- latex-beamer&lt;br /&gt;
* Modify the [[rpath]] of a binary -- chrpath&lt;br /&gt;
* Generate ASCII art - cadubi&lt;br /&gt;
* Record desktop session to animated GIF - byzanz&lt;br /&gt;
* Render anti-aliased text from plaintext source - gozer&lt;br /&gt;
* Chop and merge MPEG2 streams - gopchop&lt;br /&gt;
* Linux source tree manager - ketchup&lt;br /&gt;
* PNG metainfo dumper - pngcheck, pngmeta&lt;br /&gt;
* JPEG metainfo dumper - jpeginfo&lt;br /&gt;
* Patch management tool - quilt&lt;br /&gt;
* Hex editor - hexedit, hexeditor (ncurses-hexedit)&lt;br /&gt;
* GNOME image thumbnailer - gthumb&lt;br /&gt;
* GNOME image viewer - gimv (gimageview)&lt;br /&gt;
* GNOME Unicode charset browser - gucharmap&lt;br /&gt;
* Create graphics from relationship sets - graphviz&lt;br /&gt;
* Manipulate graphic files - convert (imagemagick)&lt;br /&gt;
* Collect stdin then open and write to stdout - sponge (moreutils)&lt;br /&gt;
* Edit a directory in vi - vidir (moreutils)&lt;br /&gt;
* Insert vi into a pipeline - vipe (moreutils)&lt;br /&gt;
* Write stdin to multiple files - tee (coreutils)&lt;br /&gt;
* Write stdin to multiple pipes - pee (moreutils)&lt;br /&gt;
* Secure file deletion - wipe&lt;br /&gt;
* Run a binary repeatedly every n seconds - watch&lt;br /&gt;
* Run a process as a daemon - daemon&lt;br /&gt;
* More reasonable GNU Info page browser - pinfo&lt;br /&gt;
* Python source checker - pychecker&lt;br /&gt;
* HTML/XHTML checker - tidy&lt;br /&gt;
* LaTeX chacker - lacheck&lt;br /&gt;
* XSLT processor - xsltproc, xalan&lt;br /&gt;
* Command-line XML/XSLT manipulations - xmlstarlet (xml on FreeBSD)&lt;br /&gt;
* Extract text from MS Word - antiword&lt;br /&gt;
* Extract text from HTML - html2text&lt;br /&gt;
* Detect MIME type / extract metainfo - extract&lt;br /&gt;
* Detect filetype based on magic number - file&lt;br /&gt;
* Read EDID via VBE/DDC - get-edid | parse-edid (read-edid)&lt;br /&gt;
* POSIX time(1) - time (time package, not shell builtin)&lt;br /&gt;
* Query DNS servers - dig (dnsutils)&lt;br /&gt;
* Time HTTP header retrieval - httping&lt;br /&gt;
* Display bandwidth usage by hostpairs - iftop&lt;br /&gt;
* General X image viewer - xli&lt;br /&gt;
* Display overal system statistics - saidar&lt;br /&gt;
* Carve up packet dump files - tcpxtract&lt;br /&gt;
* Create a UDF filesystem - mkudffs (udftools)&lt;br /&gt;
* Set up packet writing (block access of RW optical media) - pktsetup (udftools)&lt;br /&gt;
* Create a VideoCD image - mkvcdfs (vcdtools)&lt;br /&gt;
* Speech synthesis - festival&lt;br /&gt;
* x86, PPC, SPARC, ARM emulation - qemu&lt;br /&gt;
* Processor VT capability-aware qemu - kvm&lt;br /&gt;
* Record / playback a TTY - ttyrec / ttyplay (ttyrec)&lt;br /&gt;
* Break a Unicode file into character ranges - unidesc&lt;br /&gt;
* Print Unicode character data for all characters in a file - uniname (unidesc)&lt;br /&gt;
* Look up Unicode characters - utf8lookup (unidesc)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=OpenSSH&amp;diff=121</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=OpenSSH&amp;diff=121"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH is a powerful, open-source implementation of the Secure Shell protocol.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://www.openssh.com/ OpenSSH] home page&lt;br /&gt;
* [http://www.monkey.org/~provos/scanssh/ ScanSSH] home page&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Open_source_plans&amp;diff=119</id>
		<title>Open source plans</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Open_source_plans&amp;diff=119"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Research ideas#Open source detritus]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=OpenGL&amp;diff=117</id>
		<title>OpenGL</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=OpenGL&amp;diff=117"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenGL is an API for (possibly hardware-accelerated) 2- and 3-dimensional graphics primitives, invented at SGI in 1992. Implementations for [[Xorg hell|X]] include GLX and Xgl.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Nuclear_weapons&amp;diff=115</id>
		<title>Nuclear weapons</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Nuclear_weapons&amp;diff=115"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* The [http://www.fas.org/rlg/index.html Garwin Archive] at FAS is awesome&lt;br /&gt;
&lt;br /&gt;
==Missile Defense==&lt;br /&gt;
* &amp;quot;[http://www.fas.org/rlg/03%2000%201968%20Bethe-Garwin%20ABM%20Systems.pdf Anti-Ballistic Missile Systems].&amp;quot; R.L. Garwin and H.A. Bethe. &#039;&#039;Scientific American&#039;&#039;, Vol. 218, No. 3, pp. 21-31, March 1968.&lt;br /&gt;
* [http://www.mda.mil/ Missile Defense Agency], with garish [[Flash]] as of 2008.12.27.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Netlink&amp;diff=113</id>
		<title>Netlink</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Netlink&amp;diff=113"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Netlink sockets (PF_NETLINK) are a mechanism within Linux to retrieve and manage various aspects of the networking stacks -- they are a Linux-specific extension to the Berkeley Sockets model, and should not be used in portable programs. The information available via netlink sockets was previously available to userspace, if at all, via a collection of &amp;lt;tt&amp;gt;ioctl(2)&amp;lt;/tt&amp;gt;s and a grabbag of &amp;lt;tt&amp;gt;get*(2)&amp;lt;/tt&amp;gt; custom-purpose system calls; the majority of these are obsoleted by netlink sockets, but still implemented for backwards compatability. [http://www.faqs.org/rfcs/rfc3549.html RFC 3549] provides a snapshot current as of kernel 2.4.6; the netlink socket interface, however, is prone to change. That doesn&#039;t affect RFC 3549 as much as one might think, as it really has nothing to do with the netlink programming model; I suspect it to be a joke Andi Kleen perpetrated knowing that W. Richard Stevens wasn&#039;t around to call him out on it anymore.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;netlink(3)&amp;lt;/tt&amp;gt; man page includes the following text:&lt;br /&gt;
&amp;lt;pre&amp;gt;NOTES&lt;br /&gt;
       It is often better to use netlink via libnetlink than via the low-level&lt;br /&gt;
       kernel interface.&amp;lt;/pre&amp;gt;It has been this author&#039;s experience that this is untrue; the cold hard reality is that just about anything involving netlink sockets is bound to be unpleasant, usually in the extreme, and libnetlink won&#039;t improve things in the slightest. [[libdank]] has grown a capable netlink module over the years, and I would advise its use.&lt;br /&gt;
&lt;br /&gt;
==Netlink Families==&lt;br /&gt;
As in the third argument to &amp;lt;tt&amp;gt;socket(2)&amp;lt;/tt&amp;gt;; the full and current list of families can be had at your local &amp;lt;tt&amp;gt;netlink(7)&amp;lt;/tt&amp;gt; man page. Here&#039;s the important ones:&lt;br /&gt;
* NETLINK_ROUTE -- pretty much everything corresponding to &amp;lt;tt&amp;gt;ip(8)&amp;lt;/tt&amp;gt;, also known as &amp;lt;tt&amp;gt;iproute&amp;lt;/tt&amp;gt;, including:&lt;br /&gt;
** RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK -- device tables (ifinfomsg and rtattr structs) (see &amp;lt;tt&amp;gt;netdevice(7)&amp;lt;/tt&amp;gt;)&lt;br /&gt;
** RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR -- address tables (ifaddrmsg and rtattr structs)&lt;br /&gt;
** RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE -- routing tables (rtmsg and rtattr structs)&lt;br /&gt;
** RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH -- neighbor ([[ARP]], for [[IPv4]]) tables (ndmsg structs)&lt;br /&gt;
** RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE -- rule tables for advanced routing (rtmsg structs)&lt;br /&gt;
** See &amp;lt;tt&amp;gt;rtnetlink(7)&amp;lt;/tt&amp;gt; for more info&lt;br /&gt;
* NETLINK_INET_DIAG -- socket monitoring, as used by &amp;lt;tt&amp;gt;ss(8)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* NETLINK_QUEUE -- [[iptables]] packet interface for userspace&lt;br /&gt;
** Uses the &amp;lt;tt&amp;gt;ip_queue&amp;lt;/tt&amp;gt; kernel module and the QUEUE target&lt;br /&gt;
** Userspace is provided the libipq(3) wrapper library. I know nothing of it.&lt;br /&gt;
&lt;br /&gt;
==Netlink Stupidity==&lt;br /&gt;
Each time I come into contact with a new piece of netlink or the code that uses it, I&#039;m flabbergasted by the utter lack of design elegance or even basic good taste. [[Alexey Kuznetsov]], the primary author, is almost famous for getting the bits from one end of the wire to another in the most efficient and ugliest way possible (but I wouldn&#039;t try to write a better networking stack). PF_NETLINK and all it touches feels like someone took all the untyped, unsafe &amp;lt;tt&amp;gt;ioctl(2)&amp;lt;/tt&amp;gt; layers, wrapped them up with some message queues, stuck them in an Eastern European hellhole and waited for NATO air power to solve the design problem.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Big Tent&amp;quot; approach to &amp;lt;tt&amp;gt;socket(2)&amp;lt;/tt&amp;gt; (from &amp;lt;tt&amp;gt;netlink(7)&amp;lt;/tt&amp;gt;):&amp;lt;pre&amp;gt;Netlink is a datagram-oriented service. Both SOCK_RAW and SOCK_DGRAM are valid values for socket_type. However, the netlink protocol does&lt;br /&gt;
not distinguish between datagram and raw sockets.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Things like this all over the place (taken from &#039;&#039;misc/ss.c&#039;&#039; in the iproute source package):&amp;lt;pre&amp;gt;req.nlh.nlmsg_seq = 123456;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Nagle%27s_algorithm&amp;diff=111</id>
		<title>Nagle&#039;s algorithm</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Nagle%27s_algorithm&amp;diff=111"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specified in RFC 896 to address &#039;&#039;Silly Window Syndrome&#039;&#039;, Nagle&#039;s algorithm is a classic congestion control mechanism for [[ARQ]] protocols.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[TCP]], especially the TCP_NODELAY sockopt&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=MediaWiki&amp;diff=109</id>
		<title>MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=MediaWiki&amp;diff=109"/>
		<updated>2009-01-28T07:32:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m using the [http://www.mediawiki.org/wiki/MediaWiki MediaWiki] software from the WikiMedia Foundation to power my wikis. MediaWiki is written in PHP5, and thus precludes the use of a multi-threaded version of [http://www.apache.org Apache].&lt;br /&gt;
&lt;br /&gt;
==Installing MediaWiki==&lt;br /&gt;
&#039;&#039;&#039;The following information is largely [[Debian]]-specific.&#039;&#039;&#039;&lt;br /&gt;
* Have handy the administrator account/password for your MySQL installation.&lt;br /&gt;
** I advise you to install MySQL &#039;&#039;before&#039;&#039; MediaWiki, not as a single &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; step.&lt;br /&gt;
** &#039;&#039;&#039;DO NOT&#039;&#039;&#039; explicitly create the MediaWiki databases / users yourself.&lt;br /&gt;
* Grab the necessary packages:&lt;br /&gt;
** &amp;lt;tt&amp;gt;mediawiki&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;mediawiki-math&amp;lt;/tt&amp;gt;; &amp;lt;tt&amp;gt;mediawiki-extensions&amp;lt;/tt&amp;gt; is also advised.&lt;br /&gt;
** In addition, &amp;lt;tt&amp;gt;memcached&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;imagemagick&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;tetex-base&amp;lt;/tt&amp;gt; should be installed if they&#039;re not automatically dragged in.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; grab the versioned packages (ie &amp;lt;tt&amp;gt;mediawiki1.10&amp;lt;/tt&amp;gt;); the &amp;lt;tt&amp;gt;mediawiki&amp;lt;/tt&amp;gt; package will depend on the proper packages for your version of [[Debian]].&lt;br /&gt;
** Unless you really need a particular version.&lt;br /&gt;
** If you install the versioned packages explicitly, upgrades might eat your configuration. You have been warned.&lt;br /&gt;
* Symlink /var/lib/mediawiki to /var/www/mediawiki with &amp;lt;tt&amp;gt;ln -s&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** This isn&#039;t in the install docs, and might be incorrect/suboptimal &#039;&#039;&#039;FIXME&#039;&#039;&#039;.&lt;br /&gt;
* Go to &amp;lt;tt&amp;gt;http://yourhost/mediawiki&amp;lt;/tt&amp;gt;. You should be greeted with a link to the config page. Follow it.&lt;br /&gt;
* Configure that bitch (See Accelerators below).&lt;br /&gt;
** I&#039;ve seen no problems related to the experimental [[Using_Unicode|UTF-8]] encoding for use with MySQL 5.0.&lt;br /&gt;
* Following configuration, run &amp;lt;tt&amp;gt;chmod 640 /var/lib/mediawiki/config/LocalSettings.php &amp;amp;&amp;amp; ln -sf /var/lib/mediawiki/config/LocalSettings.php /etc/mediawiki&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Go to &amp;lt;tt&amp;gt;http://yourhost/mediawiki&amp;lt;/tt&amp;gt;. You should be greeted with your new main page.&lt;br /&gt;
&lt;br /&gt;
===Accelerators===&lt;br /&gt;
* MediaWiki: kinda slow.&lt;br /&gt;
* XCache is rumoured to be the best choice.&lt;br /&gt;
** On Debian, you&#039;ll need edit the default /etc/php5/xcache.ini to provide non-0 size values&lt;br /&gt;
* memcached works out of the box, but doesn&#039;t seem very effective&lt;br /&gt;
** You want the memcache server at 127.0.0.1:11211&lt;br /&gt;
&lt;br /&gt;
==Postinstallation==&lt;br /&gt;
* Set a wiki logo: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and add&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgLogo = &amp;quot;/mediawiki/skins/common/images/wiki.jpg&amp;quot;;&amp;lt;/code&amp;gt; with the appropriate path to your logo&lt;br /&gt;
** Be sure the image is world-readable, 135x135 and has a correct extension&lt;br /&gt;
** The path is relative to your Apache&#039;s configured &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
** If applicable, set the image background transparent so it&#039;ll look better&lt;br /&gt;
*** Using the Gimp, add an Alpha layer, select the background with the Magic Wand, and Clear it&lt;br /&gt;
* Enable uploads: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and add&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgEnableUploads = true;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Support uploading non-images: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and add&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgFileExtensions = array( &#039;png&#039;, &#039;gif&#039;, &#039;jpg&#039;, &#039;jpeg&#039;, &#039;doc&#039;, &#039;pdf&#039;, &#039;ps&#039;, &#039;xls&#039;, &#039;txt&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
** Supposedly, all types can be allowed via:&lt;br /&gt;
&amp;lt;code&amp;gt;$wgCheckFileExtensions = false;&lt;br /&gt;
$wgStrictFileExtensions = false;&lt;br /&gt;
$wgVerifyMimeType = false;&lt;br /&gt;
$wgFileExtensions = array( &#039;png&#039;, &#039;gif&#039;, &#039;jpg&#039;, &#039;jpeg&#039; );&lt;br /&gt;
$wgFileBlacklist = array();&lt;br /&gt;
$wgMimeTypeBlacklist= array();&amp;lt;/code&amp;gt;&lt;br /&gt;
* Support inline equations: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and change&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgUseTeX           = false;&amp;lt;/code&amp;gt; so that it uses &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; instead&lt;br /&gt;
** The &amp;lt;tt&amp;gt;texex-bin&amp;lt;/tt&amp;gt; package must be installed for this to work!&lt;br /&gt;
* Disable editing unless logged in: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and add&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Optionally, disable new accounts unless logged in: &amp;lt;tt&amp;gt;sudoedit /etc/mediawiki/LocalSettings.php&amp;lt;/tt&amp;gt; and add&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Optionally, rename the main page: first, move the main page to the new title&lt;br /&gt;
** Load &amp;lt;tt&amp;gt;Mediawiki:mainpage&amp;lt;/tt&amp;gt;, and update it to reflect this change&lt;br /&gt;
* Optionally, remove the &#039;discussion&#039; tab:&lt;br /&gt;
** Edit &amp;lt;tt&amp;gt;mediawiki/includes/SkinTemplate.php&amp;lt;/tt&amp;gt;, and comment out the following:&lt;br /&gt;
&amp;lt;code&amp;gt; $content_actions[&#039;talk&#039;] = $this-&amp;gt;tabAction(&lt;br /&gt;
                                $talkpage,&lt;br /&gt;
                                &#039;talk&#039;,&lt;br /&gt;
                                $this-&amp;gt;mTitle-&amp;gt;isTalkPage() &amp;amp;&amp;amp; !$prevent_active_tabs,&lt;br /&gt;
                                &#039;&#039;,&lt;br /&gt;
                                true);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
* Most everything can be done via the [[Special:Specialpages|Special Pages]] page; learn it&lt;br /&gt;
* Check the [[Special:Lonelypages]] list to watch for orphaned pages; these pages are unreachable from any other page.&lt;br /&gt;
** This almost always indicates a mistyped or misspelled attempt to link to this page; check the [[Special:Wantedpages]] list&lt;br /&gt;
* Check the [[Special:Deadendpages]] list to watch for dead-end pages; these pages link to no other pages.&lt;br /&gt;
** This almost always indicated a failure to add a relevant link, or a short entry (see below)&lt;br /&gt;
* Check the [[Special:Shortpages]] list to watch for short pages; these pages might need more information.&lt;br /&gt;
** See if the page can&#039;t be combined with another one, or if more info isn&#039;t sensible to add&lt;br /&gt;
* How to check for dead external links? &#039;&#039;&#039;FIXME&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
A variety of extensions are available for MediaWiki. The most popular and stable are collected in the Debian package &amp;lt;tt&amp;gt;mediawiki-extensions&amp;lt;/tt&amp;gt;, including (as of 1.10) GeSHi, Cite, inputbox, and ParserFunctions. By default, none are enabled -- the package only provides the extensions; it does not enable them!&lt;br /&gt;
&lt;br /&gt;
===Enabling Debian-Supported Extensions===&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;mediawiki-extensions&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
* Enter the &amp;lt;tt&amp;gt;/etc/mediawiki-extensions/extensions-enabled&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
* Enable extensions by creating symbolic links to contents of the &amp;lt;tt&amp;gt;/etc/mediawiki-extensions/extensions-available&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
** To enable all extensions, run: &amp;lt;tt&amp;gt;for i in ../extensions-available/* ; do sudo ln -s /etc/mediawiki-extensions/extensions-available/`basename $i` . ; done&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enabling other Extensions===&lt;br /&gt;
* Download the extension to &amp;lt;tt&amp;gt;/var/lib/mediawiki1.10/extensions&amp;lt;/tt&amp;gt;&lt;br /&gt;
* See &amp;lt;tt&amp;gt;/var/lib/mediawiki/extensions/README&amp;lt;/tt&amp;gt; for up-to-date information on enabling it&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>