<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0ENQ34_cSp7ImA9WxJUE0o.&quot;"><id>tag:blogger.com,1999:blog-30744165</id><updated>2009-07-12T10:21:32.049+04:00</updated><title>Записки дебианщика</title><subtitle type="html">В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://mydebianblog.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default?start-index=11&amp;max-results=10&amp;redirect=false&amp;orderby=published&amp;v=2" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>239</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>10</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/debianletters" type="application/atom+xml" /><feedburner:emailServiceId>debianletters</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fdebianletters" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/debianletters" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fdebianletters" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fdebianletters" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;C0ECQX44cSp7ImA9WxJVEk8.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-619868849856838047</id><published>2009-06-29T00:41:00.000+04:00</published><updated>2009-06-29T00:41:00.039+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-29T00:41:00.039+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="данные" /><category scheme="http://www.blogger.com/atom/ns#" term="обработка" /><title>EXIF теги в Linux: зачем нужен EXIF</title><content type="html">В различных форматах графических файлов возможность хранить дополнительные сведения, например, время выдержки, значение диафрагмы, время или ещё что-нибудь. Это обеспечивает формат EXIF (Exchangeable Image File Format). В Linux для работы с тими EXIF данными есть такой мощный пакет утилит, как exiftools, всю полезность которого автор этих строк испытал на себе. Вот, например,&lt;span class="fullpost"&gt; потребовалось вам сохранить какие-то пометки о том, где сделан этот снимок - тут-то вам exiftools и пригодится.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;Например, выдираем теги из RAW-файла на примере цифровой камеры Canon EOS 400D&lt;br /&gt;exiftool IMG_0383.CR2   :&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;beast@notebeast:~$ exiftool IMG_0383.CR2&lt;br /&gt;ExifTool Version Number         : 6.57&lt;br /&gt;File Name                       : IMG_0383.CR2&lt;br /&gt;File Size                       : 8 MB&lt;br /&gt;File Modification Date/Time     : 2008:10:22 12:48:10&lt;br /&gt;File Type                       : CR2&lt;br /&gt;MIME Type                       : image/x-raw&lt;br /&gt;Image Width                     : 1936&lt;br /&gt;Image Height                    : 1288&lt;br /&gt;Bits Per Sample                 : 8 8 8&lt;br /&gt;Compression                     : JPEG (old-style)&lt;br /&gt;Make                            : Canon&lt;br /&gt;Camera Model Name               : Canon EOS 400D DIGITAL&lt;br /&gt;Preview Image Start             : 79450&lt;br /&gt;Orientation                     : Horizontal (normal)&lt;br /&gt;Preview Image Length            : 68724&lt;br /&gt;X Resolution                    : 72&lt;br /&gt;Y Resolution                    : 72&lt;br /&gt;Resolution Unit                 : inches&lt;br /&gt;Modify Date                     : 2008:10:15 15:44:26&lt;br /&gt;Exposure Time                   : 1&lt;br /&gt;F Number                        : 6.3&lt;br /&gt;Exposure Program                : Manual&lt;br /&gt;ISO                             : 100&lt;br /&gt;Exif Version                    : 0221&lt;br /&gt;Date/Time Original              : 2008:10:15 15:44:26&lt;br /&gt;Create Date                     : 2008:10:15 15:44:26&lt;br /&gt;Components Configuration        :&lt;br /&gt;Shutter Speed Value             : 1&lt;br /&gt;Aperture Value                  : 6.3&lt;br /&gt;Flash                           : Off&lt;br /&gt;Focal Length                    : 55.0mm&lt;br /&gt;Macro Mode                      : Normal&lt;br /&gt;Self-timer                      : 0&lt;br /&gt;Quality                         : RAW&lt;br /&gt;Canon Flash Mode                : Off&lt;br /&gt;Continuous Drive                : Single&lt;br /&gt;Focus Mode                      : Manual Focus&lt;br /&gt;Canon Image Size                : Unknown (-1)&lt;br /&gt;Easy Mode                       : Manual&lt;br /&gt;Digital Zoom                    : None&lt;br /&gt;Contrast                        : Normal&lt;br /&gt;Saturation                      : Normal&lt;br /&gt;Sharpness                       : +3&lt;br /&gt;Metering Mode                   : Center-weighted averaging&lt;br /&gt;Focus Range                     : Not Known&lt;br /&gt;Canon Exposure Mode             : Manual&lt;br /&gt;Long Focal                      : 55&lt;br /&gt;Short Focal                     : 18&lt;br /&gt;Focal Units                     : 1&lt;br /&gt;Max Aperture                    : 5.6&lt;br /&gt;Min Aperture                    : 32&lt;br /&gt;Flash Activity                  : 0&lt;br /&gt;Flash Bits                      : (none)&lt;br /&gt;Focus Continuous                : Unknown (8)&lt;br /&gt;Zoom Source Width               : 0&lt;br /&gt;Zoom Target Width               : 0&lt;br /&gt;Photo Effect                    : Off&lt;br /&gt;Color Tone                      : Normal&lt;br /&gt;Focal Type                      : Zoom&lt;br /&gt;Focal Plane X Size              : 23.04mm&lt;br /&gt;Focal Plane Y Size              : 15.37mm&lt;br /&gt;Auto ISO                        : 100&lt;br /&gt;Base ISO                        : 100&lt;br /&gt;Measured EV                     : -6.12&lt;br /&gt;Target Aperture                 : 6.3&lt;br /&gt;Exposure Compensation           : 0&lt;br /&gt;White Balance                   : Auto&lt;br /&gt;Slow Shutter                    : None&lt;br /&gt;Shot Number In Continuous Burst : 0&lt;br /&gt;Flash Guide Number              : 0&lt;br /&gt;Flash Exposure Compensation     : 0&lt;br /&gt;Auto Exposure Bracketing        : Off&lt;br /&gt;AEB Bracket Value               : 0&lt;br /&gt;Focus Distance Upper            : 0.77&lt;br /&gt;Focus Distance Lower            : 1&lt;br /&gt;Bulb Duration                   : 0&lt;br /&gt;Camera Type                     : EOS Mid-range&lt;br /&gt;Auto Rotate                     : None&lt;br /&gt;ND Filter                       : Unknown (-1)&lt;br /&gt;Self-timer 2                    : 0&lt;br /&gt;Canon Image Type                : Canon EOS 400D DIGITAL&lt;br /&gt;Canon Firmware Version          : Firmware 1.0.4&lt;br /&gt;Owner's Name                    : unknown&lt;br /&gt;Camera Body No.                 : 0730325266&lt;br /&gt;Set Button Cross Keys Func      : Set: Picture Style&lt;br /&gt;Long Exposure Noise Reduction   : Off&lt;br /&gt;Flash Sync Speed Av             : Auto&lt;br /&gt;Shutter-AE Lock                 : AF/AE lock&lt;br /&gt;AF Assist Beam                  : Emits&lt;br /&gt;Exposure Level Increments       : 1/3 Stop&lt;br /&gt;Mirror Lockup                   : Disable&lt;br /&gt;E-TTL II                        : Evaluative&lt;br /&gt;Shutter Curtain Sync            : 1st-curtain sync&lt;br /&gt;Magnified View                  : Image review and playback&lt;br /&gt;LCD Display At Power On         : Display&lt;br /&gt;Canon Model ID                  : EOS Digital Rebel XTi / 400D / Kiss Digital X&lt;br /&gt;Num AF Points                   : 9&lt;br /&gt;Canon Image Width               : 3888&lt;br /&gt;Canon Image Height              : 2592&lt;br /&gt;Canon Image Width As Shot       : 3504&lt;br /&gt;Canon Image Height As Shot      : 2336&lt;br /&gt;AF Points Used                  : (none)&lt;br /&gt;Serial Number Format            : Format 2&lt;br /&gt;Original Decision Data          : 0&lt;br /&gt;File Number                     : 128-0000&lt;br /&gt;Bracket Mode                    : Off&lt;br /&gt;Bracket Value                   : 0&lt;br /&gt;Bracket Shot Number             : 0&lt;br /&gt;Noise Reduction                 : Off&lt;br /&gt;WB Bracket Mode                 : Off&lt;br /&gt;WB Bracket Value AB             : 0&lt;br /&gt;WB Bracket Value GM             : 0&lt;br /&gt;Filter Effect                   : None&lt;br /&gt;Toning Effect                   : None&lt;br /&gt;Lens Type                       : EF-S18-55mm f/3.5-5.6&lt;br /&gt;Internal Serial Number          : H0885505&lt;br /&gt;Dust Removal Data               : (Binary data 1024 bytes, use -b option to extract)&lt;br /&gt;Tone Curve                      : Standard&lt;br /&gt;Sharpness Frequency             : n/a&lt;br /&gt;Sensor Red Level                : 0&lt;br /&gt;Sensor Blue Level               : 0&lt;br /&gt;White Balance Red               : 0&lt;br /&gt;White Balance Blue              : 0&lt;br /&gt;Color Temperature               : 5200&lt;br /&gt;Picture Style                   : Standard&lt;br /&gt;Digital Gain                    : 0&lt;br /&gt;WB Shift AB                     : 0&lt;br /&gt;WB Shift GM                     : 0&lt;br /&gt;Sensor Width                    : 3948&lt;br /&gt;Sensor Height                   : 2622&lt;br /&gt;Sensor Left Border              : 52&lt;br /&gt;Sensor Top Border               : 23&lt;br /&gt;Sensor Right Border             : 3939&lt;br /&gt;Sensor Bottom Border            : 2614&lt;br /&gt;WB RGGB Levels As Shot          : 2236 1024 1024 1507&lt;br /&gt;Color Temp As Shot              : 5211&lt;br /&gt;WB RGGB Levels Auto             : 2236 1024 1024 1507&lt;br /&gt;Color Temp Auto                 : 5211&lt;br /&gt;WB RGGB Levels Measured         : 2236 1024 1024 1507&lt;br /&gt;Color Temp Measured             : 5211&lt;br /&gt;WB RGGB Levels Daylight         : 2236 1024 1024 1507&lt;br /&gt;Color Temp Daylight             : 5200&lt;br /&gt;WB RGGB Levels Shade            : 2615 1024 1024 1253&lt;br /&gt;Color Temp Shade                : 7000&lt;br /&gt;WB RGGB Levels Cloudy           : 2427 1024 1024 1367&lt;br /&gt;Color Temp Cloudy               : 6000&lt;br /&gt;WB RGGB Levels Tungsten         : 1589 1086 1086 2509&lt;br /&gt;Color Temp Tungsten             : 3200&lt;br /&gt;WB RGGB Levels Fluorescent      : 1889 1034 1034 2126&lt;br /&gt;Color Temp Fluorescent          : 3769&lt;br /&gt;WB RGGB Levels Kelvin           : 2236 1024 1024 1507&lt;br /&gt;Color Temp Kelvin               : 5211&lt;br /&gt;WB RGGB Levels Flash            : 2479 1024 1024 1339&lt;br /&gt;Color Temp Flash                : 6262&lt;br /&gt;WB RGGB Levels PC1              : 512 1024 1024 512&lt;br /&gt;Color Temp PC1                  : 4255&lt;br /&gt;WB RGGB Levels PC2              : 512 1024 1024 512&lt;br /&gt;Color Temp PC2                  : 4255&lt;br /&gt;WB RGGB Levels PC3              : 512 1024 1024 512&lt;br /&gt;Color Temp PC3                  : 4255&lt;br /&gt;WB RGGB Levels Custom           : 1201 1133 1133 5999&lt;br /&gt;Color Temp Custom               : 2400&lt;br /&gt;User Comment                    :&lt;br /&gt;Flashpix Version                : 0100&lt;br /&gt;Color Space                     : sRGB&lt;br /&gt;Exif Image Width                : 3888&lt;br /&gt;Exif Image Length               : 2592&lt;br /&gt;Interoperability Index          : R98 - DCF basic file (sRGB)&lt;br /&gt;Interoperability Version        : 0100&lt;br /&gt;Focal Plane X Resolution        : 4433.295&lt;br /&gt;Focal Plane Y Resolution        : 4453.608&lt;br /&gt;Focal Plane Resolution Unit     : inches&lt;br /&gt;Custom Rendered                 : Normal&lt;br /&gt;Exposure Mode                   : Manual&lt;br /&gt;Scene Capture Type              : Standard&lt;br /&gt;Thumbnail Offset                : 78336&lt;br /&gt;Thumbnail Length                : 1114&lt;br /&gt;Photometric Interpretation      : RGB&lt;br /&gt;Samples Per Pixel               : 3&lt;br /&gt;Rows Per Strip                  : 256&lt;br /&gt;Planar Configuration            : Chunky&lt;br /&gt;Strip Offsets                   : 443086&lt;br /&gt;Strip Byte Counts               : 7543495&lt;br /&gt;Aperture                        : 6.3&lt;br /&gt;Drive Mode                      : Single-frame shooting&lt;br /&gt;Flash                           : Off&lt;br /&gt;Image Size                      : 1936x1288&lt;br /&gt;Lens                            : 18.0 - 55.0mm&lt;br /&gt;Preview Image                   : (Binary data 68724 bytes, use -b option to extract)&lt;br /&gt;Scale Factor To 35mm Equivalent : 1.6&lt;br /&gt;Shooting Mode                   : Manual&lt;br /&gt;Shutter Speed                   : 1&lt;br /&gt;Thumbnail Image                 : (Binary data 1114 bytes, use -b option to extract)&lt;br /&gt;WB RGGB Levels                  : 2236 1024 1024 1507&lt;br /&gt;Blue Balance                    : 1.47168&lt;br /&gt;Circle Of Confusion             : 0.019 mm&lt;br /&gt;Focal Length                    : 55.0mm (35mm equivalent: 85.9mm)&lt;br /&gt;Hyperfocal Distance             : 24.97 m&lt;br /&gt;Lens                            : 18.0 - 55.0mm (35mm equivalent: 28.1 - 85.9mm)&lt;br /&gt;Light Value                     : 5.3&lt;br /&gt;Red Balance                     : 2.183594&lt;br /&gt;&lt;/small&gt;&lt;/blockquote&gt;&lt;br /&gt;Забавно, да, а что ещё можно с EXIF делать? Например, чтобы выцедить из RAW-файла время выдержки, сделать надо вот что:&lt;br /&gt;&lt;blockquote&gt;exiftool -shutterspeed IMG_0383.CR2&lt;br /&gt;Shutter Speed                   : 1&lt;br /&gt;&lt;/blockquote&gt;Для того, чтобы использовать exif-теги, надо запросить список тегов в которые возможна запись. Пишем:&lt;br /&gt;&lt;blockquote&gt; exiftool -listw IMG_0383.CR2&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Так, например из кучи тегов мы хотим писать в тег City. Для этого:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ exiftool -City=Moscow IMG_0383.CR2&lt;br /&gt;   1 image files updated&lt;br /&gt;&lt;/blockquote&gt;И теперь:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ exiftool -City IMG_0383.CR2&lt;br /&gt;City                            : Moscow&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ура, теперь мы в тег City записали, что хотели. Утилита exiftools может не только читать, но и записывать информаицю в EXIF-теги. Это может быть полезно и нужно для хранения в RAW-файлах информации о съёмке.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;&lt;b&gt;И зачем всё это надо!?&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Причины, по которым есть необходимость модифицировать EXIF-данные в RAW-файлах могут быть разные. Вот, например, ув. тов. &lt;a href="http://sovety.blogspot.com/"&gt;jetxee&lt;/a&gt; хочет в фотографиях &lt;a href="http://sovety.blogspot.com/2008/07/blog-post.html"&gt;хранить геотеги&lt;/a&gt;, то есть где фотография была снята.&lt;br /&gt;&lt;br /&gt;Мне это потребовалось вот для чего. Результатами моих научных экспериемнтов являются куча RAW-файлов, и в каталоге лежит небольшой файл с условиями эксперимента (что снималось и для чего). Разные не очень технически продвинутые коллеги любят эти файлы копировать и использовать их где-то ещё (типа проверить и посмотреть), а потом говорят: "слушай, вот я тут картинку обработал, и результаты такие и такие - не помнишь, откуда этот файл!?". Хуже дело, если взяли по одному файлу из нескольких разных экспериментов и вот теперь надо разобраться, что откуда взято.&lt;br /&gt;&lt;br /&gt;В общем случае экспериментатор при таком вопросе бледнеет и начинает громко говорить плохими словами. Но этого можно не делать: внедрить информацию в сам RAW-файл в какой-нибудь хитрый тэг. Потом так проще отследить файлы.&lt;br /&gt;&lt;br /&gt;И теперь, чтобы избавить себя от нервотрёпки, делаем так: находим любой записываемый тег, и пишем туда то, что относится к эксперименту. После этого записываем нужные данные во ВСЕ файлы RAW скопом:&lt;br /&gt;&lt;blockquote&gt;  exiftool -City='Moscow Engineering Physics Institute' *.CR2&lt;br /&gt;&lt;br /&gt;  10 image files updated&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;С удовлетворением видим:&lt;br /&gt;&lt;blockquote&gt;exiftool -City *.CR2&lt;br /&gt;======== IMG_0383.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0384.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0385.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0386.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0387.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0388.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0389.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0390.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0391.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;======== IMG_0392.CR2&lt;br /&gt;City                            : Moscow Engineering Physics Institute&lt;br /&gt;  10 image files read&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;И всё дела. И уж теперь ваши нерадивые коллеги не введут вас в ступор вопросом: а отуда этот файлик!?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-619868849856838047?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=8ICR-2MhxlE:hMF0DIJeEYY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=8ICR-2MhxlE:hMF0DIJeEYY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=8ICR-2MhxlE:hMF0DIJeEYY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=8ICR-2MhxlE:hMF0DIJeEYY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/8ICR-2MhxlE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/619868849856838047/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/06/exif-linux-exif.html#comment-form" title="Комментарии: 7" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/619868849856838047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/619868849856838047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/8ICR-2MhxlE/exif-linux-exif.html" title="EXIF теги в Linux: зачем нужен EXIF" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/06/exif-linux-exif.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcESXs7eip7ImA9WxJWEEo.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-7034002398315611011</id><published>2009-06-15T00:39:00.002+04:00</published><updated>2009-06-15T17:53:28.502+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-15T17:53:28.502+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="обработка" /><category scheme="http://www.blogger.com/atom/ns#" term="изображение" /><title>Qtpfsgui: создание HDR изображений из нескольких кадров</title><content type="html">В этой заметке приводится краткое описание и впечатления по созданию изображений с высоким динамическим диапазоном (HDR, High Dynamic Range) с помощью программы &lt;span style="font-weight: bold;"&gt;Qtpfsgui&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 102, 51); font-weight: bold;"&gt;Небольшой исторический экскурс&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Как справедливо отмечают авторы ресурса &lt;a href="http://hdr-mania.ru/articles/istoriya-hdr"&gt;HDRmania&lt;/a&gt;, первое сообщение о процессе компрессии динамического диапазона обычных цифровых изображений, снятых с экспокоррекцией, появилось в 1993 г. А в 1995 году последовало появление соответствующей математической теории.&lt;br /&gt;В 1997 году на конференции SIGGRAPH (Special Interest Group on GRAPHics and Interactive Techniques) Пол Дебевек (Paul Debevec), исследователь из Института Южной Калифорнии, представил метод соединения нескольких изображений, сделанных с разной экспозицией, для формирования единого HDR изображения. С ростом популярности цифровых фотоаппаратов и удобного для использования программного обеспечения термин HDR начал широко применяться для обозначения этого процесса. Более подробный обзор, с указанием на научные статьи, есть &lt;a href="http://www.mvkonnik.info/2008/11/high-dynamic-range-imagery.html"&gt;у меня на английском&lt;/a&gt;.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 102, 51); font-weight: bold;"&gt;Cъёмка HDR-изображений&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Для того, чтобы получить HDR-изображение, потребуется снять несколько кадров с разным значением экспозиции (или экспокоррекции). Напомню, что экпокорреция это поправка в экспозицию снимка относительно той, которая определена при помощи экспонометра. Для регистрации HDR-изображения:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Устанавливаем камеру на штативе.&lt;/li&gt;&lt;li&gt;Переводим камеру в ручной режим установки экспозиции. Выберите нужное значение диафрагмы для вашего кадра (например, f/8 или меньше, если вам нужна большая глубина резкости) и установите минимальное значение ISO.&lt;/li&gt;&lt;li&gt;Изменяем освещённость в самой яркой части кадра (точечным замером или в режиме Av, чтобы учесть только её) и отмечаем время экспозиции. Сделайте то же самое с самой глубокой тенью в кадре.&lt;/li&gt;&lt;li&gt;Определяем число и величину нужных экспозиций. Для этого возьмите за основу выдержку, измеренную для светлой части. Умножьте это число на 4, чтобы получить следующее значение экспозиции, отличающееся на 2 EV. Умножайте на 4 для получения следующих значений, пока не превысите экспозицию, измеренную для тени. Для большинства кадров вне помещения, не включающих солнце, 3 экспозиций с шагом 2 EV часто достаточно, чтобы покрыть весь динамический диапазон.&lt;/li&gt;&lt;/ol&gt;Напомню, что сдвиг экспозиции на 1 EV означает изменение количества света, попавшего на фотоматериал, в 2 раза. Для создания HDR-снимка часто достаточно сфотографировать три кадра: с экспокоррекцией -1 EV, 0 EV и +1 EV.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 102, 51); font-weight: bold;"&gt;Работа с Qtpfsgui&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Трудновыговариваемое название программы &lt;span style="font-weight: bold;"&gt;Qtpfsgui&lt;/span&gt; объясняется самими &lt;a href="http://qtpfsgui.sourceforge.net/"&gt;авторами&lt;/a&gt; так: Qt  это библиотека Qt4 для отображения графических элементов, pfs - главная внутренняя библиотека, а gui  - Graphical User Interface, графический интерфейс пользователя. На такие названия, конечно, хочется попенять авторам. Но главное, что программа делает своё дело, и делает его хорошо.&lt;br /&gt;&lt;br /&gt;Итак, фотографии сняты и теперь можно приступить к созданию HDR-снимка. Запускаем &lt;span style="font-weight: bold;"&gt;Qtpfsgui&lt;/span&gt; и выбираем все файлы изображений для HDR-фотографии сразу. После этого нас спросят об алгоритме построения HDR снимка. Это показано на рисунке ниже:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/SgGFGa4NCdI/AAAAAAAABHA/RB0WHRNJOyg/s1600-h/qtpsfgui-04.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SgGFGa4NCdI/AAAAAAAABHA/RB0WHRNJOyg/s400/qtpsfgui-04.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 88px; height: 400px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SgGFGa4NCdI/AAAAAAAABHA/RB0WHRNJOyg/s400/qtpsfgui-04.jpg" alt="" id="BLOGGER_PHOTO_ID_5332689779124144594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;После этого будет рассчитано HDR-изображение из указанных снимков. Созданное изображение появится в главном окне программы:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hM8AMxgJLzw/SgGGAOjFXgI/AAAAAAAABHI/HxfuI9TQ65I/s1600-h/qtpsfgui-02.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_hM8AMxgJLzw/SgGGAOjFXgI/AAAAAAAABHI/HxfuI9TQ65I/s400/qtpsfgui-02.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_hM8AMxgJLzw/SgGGAOjFXgI/AAAAAAAABHI/HxfuI9TQ65I/s400/qtpsfgui-02.jpg" alt="" id="BLOGGER_PHOTO_ID_5332690772246748674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Созданное изображение можно сохранить в один из форматов, поддерживающих HDR:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;OpenEXR (расширение: exr )&lt;/li&gt;&lt;li&gt;Radiance RGBE (расширение: hdr)&lt;/li&gt;&lt;li&gt;Tiff: 16bit, 32bit (float) и LogLuv (расширение: tiff)&lt;/li&gt;&lt;li&gt;Raw (различные расширения)&lt;/li&gt;&lt;li&gt;PFS native format (расширение: pfs)&lt;/li&gt;&lt;/ol&gt;Если же требуется просматривать созданное изображение обычными графическими просмотрщиками, имеет смысл прибегнуть к тональной компрессии снимка и сохранить его в JPEG/TIFF. Тональная компрессия это преобразования тональных значений изображения из более широкого диапазона в более узкий. Например, HDR изображение с динамическим диапазоном 100 000:1 будет преобразовано в изображение с тональными значениями в диапазоне от 0 до 255. Для этого нажимаем на кнопку &lt;span style="font-style: italic;"&gt;Tonemap the HDR&lt;/span&gt; и выбираем один из методов тональной компрессии. &lt;span style="font-weight: bold;"&gt; Qtpfsgui &lt;/span&gt;содержит 8 алгоритмов тонального отображения, среди которых можно отметить следующие алгоритм Drago и Fattal.&lt;br /&gt;&lt;br /&gt;Алгоритм Drago предназначен для имитирования восприятия человеческого глаза и полезен, когда нужно добиться естественных тонов. Алгоритм Fattal хорош для создания сюрреалистических, очень эффектных фотографий, однако он усиливает шумы и может создавать при одних и тех же параметрах из HDR фотографий при тоновой компрессии фотографии, выглядящие по-разному.&lt;br /&gt;&lt;br /&gt;Для примера приведу HDR-изображение, которое я снял своей &lt;span style="color: rgb(192, 192, 192);"&gt;древней как мамонт&lt;/span&gt; камерой Casio QV-4000: три фотографии со значениями экпокоррекции -2EV, 0EV и +2EV пересчитаны в изображение с высоким динамическим диапазоном:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/SgGKd8JAGcI/AAAAAAAABHQ/vS-oKIls_gI/s1600-h/qtpsfgui-05.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SgGKd8JAGcI/AAAAAAAABHQ/vS-oKIls_gI/s320/qtpsfgui-05.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 243px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SgGKd8JAGcI/AAAAAAAABHQ/vS-oKIls_gI/s320/qtpsfgui-05.jpg" alt="" id="BLOGGER_PHOTO_ID_5332695680748100034" border="0" /&gt;&lt;/a&gt;После применения тональной компрессии полученное HDR-изображение можно сохранить в форматах JPG или TIFF.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Ссылки&lt;/span&gt;&lt;br /&gt;Ответы на часто задаваемые вопросы по HDR можно найти &lt;a href="http://www.hdrsoft.com/resources/dri.html#capture"&gt;тут &lt;/a&gt;(на английском) и &lt;a href="http://hdr-mania.ru/articles/istoriya-hdr"&gt;здесь&lt;/a&gt;, а так же можно &lt;a href="http://www.flickr.com/groups/qtpfsgui"&gt;посмотреть на образцы фотографий&lt;/a&gt;. Скачать &lt;strong&gt;Qtpfsgui&lt;/strong&gt; можно на&lt;a href="http://qtpfsgui.sourceforge.net/"&gt; сайте авторов&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-7034002398315611011?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=GRrgGAN6IPE:kcjXUc_Vwzs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=GRrgGAN6IPE:kcjXUc_Vwzs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=GRrgGAN6IPE:kcjXUc_Vwzs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=GRrgGAN6IPE:kcjXUc_Vwzs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/GRrgGAN6IPE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/7034002398315611011/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/06/qtpfsgui-hdr.html#comment-form" title="Комментарии: 11" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7034002398315611011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7034002398315611011?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/GRrgGAN6IPE/qtpfsgui-hdr.html" title="Qtpfsgui: создание HDR изображений из нескольких кадров" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_hM8AMxgJLzw/SgGFGa4NCdI/AAAAAAAABHA/RB0WHRNJOyg/s72-c/qtpsfgui-04.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/06/qtpfsgui-hdr.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYGSX45eCp7ImA9WxJXGE4.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-1928900798210691153</id><published>2009-06-08T02:50:00.012+04:00</published><updated>2009-06-12T23:48:48.020+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-12T23:48:48.020+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="КПК" /><category scheme="http://www.blogger.com/atom/ns#" term="железо" /><category scheme="http://www.blogger.com/atom/ns#" term="дебиан" /><title>Toshiba Netbook NB-100: маленькое японское чудо</title><content type="html">Надумал купить себе небольшой нетбук, который удобно было бы таскать с собой для разного рода выступлений, лекций и презентаций. Большие мощности там ни к чему, нужно просто крутить PDF-презентации на внешнем мониторе, работать с текстом и время от времени выходить в интернет. И вот, поискав доступные варианты, остановился на Toshiba NB-100 с предустановленной Ubuntu Netbook Remix. &lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;&lt;b&gt;Нетбук сразу из коробки&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Первое впечатление - &lt;i&gt;"ой, какой маленький!" &lt;/i&gt;И это именно так: нетбук очень мал и компактен, лёгок и изящен. Хитрые японцы сделали клавиатуру как раз такого размера, что ещё чуть-чуть меньше, и работать на ней уже просто невозможно. То есть клавиатура в целом неплоха, но набирать на ней длинные тексты, конечно, утомительно. Работа с такими маленькими кнопкам требует небольшого привыкания, но в целом не смертельно.  Маленький тачпад довольно чуток к прикосновениям, отрабатывает нажатия вполне прилично. Динамик расположен внизу экрана, и довольно громкий; наверху экрана есть вебкамера, хотя её 0.3 мегапикселей едва хватает для сколько-нибудь приличной видеоконференции.&lt;br /&gt;&lt;br /&gt;Хочется отметить, что вариант процессора Intel Atom в нетбуке от Тошибы с Hyperthreading, что вместе с SATA-винчестером положительно влияют на скорость работы машины: всё работает &lt;i&gt;очень быстро&lt;/i&gt; и плавно, что не может не радовать. Маленький 8.9" монитор Тошибы намного ярче моего Asus M5200AE, так что на нём можно работать даже в яркий солнечный день. Глянцевый монитор, хоть мне и не нравится его гламурность и способность отражать всё и вся, очень хороший и яркий, работать за ним приятно.&lt;br /&gt;&lt;br /&gt;По умолчанию предустановлена Ubuntu 8.04 с ядром 2.6.24-19lpia, как оно себя называет. При первом запуске в магазине настройка заняла не больше минуты, в то время как рядом сидевшие с Windows Vista ждали первый запуск аж 15 минут. После вопросов о логине\пароле, текущем часовом поясе и прочих мелочах загрузилась Ubuntu с интерфейсом вида "Netbook desktop":&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/SiucFJ_o6NI/AAAAAAAABHw/kOTFUFbVQPM/s1600-h/nb100-02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SiucFJ_o6NI/AAAAAAAABHw/kOTFUFbVQPM/s320/nb100-02.jpg" alt="" id="BLOGGER_PHOTO_ID_5344536995201345746" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Заблудиться тут в общем негде, но как переключаться между задачами я, честно говоря, не сразу понял. Побродив по настройкам, смог переключиться в нормальный убунтушный гномовский интерфейс, который называется "Classic desktop":&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/SiucWyMnsVI/AAAAAAAABH4/fe4OdJCTv68/s1600-h/nb100-03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 125px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/SiucWyMnsVI/AAAAAAAABH4/fe4OdJCTv68/s320/nb100-03.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537298050986322" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Не думаю, что прожжённые КДЕшники будут рады такому названию, но для Убунты оно действительно Классик. Шут с ним, впрочем, с названием - перед нами обычный GNOME на нетбуке:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/SiuceRVYWrI/AAAAAAAABIA/lims4vfGCLg/s1600-h/nb100-01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SiuceRVYWrI/AAAAAAAABIA/lims4vfGCLg/s320/nb100-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537426668313266" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Всё достаточно компактно, красиво и понятно: два виртуальных рабочих стола, корзина в самом углу, и кнопки наверху. После некоторого привыкания интерфейс вопросов не вызовет даже у самых неискушенных пользователей. Это из внешнего вида.&lt;br /&gt;&lt;br /&gt;Порадовало то, что Ubuntu сама нашла мою проводную сеть и тут же к ней подключилась по DHCP:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/SiucmazzRvI/AAAAAAAABII/0QX8JXWTc4s/s1600-h/nb100-05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 309px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SiucmazzRvI/AAAAAAAABII/0QX8JXWTc4s/s320/nb100-05.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537566650779378" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Приятная мелочь, так что теперь можно немного побродить по Интернету с помощью Firefox, который так же имеется в комплекте предустановленного софта. Тут начинаются лёгкие минусы: в Firefox натолкали столько панелей инструментов, что хоть беги - никто не подумал, что экран нетбука всего 1024x600 пикселей, там и так ни черта не видать:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/SiuctMwOMbI/AAAAAAAABIQ/VFMzlktqbX0/s1600-h/nb100-04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/SiuctMwOMbI/AAAAAAAABIQ/VFMzlktqbX0/s320/nb100-04.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537683136754098" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Да, это можно отключить, но зачем же это по умолчанию!?&lt;br /&gt;&lt;br /&gt;Идём по софту, который есть прямо из коробки. Имеем OpenOffice 2.4, F-spot, Firefox, Evolution, Stardict - это то, что сразу бросилось в глаза. В общем, софта хватает. Единственное, что поразило - не установленный по умолчанию GiMP. Это для меня большая загадка. Впрочем, используя замечательные репозитории &lt;strike&gt;Debian&lt;/strike&gt;Ubuntu это можно быстро преодолеть. К слову сказать, процесс установки софта в Убунте меня очень порадовал: все красиво, понятно, с подсказками и большими глянцевыми кнопками, чтобы не промахнуться. :-) Мои олдскульные замашки с aptitude install от рута здесь не проходят.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Siucz6qrm8I/AAAAAAAABIY/aWVVoDhrepw/s1600-h/nb100-06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Siucz6qrm8I/AAAAAAAABIY/aWVVoDhrepw/s320/nb100-06.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537798540762050" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;И тут начались первые косяки. Задумал поставить программу Planner, которая помогает планировать своё время - однако при установке сразу запустился некий scrollkeeper и отожрал всё процессорное время, при этом отказываясь продолжать установку. Пришлось использовать грубую физическую силу в виде sudo killall и выдирать его оттуда. Мне удалось поставить GIMP, чтобы сделать пару скриншотов, и на этом я удовлетворился.&lt;br /&gt;&lt;br /&gt;Побродив по всему этому глянцевому гламуру с весёлыми кнопками, я заскучал по своим любимым приложениям: MC, Yakuake, Kate... К тому же иногда хочется немного покрасноглазить и поработать от &lt;i&gt;root&lt;/i&gt; для того, чтобы что-то подогнать под себя в системных настройках. А постоянно писать sudo мне непривычно. И вот я уже готовлю загрузочную флешку с установщиком Debian Lenny для водружения привычной среды обитания на нетбук.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;&lt;b&gt;Debian Lenny и Toshiba NB100&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Загрузка с флешки имела один забавный момент в моём случае: если у вас в USB-порт воткнуто ещё что-то кроме флешки, загрузиться с флешки не удастся. После вытыкания мыши всё пошло как по маслу: знакомый инсталлятор (ссылка на Установку Дебиан) сам быстро нашёл мою проводную сеть, предложил выбрать интернет-репозиторий, разбить диск и выбрать по желанию пакеты для дальнейшей установки. Вопросов инсталлятор Lenny задаёт ощутимо меньше, чем Etch-евский.&lt;br /&gt;&lt;br /&gt;Я разбил весь диск одним куском, файловая система ext3, свопа нет (только swap-file), на что инсталлятор мне попенял (но , предупредив о последствиях, согласился со словами "ты жираф, тебе видней"). Без разговоров был установлен загрузчик Grub и прогрессивная локаль UTF8 (мои старпёрские привычки к Lilo и koi8 не учитывались). Установка прошла быстро и без проблем: даже учитывая моё медленное соединение в 64кБ/сек базовая система развернулась за 30 минут.&lt;br /&gt;&lt;br /&gt;Устройства нашлись ядром все - вот вывод lspci для NB-100:&lt;br /&gt;00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)&lt;br /&gt;00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)&lt;br /&gt;00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)&lt;br /&gt;00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)&lt;br /&gt;00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)&lt;br /&gt;00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)&lt;br /&gt;00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)&lt;br /&gt;00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)&lt;br /&gt;00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)&lt;br /&gt;00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)&lt;br /&gt;00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)&lt;br /&gt;00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)&lt;br /&gt;00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)&lt;br /&gt;00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)&lt;br /&gt;00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02)&lt;br /&gt;00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)&lt;br /&gt;01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)&lt;br /&gt;02:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Дальше было всё ещё скучнее - никаких&lt;a href="http://mydebianblog.blogspot.com/2007/09/acpi-intel-prowireless-asus-m5200ae.html"&gt; увлекательных триллеров с погоней, стрельбой и развратными женщинами по настройке Wifi&lt;/a&gt; или, скажем, &lt;a href="http://mydebianblog.blogspot.com/2007/04/asus-m5200ae.html"&gt;cardreader&lt;/a&gt;, не было. Стандартное ядро из Lenny за номером 2.6.26-2 подняло ВСЁ оборудование сразу же и без лишних телодвижений. Мне потребовалось только быстро доставить все нужные мне службы и поставить иксы, которые тут же завелись сразу на widescreen 1024х600. Здесь меня встретила только одна маленькая неприятность, отнявшая у меня минут 10 на гуглёж и решение: &lt;b&gt;совершенно чудовищных размеров шрифты&lt;/b&gt;. Решилось довольно быстро:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;При старте иксов вручную идём править файл &lt;i&gt;/etc/X11/xinit/xserverrc&lt;/i&gt; в котором исправляем строку&lt;i&gt; exec /usr/bin/X -nolisten tcp&lt;/i&gt;  на строку &lt;i&gt; &lt;/i&gt;&lt;i&gt;exec /usr/bin/X -nolisten tcp -dpi 96&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Если иксы стартуют автоматически при загрузке машины (а это так скорее всего и будет), всё немножко сложнее. Нужно иксам указать явно, что мы хотим 96dpi на мониторе. Для этого в файле &lt;i&gt;/etc/X11/xorg.conf&lt;/i&gt; вписываем&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;Section "Monitor"&lt;br /&gt;...&lt;br /&gt;DisplaySize AA BB # 96 DPI @ 1280x960&lt;br /&gt;...&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Заменяем АА и ВВ на числа, посчитанные так: АА=1024 x 25.4 / 96 и  BB = 600 x 25.4 / 96  Здесь подставлено моё разрешение экрана нетбука 1024х600. После этого в разделе &lt;b&gt;Device section &lt;/b&gt;вписываем параметр:&lt;br /&gt;&lt;br /&gt;Option   "NoDDC" "true"&lt;br /&gt;&lt;br /&gt;Всё, это выставит нормальное разрешение и сделает шрифты на нетбуке приличных размеров. За этот трюк спасибо великолепному &lt;a href="http://wiki.archlinux.org/index.php/Xorg#Display_Size.2FDPI"&gt;&lt;span style="text-decoration: underline;"&gt;Arch&lt;/span&gt;&lt;/a&gt;&lt;a href="http://wiki.archlinux.org/index.php/Xorg#Display_Size.2FDPI"&gt; Wiki.&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;После этого процесс настройки пошёл, как и прежде, без сучка и задоринки: установил IceWM и все необходимые приложения. Я был снова поражён скоростью работы системы, особенно винчестера: установка пакетов была просто молниеносной, и я не успевал набирать новые названия пакетов. В целом за полтора часа я установил всё: openoffice 3.1, gimp, cinepaint, inkscape, kate, kile, yakuake, mocp, octave, MATLAB, firefox, opera, samba, cups, alsa, imagemagick...&lt;br /&gt;&lt;br /&gt;Немного поигрался с темами для IceWM и нашёл пару тем с маленькими размерами заголовков окон и панелью задач. Вот, например, тема Thin Black для IceWM на фоне нескольких приложений:&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/Siuc6CdwobI/AAAAAAAABIg/2M35s9elqrg/s1600-h/nb100-7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Siuc6CdwobI/AAAAAAAABIg/2M35s9elqrg/s320/nb100-7.jpg" alt="" id="BLOGGER_PHOTO_ID_5344537903713264050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Практически - кроме ещё одной маленькой партизанской засады под названием Clone Mode. В переводе это значит, что я хочу гонять презентации не только на своём мониторе, но и на проекторе. Тут я вспомнил уважаемых комментаторов, намекавших на Xrandr в этом вопросе, и решил попробовать, благо xrandr у меня на нетбуке с Debian Lenny версии 1.2. Небольшой &lt;a href="http://www.thinkwiki.org/wiki/Xorg_RandR_1.2"&gt;гуглёж&lt;/a&gt; сразу вывел на решение всех проблем: просто пишем&lt;br /&gt;&lt;blockquote&gt;$ xrandr --output VGA --auto&lt;/blockquote&gt;и тут же получаем желаемый Clone Mode без всяких правок xorg.conf&lt;br /&gt;Тут нам сразу наступает счастье: осталось только запустить OpenOffice Impress и крутить презентации.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Заключение&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/big&gt;В общем, целом и частностях, новой машиной я очень доволен. Маленький и шустрый нетбук радует ярким монитором, быстрой работой и привычным окружением Debian. Всё, что нужно, на нём работает, и настройка заняла не больше полутора часов до получения полностью работоспособной системы со всеми нужными мне приложениями.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-1928900798210691153?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=5wy3jj_7xLc:criicGNyiLw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=5wy3jj_7xLc:criicGNyiLw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=5wy3jj_7xLc:criicGNyiLw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=5wy3jj_7xLc:criicGNyiLw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/5wy3jj_7xLc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/1928900798210691153/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/06/toshiba-netbook-nb-100.html#comment-form" title="Комментарии: 16" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1928900798210691153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1928900798210691153?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/5wy3jj_7xLc/toshiba-netbook-nb-100.html" title="Toshiba Netbook NB-100: маленькое японское чудо" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_hM8AMxgJLzw/SiucFJ_o6NI/AAAAAAAABHw/kOTFUFbVQPM/s72-c/nb100-02.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">16</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/06/toshiba-netbook-nb-100.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cAQXw5eip7ImA9WxJQEk0.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-1103653996326904488</id><published>2009-05-25T02:44:00.000+04:00</published><updated>2009-05-25T02:44:00.222+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-25T02:44:00.222+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="юмор" /><category scheme="http://www.blogger.com/atom/ns#" term="изображение" /><title>Обработка изображений: История одной камеры</title><content type="html">Многие считают обработку изображений либо баловством в фотошопе, либо занудной и скучной вереницей формул. Мне хотелось бы показать, что это далеко не так - и для этого я решил вспомнить одну забавную историю, связанную с цифровой фотографией.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;i&gt;Хотелось как лучше,&lt;br /&gt;получилось - как всегда&lt;br /&gt;(с) Золотая Классика&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;&lt;big&gt;Фотографии в полной темноте&lt;br /&gt;&lt;/big&gt;&lt;/b&gt;&lt;/span&gt;Иногда нужно сделать фотографию либо в полной темноте, либо в условиях плохого освещения. Для этого сначала надо навестись на резкость - а света мало. Что можно сделать? Например, подсветить это вспышкой, однако это может испортить снимок (например, если снимается животное в темноте) или сильно посадить аккумуляторы.&lt;br /&gt;&lt;br /&gt;Что придумала компания Sony в своём фотоаппарате Sony DSC-V1? Она вставила туда ИК-подсветку и механически отодвигаемый ИК-фильтр. Очень интересное решение: вроде бы обычная цифровая камера, но есть возможность снимать не только в видимом, но и в инфракрасном диапазоне.&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;Зачем на матрице ИК-фильтры? Очень просто: дело в том, что твердотельные матрицы очень воспринимают ИК-диапазон - максимальная чувствительность обычно в районе 800 нм. Если ИК-фильтр перед матрицей не поставить, это собьёт цветопередачу на снимке.&lt;/small&gt;&lt;/blockquote&gt;Возможность съёмки в ИК-диапазоне сильно расширяет возможности фотографа. В ИК деревья с листьями выглядят как покрытые снегом, а облака отлично прорабатываются (в ИК "дымка" прозрачна). Практически вся зеленая растительность отлично отражает ИК. А значит, на снимке будет не черной, как могло бы показаться через красный светофильтр, а ярко-белой. А небо и вода, наоборот, становятся темным - почти черным. Облака при этом остаются ярко-белыми. Очень красивыми получаются снимки с растительностью и камнями: белые листья хорошо контрастируют с темным камнем.&lt;br /&gt;&lt;br /&gt;Какие же ещё применения можно найти съёмке в ИК-диапазоне? Ну, например, можно прочесть текст, залитый чернилами, осветив его ИК-прожектором и сфотографировав.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;&lt;big&gt;Техника контактирует с народом&lt;br /&gt;&lt;/big&gt;&lt;/b&gt;&lt;/span&gt;Но это всё ничто по сравнению с тем, что большинство синтетических материалов, из которых делается одежда, тоже прозрачны в этом диапазоне.Так что можно фотографировать&lt;br /&gt;людей в одежде, а на снимке они будут как бы без неё. Снимки будут не&lt;br /&gt;цветными, но это в общем, не так важно.&lt;br /&gt;&lt;br /&gt;Сие открывает &lt;i&gt;заманчивые&lt;/i&gt; перспективы для хулиганствующих элементов: на пляже можно фотографировать таким фотоаппаратом весёленькие снимки сквозь одетые купальники красивых барышень...&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;Возможность съёмки сквозь одежду и синтетические ткани - чрезвычайно увлекательная перспектива, которая так же может найти применение в охранных системах. Не всякая ткань ИК-прозрачна (искусственные - достаточно прозрачны, натуральные, за исключением шелка, значительно меньше). Чем дальше от объекта расположена ткань, тем больше рассеяние и тем хуже виден сам объект. От угла подсветки видимость практически не зависит. Совсем непрозрачны ткани толстые - джинсовка, шерсть или махровые полотенца. Очень хорошо просвечиваются полимерные пленки (любого цвета - как белые, так и черные), например непрозрачные полиэтиленовые пакеты.&lt;/small&gt;&lt;/blockquote&gt;Не удивительно, что эта камера быстро стала лидером продаж, однако вскоре компанию Sony завалили жалобы. Нет, обладатели камер как раз тихо сопели и щёлкали затворами - жаловались объекты съёмки (как правило, прекрасного пола). По этому поводу был большой скандал, и камеру, разумеется, сняли с производства и начали отзыв из магазинов.&lt;br /&gt;&lt;br /&gt;Фотоаппараты с режимом ``ночной съемки`` (например, NightShot у Sony, NightView или MagicVU у Panasonic), имеющие отключаемый (убираемый механически) фильтр, больше не производятся, но дело их живёт. Есть несколько компаний, предлагающих за несколько большую стоимость серийные фотоаппараты, из которых убраны ИК-фильтры - таким образом, вы можете использовать её и как ИК-камеру, и как обычную фотокамеру. Эти компании обычно занимаются ещё и производством светофильтров.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;&lt;b&gt;Свято место пусто не бывает&lt;br /&gt;&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;После того, как замечательная камера Sony NightShot канула в лету, народ начал искать этому замену. Как часто бывает, искали не долго: быстро появились &lt;a href="http://www.maxmax.com/"&gt;умелые ребята&lt;/a&gt;, которые за умеренные деньги присылали обычные цифровые камеры, но со снятыми ИК-фильтрами.  На своём сайте они выкладывают фотографии в ИК-диапазоне сквозь нейлоновый вещевой мешок и женский манекен - с явным намёком на большее. На фотографиях, собственно, всё видно:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/SdZb9aoA6kI/AAAAAAAABFY/cOsmQK9FKGI/s1600-h/outshirtxdp.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SdZb9aoA6kI/AAAAAAAABFY/cOsmQK9FKGI/s320/outshirtxdp.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 249px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SdZb9aoA6kI/AAAAAAAABFY/cOsmQK9FKGI/s320/outshirtxdp.jpg" alt="" id="BLOGGER_PHOTO_ID_5320541120462121538" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mydebianblog.blogspot.com/2008/06/blog-post.html"&gt;Демонтаж ИК-фильтра&lt;/a&gt; - дело непростое и вы запросто можете повредить камеру: её придётся разбирать с задней части почти полностью - вынимая электронные платы и отсоединяя кабели.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Заключение&lt;br /&gt;&lt;/span&gt;Ни одно хорошее дело, как известно, не остаётся безнаказанным - идея у Sony была интересной, но дело дальше не пошло из-за человеческих слабостей. Однако при желании и небольших финансовых вливаниях можно возродить это увлечение...&lt;br /&gt;&lt;br /&gt;А вы говорите, что ИК-спектр и прочие физические термины - тоска зелёная...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-1103653996326904488?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=StcwxuE0auc:EalNr8Yx_zI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=StcwxuE0auc:EalNr8Yx_zI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=StcwxuE0auc:EalNr8Yx_zI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=StcwxuE0auc:EalNr8Yx_zI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/StcwxuE0auc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/1103653996326904488/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/05/blog-post.html#comment-form" title="Комментарии: 12" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1103653996326904488?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1103653996326904488?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/StcwxuE0auc/blog-post.html" title="Обработка изображений: История одной камеры" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_hM8AMxgJLzw/SdZb9aoA6kI/AAAAAAAABFY/cOsmQK9FKGI/s72-c/outshirtxdp.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/05/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDSHo_eyp7ImA9WxJREEs.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-6485069208302878610</id><published>2009-05-11T02:12:00.001+04:00</published><updated>2009-05-11T22:04:39.443+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-11T22:04:39.443+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="научное" /><category scheme="http://www.blogger.com/atom/ns#" term="ЛаТеХ" /><title>Отслеживание версий документов LaTeX с помощью скрипта на Python</title><content type="html">... и сверху ещё майонезом полить :-) На самом деле, задача вполне актуальная, а именно: есть документ LaTeX, с которым работает много людей - в документ вносятся правки. Большинство людей LaTeX не приемлют по личным причинам. По рукам ходит много распечаток документа разных версий, и нужно отслеживать, какая версия документа у каждого из них.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Публикуемое решение задачи довольно простое: LaTeX с помощью скрипта на Python узнаёт номер версии документа, находящегося под контролем системы управления версиями Subversion, и впечатывает в документ номер версии. &lt;/span&gt;&lt;span class="fullpost"&gt;В примере приводится система контроля версий &lt;span style="font-weight: bold;"&gt;Subversion,&lt;/span&gt; о которой &lt;a href="http://mydebianblog.blogspot.com/2008/06/subversion.html"&gt;уже говорилось&lt;/a&gt;, но при желании можно использовать &lt;i&gt;подставьте_сюда_вашу_любимую_систему_контроля_версий&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Для решения задачи нужно проделать несколько шагов. Во-первых, документ должен быть в репозитории системы контроля версий. Этим мы получаем номер ревизии, а стало быть, и всю информацию о том, какой документ обсуждается.&lt;br /&gt;&lt;br /&gt;Далее нам нужно в текст LaTeX-документа добавить скрипт на Python. Для этого сначала нужно научиться вызывать Python внутри LaTeX, что довольно просто благодаря замечательной статье &lt;a href="http://sovety.blogspot.com/2008/09/python-latex-sage.html"&gt;Python внутри LaTeX&lt;/a&gt; ув. тов.&lt;a target="_blank" href="http://www.blogger.com/profile/13602261362032769022"&gt; jetxee&lt;/a&gt;. Итак, требуется:&lt;ul&gt;&lt;li&gt;скачать файл &lt;a href="http://www.imada.sdu.dk/%7Eehmsen/python.sty" title="Embedding Python in LaTeX"&gt;python.sty&lt;/a&gt; и скопировать его в каталог с документом;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;в документе в преамбуле включить&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;code&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;\usepackage&lt;/span&gt;{python}&lt;/code&gt;;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;внутри документа фрагменты кода на Python помещать в окружение &lt;code&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;\begin&lt;/span&gt;{&lt;span style="color: rgb(51, 51, 255);"&gt;python&lt;/span&gt;}&lt;/code&gt; ...&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;code&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;\end&lt;/span&gt;{&lt;span style="color: rgb(51, 51, 255);"&gt;python&lt;/span&gt;}&lt;/code&gt; - теперь всё, что они выведут, станет частью конечного документа;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;запускать LaTeX теперь нужно с опцией &lt;i&gt;&lt;b&gt;&lt;code&gt;-shell-escape&lt;/code&gt;&lt;/b&gt;&lt;/i&gt; для запуска встроенного кода из-под LaTeX&lt;/li&gt;&lt;/ul&gt;Ну и, естественно, нужно иметь рабочий Python на машине. Впрочем, если у вас десктоп с графической оболочкой и обвешан разными рюшками, Python у вас скорее всего уже есть.&lt;br /&gt;&lt;br /&gt;Так, всё по отдельности у нас есть, и осталось запалить всё это вместе. Для этого в документ вставляем код (кусок реального документа, чтобы было понятно):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\documentclass&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[a4paper,10pt,oneside]{article}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[T2A]{fontenc}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[koi8-r]{inputenc}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[russian,english]{babel}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{amssymb,amsfonts,amsmath,mathtext}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{cite,enumerate,float,indentfirst}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{caption2,tabularx}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[dvips]{graphicx}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\graphicspath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{{pictures/}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;%&amp;lt;--------------Pythonated trick starts HERE!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{fancybox,fancyhdr} &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{python}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyhead&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[R]{}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyhead&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[L]{}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyhead&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[C]{}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyfoot&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[R]{}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyfoot&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[C]{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\textit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\textbf&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\input&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{svnstatus}}}}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\fancyfoot&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[L]{}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(240, 0, 0);"&gt;\begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 208);"&gt;python&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;#! /usr/bin/python&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;import os, string&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;cmd = 'svn status &lt;b&gt;ИМЯФАЙЛАТУТ&lt;/b&gt;.tex -v'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;fpipe = os.popen(cmd)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;piperesult = fpipe.read()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;fpipe.close()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;results = piperesult.split()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;if results[0] == 'M':&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;out = 'Subversion revision of this document is '+results[1]+', last modified by '+results[3]+', STATUS: '+results[0]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;else:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;out = 'Subversion revision of this document is '+results[1]+', last modified by '+results[2]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;FileName='svnstatus.tex'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;fout=open(FileName,'w')&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;fout.write(out)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;fout.close()&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(240, 0, 0);"&gt;\end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 208);"&gt;python&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;%&amp;lt;--------------Pythonated trick ends HERE!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\makeatletter&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\bibliographystyle&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{unsrt} &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;%Стиль библиографических ссылок БибТеХа&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;% Заменяем библиографию с квадратных скобок на точку:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\renewcommand&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\@&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;biblabel}[1]{#1.} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\makeatother&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;% Рис.1. - как у нас принято.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\renewcommand&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{\captionlabeldelim}{.}   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;% Меняем поля страницы&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\usepackage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{geometry}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\geometry&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{left=2cm}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\geometry&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{right=2cm}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\geometry&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{top=2cm}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\geometry&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{bottom=3cm}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;&lt;/span&gt;&lt;span style="color: rgb(240, 0, 0);"&gt;\begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 208);"&gt;document&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;% \usefont{T2A}{ftm}{m}{sl}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\pagestyle&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{fancy}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(240, 0, 0);"&gt;\begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 208);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The registration of correlation signals....&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(240, 0, 0);"&gt;\end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 208);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Небольшие комментарии к коду. Я использовал возможности пакета &lt;i&gt;fancyhdr&lt;/i&gt; для того, чтобы вставить упоминание о ревизии документа в колонтитуле - чтобы на каждой странице это было видно. Питонистый скрипт довольно прост, а если вы захотите его оптимизировать - напильник вам в руки. &lt;br /&gt;&lt;br /&gt;После этого в ваш документ внизу страницы будет вставляться номер его ревизии в Subversion, что будет видно и при печати. Мне это сэкономило много нервов и седых волос.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-6485069208302878610?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=Tw1IlDoM1VE:qLXdG1HX8OE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=Tw1IlDoM1VE:qLXdG1HX8OE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=Tw1IlDoM1VE:qLXdG1HX8OE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=Tw1IlDoM1VE:qLXdG1HX8OE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/Tw1IlDoM1VE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/6485069208302878610/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/05/latex-python.html#comment-form" title="Комментарии: 17" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/6485069208302878610?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/6485069208302878610?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/Tw1IlDoM1VE/latex-python.html" title="Отслеживание версий документов LaTeX с помощью скрипта на Python" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">17</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/05/latex-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FRHs4fSp7ImA9WxJSFU4.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-5769086622290562341</id><published>2009-05-04T04:50:00.002+04:00</published><updated>2009-05-05T18:30:15.535+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-05T18:30:15.535+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="научное" /><title>Шумоподавление на чипе современных CMOS-фотосенсоров</title><content type="html">&lt;div style="text-align: right; color: rgb(102, 102, 102);"&gt;&lt;span style="font-style: italic;"&gt;По материалам&lt;/span&gt; &lt;span style="font-style: italic;"&gt;кандидатской&lt;/span&gt; &lt;span style="font-style: italic;"&gt;диссертации&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;У многих из нас есть цифровые фотокамеры - с их помощью можно сделать очень хороший снимок, даже если это камера мобильного телефона. Изображение современных камер отличается детализованностью и низким уровнем шумов. Как же им это удаётся?&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Большинство современных цифровых фотокамер оснащены CMOS-сенсорами. Как известно, одним из главных недостатков CMOS-сенсоров является их высокий уровень шума. Тем не менее, современные CMOS-фотосенсоры, произведённые по 4/5Т-технологии, позволяют получать изображения с уровнем шумов, сравнимым с уровнем шумов CCD-фотосенсоров. Это достигается шумоподавлением на самом фотосенсоре и CMOS-пикселе. Данное обстоятельство следует учитывать при проведении измерений и регистрации сигналов на CMOS-фотоприёмники, а так же при оценке характеристик CMOS-сенсоров. &lt;p&gt;Широкое применение CMOS-сенсоров связано с их весьма важным достоинством: при увеличении размеров фотосенсора энергетические затраты на передачу данных об изображении практически не увеличиваются. Если количество считывающих каналов в CMOS-сенсорах остаётся неизменным, то энергопотребление сенсора остаётся одинаковым и не возрастает при увеличении размера сенсора (см.Рис.&lt;span style="text-decoration: underline;"&gt; 1&lt;/span&gt;&lt;a href="file:///home/beast/matlab/docus/phdthesis/zagashnikPhD_Konnik/zagashnikPhD_Konnik.html#fig:CanonFullFrameCMOSpowerconsumption"&gt;&lt;/a&gt;). С другой стороны, CCD-сенсоры перемещают зарядовые пакеты, и это существенно более энергозатратно. Убыстрение процесса считывания в CCD-сенсорах так же приводит к дополнительному расходу энергии, что нежелательно в портативной технике. Даже по сравнению с малыми сенсорами, CCD-сенсоры потребляют вдвое больше энергии, чем CMOS, что видно на Рис.1. Сравнение полноформатных, 35-мм сенсоров показывает, что CCD-сенсоры потребляют почти втрое больше энергии, чем CMOS.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.1:&lt;/strong&gt; Сравнение энергопотребления современных CMOS и CCD-фотосенсоров.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/SfWOkrUhCJI/AAAAAAAABGA/nV4_X688948/s1600-h/img47.png"&gt;&lt;img src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SfWOkrUhCJI/AAAAAAAABGA/nV4_X688948/s320/img47.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 471px; height: 214px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SfWOkrUhCJI/AAAAAAAABGA/nV4_X688948/s320/img47.png" alt="" id="BLOGGER_PHOTO_ID_5329322494818060434" border="0" /&gt;&lt;/a&gt;         &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt; Однако при проведении оценки характеристик CMOS-сенсоров следует учитывать то обстоятельство, что получаемые изображения для оценки темновых и световых шумов в значительной степени предобработаны электроникой камеры ещё до записи в RAW-файл или передачи в компьютер для последующей обработки. Ниже следует краткое описание методов шумоподавления на CMOS-фотосенсорах &lt;/p&gt;&lt;p&gt;Для того, чтобы устранить высокий уровень шумов CMOS-сенсоров, требуется создавать фотосенсоры с большим количеством транзисторов. Именно это позволяет производить шумоподавление внутри каждого пикселя, что приводит к существенному снижению уровня шума. Это потребовало создания сложных технологий 4/5Т производства CMOS-фотосенсоров.  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;h3&gt;&lt;a name="SECTION00401100000000000000"&gt; Подавление темновых шумов&lt;/a&gt; &lt;/h3&gt; Называемый так же FPN, Fixed Pattern Noise, этот шум представляет собой разное смещение уровня сигнала для разных пикселей фотосенсора. В CMOS-сенсорах, помимо FPN, имеется так же неоднородность сигнала по столбцам. &lt;p&gt; Основным методом устранения такого шума является метод CDS, Correlated Double Sampling. Процесс шумоподавления по методу CDS проиллюстрирован на Рис.2.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div align="center"&gt;&lt;a name="fig:CanonfullframecmosFPNreduction"&gt;&lt;/a&gt;&lt;a name="398"&gt;&lt;/a&gt; &lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.2:&lt;/strong&gt; Метод CDS для подавления фиксированного шума на изображениях, зарегистрированных фотосенсорами CMOS.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_LzO9ioI/AAAAAAAABGI/u6d22nlS_jY/s1600-h/img48.png"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_LzO9ioI/AAAAAAAABGI/u6d22nlS_jY/s320/img48.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 473px; height: 246px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_LzO9ioI/AAAAAAAABGI/u6d22nlS_jY/s320/img48.png" alt="" id="BLOGGER_PHOTO_ID_5329798155980343938" border="0" /&gt;&lt;/a&gt;          &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt; В методе CDS производится одновременное считывание светового сигнала и темнового двумя независимыми считывателями. Темновой сигнал накапливается в пикселях фотосенсора, которые защищены от света. Сначала считывается только информация о темновом шуме, потом считывается световой сигнал вместе с темновым шумом. Далее из считанного сигнала вычитается темновой шум. После этого на изображении, зарегистрированным CMOS-фотоприёмником, фиксированный шум FPN компенсирован (см.Рис.3). Для этого использование технологии 4/5T является критичным.  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div align="center"&gt;&lt;a name="fig:CanonfullframecmosFPNreduction1"&gt;&lt;/a&gt;&lt;a name="399"&gt;&lt;/a&gt; &lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.3:&lt;/strong&gt; Процесс шумоподавления по методу CDS.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sfc_UvRQAbI/AAAAAAAABGQ/mabZl2yBqyc/s1600-h/img49.png"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sfc_UvRQAbI/AAAAAAAABGQ/mabZl2yBqyc/s320/img49.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 492px; height: 103px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sfc_UvRQAbI/AAAAAAAABGQ/mabZl2yBqyc/s320/img49.png" alt="" id="BLOGGER_PHOTO_ID_5329798309535023538" border="0" /&gt;&lt;/a&gt;          &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt; Однако большее искажение в регистрируемое изображение вносит шум, связанный с неоднородностью фоточувствительности. Это вытекает из того факта, что технологически невозможно изготовить миллионы одинаковых CMOS-пикселей с усилителями внутри. &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;h3&gt;&lt;a name="SECTION00401200000000000000"&gt; Подавление шума, зависящего от светового сигнала&lt;/a&gt; &lt;/h3&gt; Так как каждый пиксель CMOS-сенсора содержит несколько транзисторов, управляющих передачей данных, технологически невозможно сделать их идентичными. Это приводит к неоднородности величины сигнала даже при регистрации плоского светового поля, что проиллюстрировано на Рис&lt;span style="text-decoration: underline;"&gt;. 4&lt;/span&gt;&lt;a href="file:///home/beast/matlab/docus/phdthesis/zagashnikPhD_Konnik/zagashnikPhD_Konnik.html#fig:CanonfullframecmosPRNUreduction1"&gt;&lt;/a&gt;  &lt;p&gt;  &lt;/p&gt;&lt;div align="center"&gt;&lt;a name="fig:CanonfullframecmosPRNUreduction1"&gt;&lt;/a&gt;&lt;a name="400"&gt;&lt;/a&gt; &lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.4:&lt;/strong&gt; Сигнал, подверженный шуму, вызванному неоднородностью фоточувствительности.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/Sfc_qwXGV0I/AAAAAAAABGY/vYESYFxbxwQ/s1600-h/img50.png"&gt;&lt;img src="http://3.bp.blogspot.com/_hM8AMxgJLzw/Sfc_qwXGV0I/AAAAAAAABGY/vYESYFxbxwQ/s320/img50.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 425px; height: 87px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/Sfc_qwXGV0I/AAAAAAAABGY/vYESYFxbxwQ/s320/img50.png" alt="" id="BLOGGER_PHOTO_ID_5329798687785113410" border="0" /&gt;&lt;/a&gt;          &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt; Изображения, полученные с ранних образцов CMOS-сенсоров, были подвержены шуму неоднородности фоточувствительности из-за того, что сброс темнового заряда на фотодиодах был неполным (см.Рис. &lt;span style="text-decoration: underline;"&gt;5&lt;/span&gt;)  &lt;/p&gt;&lt;p&gt; Сначала производится сброс значения фотодиода, затем производится регистрация полезного сигнала (S). Следует заметить, что в процессе регистрации светового сигнала так же регистрируется и шум (S+N1). Далее считывался сигнал вместе с шумом (S+N1), фотодиод сбрасывался и считывалось значение шума (N2). Это приводило к тому, что на изображении оставался шум. &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div align="center"&gt;&lt;a name="fig:CanonfullframecmosPRNUreductionOLDMETHOD"&gt;&lt;/a&gt;&lt;a name="401"&gt;&lt;/a&gt; &lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.5:&lt;/strong&gt; Неполный сброс значений фотодиодов приводит к считыванию сигнала с остаточным шумом.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_yqu2JEI/AAAAAAAABGg/5nght79Nm2M/s1600-h/img51.png"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_yqu2JEI/AAAAAAAABGg/5nght79Nm2M/s320/img51.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 486px; height: 192px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sfc_yqu2JEI/AAAAAAAABGg/5nght79Nm2M/s320/img51.png" alt="" id="BLOGGER_PHOTO_ID_5329798823713055810" border="0" /&gt;&lt;/a&gt;          &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;Развитие технологии производства фотодиодов по 4/5Т-технологии сенсоров CMOS позволило более эффективно подавлять шумы, связанные с неоднородностью фоточувствительности. Так, был разработан метод &lt;span class="textit"&gt;полной передачи заряда&lt;/span&gt;. Каждый фотодиод содержит ячейку для запоминания темнового шума и ячейку для накопления светового сигнала (см.Рис. &lt;span style="text-decoration: underline;"&gt;6&lt;/span&gt;).  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div align="center"&gt;&lt;a name="fig:CanonfullframecmosPRNUreduction"&gt;&lt;/a&gt;&lt;a name="402"&gt;&lt;/a&gt; &lt;table&gt; &lt;caption align="bottom"&gt;&lt;strong&gt;Рис.6:&lt;/strong&gt; Метод &lt;span class="textit"&gt;полной передачи заряда&lt;/span&gt; для устранения шума, связанного с неоднородностью фоточувствительности.&lt;/caption&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hM8AMxgJLzw/Sf7FocmnwxI/AAAAAAAABG4/5O6m_Qu_94c/s1600-h/img52.png"&gt;&lt;img src="http://1.bp.blogspot.com/_hM8AMxgJLzw/Sf7FocmnwxI/AAAAAAAABG4/5O6m_Qu_94c/s400/img52.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 163px;" src="http://1.bp.blogspot.com/_hM8AMxgJLzw/Sf7FocmnwxI/AAAAAAAABG4/5O6m_Qu_94c/s400/img52.png" alt="" id="BLOGGER_PHOTO_ID_5331916307516867346" border="0" /&gt;&lt;/a&gt;      &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt; Сначала считывается остаточный заряд, включающий в себя темновой и световой сигнал. Этот сигнал остаётся в ячейке &lt;span&gt;&lt;span class="fullpost"&gt;фотодиоде&lt;/span&gt;&lt;/span&gt;, хранящей информацию об уровне шума, после чего производится сброс всех фотодиодов матрицы фотосенсора. &lt;/p&gt;&lt;p&gt; После завершения экспозиции, значение сигнала и значение шума считываются независимо - происходит замер текущего уровня шума.   &lt;/p&gt;&lt;p&gt; Темновой заряд (N) и световой заряд (S) накапливается в разных ячейках одного и того же фотодиода. После того, как уровень шума (N) считывается, передаётся количество заряда из ячейки фотодиода, которая накапливала световой заряд. Происходит объединение уровней заряда (S+N) и считывание как целого. Так как уровень шума (N) известен для того же фотодиода, происходит их вычитание и, таким образом, считывается только информация о сигнале. Это и составляет основу метода &lt;span class="textit"&gt;полной передачи заряда&lt;/span&gt;  &lt;/p&gt;&lt;p&gt; Кроме того, шум, вызванный неоднородностью фоточувствительности, возрастает с увеличением усиления ISO. Поэтому в ряде коммерческих цифровых фотокамер применяются технологии, которые усиливают сигнал в зависимости от уровня ``сигнал/шум'' на изображении. Сигналы с высоким соотношением ``сигнал/шум'' посылаются на усилители с большим коэффициентом усиления. Это позволяет CMOS-фотосенсорам выдавать изображения высокого качества в условиях съёмки, требующих высокого значения ISO и длинных экспозиций.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(153, 102, 51);"&gt;Ссылки&lt;/p&gt;&lt;p&gt;Пост подготовлен по материалам &lt;a href="http://mydebianblog.blogspot.com/2008/01/canon.html"&gt;технической документации компании Canon&lt;/a&gt; на цифровые камеры Canon серии EOS и полноформатные фотосенсоры.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-5769086622290562341?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=riWYp2HxiUo:82Cpw6npJ78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=riWYp2HxiUo:82Cpw6npJ78:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=riWYp2HxiUo:82Cpw6npJ78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=riWYp2HxiUo:82Cpw6npJ78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/riWYp2HxiUo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/5769086622290562341/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/05/cmos.html#comment-form" title="Комментарии: 11" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/5769086622290562341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/5769086622290562341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/riWYp2HxiUo/cmos.html" title="Шумоподавление на чипе современных CMOS-фотосенсоров" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_hM8AMxgJLzw/SfWOkrUhCJI/AAAAAAAABGA/nV4_X688948/s72-c/img47.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/05/cmos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkICQH05eyp7ImA9WxJSEEQ.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-4712544538750372801</id><published>2009-04-27T01:40:00.011+04:00</published><updated>2009-04-30T16:29:21.323+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-30T16:29:21.323+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="железо" /><title>Настройка Dual-Head в Linux на примере ноутбука Asus M5200AE</title><content type="html">Итак, нужно настроить режим отображения на два разных монитора - чтобы между разными экранами можно переносить окна приложений. Такой режим, в отличие от Clone Mode (клон, на второй мониторе тоже, что и на первом), называется Dual Head ("две головы", второй монитор отображает другое).&lt;br /&gt;&lt;br /&gt;Для этого нужно поправить xorg.conf, и править его придётся несколько больше, чем для Clone mode. В режиме Dual Head требуется описать два монитора и две видеокарты в xorg.conf (напомню, что конфиг этот лежит в /etc/X11/ и отвечает за весь графический режим). После того, как всё это будет сделано, нужно включить расширение Xinerama. Ну и естественно, перед тем, как вы начнёте крошить ваш xorg.conf, нужно сделать резервную копию старого конфига.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;&lt;big&gt;Режим Dual Head в Linux&lt;br /&gt;&lt;/big&gt;&lt;/b&gt;&lt;/span&gt;Итак, привожу рабочий конфиг xorg.conf Что-то в нём будет отмечено серым - это не важно. Цветом я выделил наиболее критичные куски, которые ещё отдельно прокомментирую. Начало конфига трогать не надо - там нет ничего, что относится к двухголовости: пути к шрифтам и настройки раскладки клавиатуры. Поэтому пропускаем и идём дальше.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);font-size:85%;" &gt;# XF86Config-4 (XFree86 X Window System server configuration file)&lt;br /&gt;#&lt;br /&gt;# This file was generated by dexconf, the Debian X Configuration tool, using&lt;br /&gt;# values from the debconf database.&lt;br /&gt;#&lt;br /&gt;# Edit this file with caution, and see the XF86Config-4 manual page.&lt;br /&gt;# (Type "man XF86Config-4" at the shell prompt.)&lt;br /&gt;#&lt;br /&gt;# This file is automatically updated on xserver-xfree86 package upgrades *only*&lt;br /&gt;# if it has not been modified since the last upgrade of the xserver-xfree86&lt;br /&gt;# package.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;Section "Files"&lt;br /&gt;#       FontPath        "unix/:7100"                           FontPath        "/usr/share/fonts/X11/Type1"&lt;br /&gt;FontPath        "/usr/lib/X11/fonts/Type1"&lt;br /&gt;FontPath        "/usr/share/fonts/X11/CID"&lt;br /&gt;FontPath        "/usr/lib/X11/fonts/CID"&lt;br /&gt;FontPath        "/usr/lib/X11/fonts/Speedo"&lt;br /&gt;FontPath        "/usr/share/fonts/X11/100dpi"&lt;br /&gt;FontPath        "/usr/lib/X11/fonts/100dpi"&lt;br /&gt;FontPath        "/usr/share/fonts/X11/75dpi"&lt;br /&gt;FontPath        "/usr/lib/X11/fonts/75dpi"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Module"&lt;br /&gt;Load    "bitmap"&lt;br /&gt;Load    "dbe"&lt;br /&gt;Load    "ddc"&lt;br /&gt;Load    "dri"&lt;br /&gt;Load    "extmod"&lt;br /&gt;Load    "freetype"&lt;br /&gt;Load    "glx"&lt;br /&gt;Load    "int10"&lt;br /&gt;Load    "record"&lt;br /&gt;Load    "vbe"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;Identifier      "Default Keyboard"&lt;br /&gt;Driver          "keyboard"&lt;br /&gt;Option          "CoreKeyboard"&lt;br /&gt;Option          "XkbRules"      "xfree86"&lt;br /&gt;Option          "XkbModel"      "pc102"&lt;br /&gt;Option          "XkbLayout"     "us,ru(winkeys)"&lt;br /&gt;Option          "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;Identifier      "Configured Mouse"&lt;br /&gt;Driver          "mouse"&lt;br /&gt;Option          "CorePointer"&lt;br /&gt;Option          "Device"                "/dev/input/mice"&lt;br /&gt;Option          "Protocol"              "ImPS/2"&lt;br /&gt;EndSection&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Теперь переходим к разделу Device - тут надо описать две видеокарты. Названия идентификаторов важны, так как  на них&lt;/span&gt;&lt;span class="fullpost"&gt; вы&lt;/span&gt;&lt;span class="fullpost"&gt; будете ссылаться дальше. Мониторы имеют номера 0 и 1, BusID остаётся один и тот же.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Section "Device"&lt;br /&gt;Identifier      "Intel Corporation Intel Default Card"&lt;br /&gt;Driver          "i810"&lt;br /&gt;BusID           "PCI:0:2:0"&lt;br /&gt;Option          "MonitorLayout" "CRT,LFP"&lt;br /&gt;&lt;b&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;       Screen          0&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;Identifier      "Intel Corporation Intel Default Card External"&lt;br /&gt;Driver          "i810"&lt;br /&gt;BusID           "PCI:0:2:0"&lt;br /&gt;Option          "Display"       "CRT"&lt;br /&gt;Option          "MonitorLayout" "CRT,LFP"&lt;br /&gt;&lt;b&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;  Screen          1&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;EndSection&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Отлично, теперь к двум видеокартам надо описать два монитора. Будьте внимательны и указывайте правильные частоты HorizSync и VertRefresh.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Section "Monitor"&lt;br /&gt;Identifier      "Default Monitor"&lt;br /&gt;HorizSync       28-50&lt;br /&gt;VertRefresh     43-75&lt;br /&gt;Option          "DPMS"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;Identifier      "External Monitor"&lt;br /&gt;HorizSync       30-81&lt;br /&gt;VertRefresh     56-75&lt;br /&gt;DisplaySize     372 301&lt;br /&gt;Option          "DPMS"&lt;br /&gt;EndSection&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Дальше описываем разрешения, которые могут реализовать наши мониторы - не перепутайте частоты для Default monitor и External monitor. Также следует указать правильные идентификаторы видеокарт.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;Section "Screen"&lt;br /&gt;&lt;b&gt;        Identifier      "Default Screen"&lt;br /&gt;Device          "Intel Corporation Intel Default Card&lt;br /&gt;Monitor        &lt;/b&gt;&lt;b&gt; "Default Monitor"&lt;/b&gt;&lt;br /&gt;DefaultDepth    24&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           1&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           4&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           8&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           15&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           16&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;SubSection "Display"&lt;br /&gt;       Depth           24&lt;br /&gt;       Modes           "1024x768"&lt;br /&gt;EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;&lt;b&gt;    Identifier      "External Screen"&lt;br /&gt;Device          &lt;/b&gt;&lt;b&gt;"Intel Corporation Intel Default Card External"&lt;br /&gt;Monitor        &lt;/b&gt;&lt;b&gt; "External Monitor"&lt;/b&gt;&lt;br /&gt;DefaultDepth    24&lt;br /&gt;SubSection "Display"&lt;br /&gt;Depth           24&lt;br /&gt;Modes           "1280x1024" "1024x768" "800x600"&lt;br /&gt;EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;А если вы хотите таскать окошки приложений между мониторими, нужно включить расширение Xinerama (оно содержится в пакетах libdmx1 и libxinerama1).&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;Section "ServerLayout"&lt;br /&gt;Identifier      "Default Layout"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;&lt;b&gt;        Option  "Xinerama"      "true"&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Screen          0 "External Screen"&lt;br /&gt;Screen          1 &lt;b&gt;"Default Screen" LeftOf "External Screen"&lt;/b&gt;&lt;br /&gt;InputDevice     "Default Keyboard"&lt;br /&gt;InputDevice     "Configured Mouse"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "DRI"&lt;br /&gt;Mode    0666&lt;br /&gt;EndSection&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Указание параметра LeftOf, как можно догадаться, делает внешний экран слева от основного.&lt;br /&gt;&lt;br /&gt;Если Xinerama не включить, то при старте иксов на внешнем мониторе появится стандартная сеточка, но перетащить туда ничего не получится.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;&lt;big&gt;Что ещё&lt;/big&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;Режим Dual Head особенно актуален: например, вашему научруку резко плохеет от текста статьи, оформленной в LaTeX, но текст нужно обсудить, а перегон в Word это безумие. Что делать? Берём и настраиваем режим Dual Head, на главном мониторе у вас Kile, и вы можете править текст. На внешний монитор вытаскиваем Kdvi, где текст отрисовывается в конечном виде. Все довольны и счастливы: и вы работаете в привычной среде, и ваше начальство видит привычную картинку.&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;br /&gt;Ссылки&lt;/span&gt;&lt;br /&gt;Пример с конфигом взят &lt;a href="http://www.thinkwiki.org/wiki/Installing_Ubuntu_on_a_ThinkPad_R60e#Xorg.config_for_two_screens"&gt;отсюда&lt;/a&gt;, где лежит очень толковое описание процесса.&lt;br /&gt;Для запуска множественных X-сессий можно начать медленно и вдумчиво прокуривать &lt;a href="http://forum.ubuntu.ru/index.php?topic=49023"&gt;сообщения на форуме&lt;/a&gt;.&lt;br /&gt;&lt;a name="Intel_945GM_with_the_xorg_Intel_driver"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-4712544538750372801?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=If-vvI7qjlc:Ioak5DFVqOA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=If-vvI7qjlc:Ioak5DFVqOA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=If-vvI7qjlc:Ioak5DFVqOA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=If-vvI7qjlc:Ioak5DFVqOA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/If-vvI7qjlc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/4712544538750372801/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/04/dual-head-linux-asus-m5200ae.html#comment-form" title="Комментарии: 24" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4712544538750372801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4712544538750372801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/If-vvI7qjlc/dual-head-linux-asus-m5200ae.html" title="Настройка Dual-Head в Linux на примере ноутбука Asus M5200AE" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">24</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/04/dual-head-linux-asus-m5200ae.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIDQX46fCp7ImA9WxVaFkw.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-4563758254845684946</id><published>2009-04-13T00:42:00.005+04:00</published><updated>2009-04-13T14:12:50.014+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-13T14:12:50.014+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="мультимедиа" /><title>Немного о lossless кодировании видео в Linux - сжатие видео без потерь</title><content type="html">Некоторое время назад была потребность в том, чтобы сжать видеофайл без потерь (lossless compression) и воспроизводить сжатый фильм без пропуска кадров. Задача в меру прикладная, и может быть, кому-нибудь будет интересно.&lt;br /&gt;&lt;br /&gt;Итак, мы имеем установленный mencoder в Debian GNU/Linux и настойчивое желание сжимать полутоновые файлы без потерь.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;Сжимаем видео с помощью Mencoder&lt;br /&gt;&lt;/big&gt;&lt;/span&gt;Для этого мы отобрали пару кодеков с lossless и начали сжимать наш видеоролик. Исходно в нашем распоряжении был видеоролик размером 341 Мб, в котором полутоновая картинка перемещалась по экрану. Нужно было сжать без потерь ролик так, чтобы он и места занимал немного, и воспроизводился без торможений.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;Сжатие FFV1&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;Сначала сжимали кодеком FFV1 командой:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;mencoder -ovc lavc -lavcopts vcodec=ffv1 -o video-before.avi video-compressed-ffv1.avi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Сжалось до 18Мб, что очень хорошо. Однако при попытке такой сжатый файл воспроизвести, возникли проблемы: Mplayer (как и другие) сильно грузит процессор и видео не успевает воспроизводиться с заданным FPS. О том, какие страдания были с воспроизведением и как мы их героически решали, будет сказано ниже.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Сжатие huffyuv&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Ещё один метод сжатия без потерь, но жмёт он хуже, чем FFV1, зато быстрее воспроизводится и меньше грузит процессор. При этом использовали mencoder для сжатия huffyuv с параметрами:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;mencoder  -ovc lavc   -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1:format=422p video-before.avi -o video-compressed-ffvhuff.avi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Получилось видео на 99Мб, что тоже неплохо. Однако при воспроизведении оказалось, что происходит конвертирование в другое цветовое пространство 420p и мы решили отказаться от такого финта:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;mencoder  -ovc lavc   -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1 video-before.avi -o video-compressed-ffvhuff-420.avi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;при этом сэкономили ещё почти 20 Мб - фильм стал занимать 80Мб и воспроизводиться чуть глаже.&lt;br /&gt;&lt;br /&gt;Остановившись на сжатии huffyuv без опции format=422p, мы стали перебирать варианты воспроизведения видео с минимальными тормозами. История на этом не кончается...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;&lt;b&gt;&lt;strike&gt;Играй мой баян&lt;/strike&gt; Воспроизведение видео с помощью Mplayer&lt;br /&gt;&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;Видео у нас сжато слабо, воспроизводить надо без задержек и железо скажем сразу весьма чахлое. Как проигрывать видео в таких условиях?&lt;br /&gt;&lt;br /&gt;Перво-наперво, используем замечательные возможности Mplayer по выводу видео куда и на что угодно: поэкспериментировать с параметром -vo было здравой идеей, и через некоторое время мы остановились на варианте -vo gl и -vo sdl для нашей задачи. Однако иксы - это хорошо, но хочется выводить видео на чёрный экран без всяких засветок.&lt;br /&gt;&lt;br /&gt;Далее, чтобы отвязаться от дисковой подсистемы как можно больше, используем возможность Mplayer кешировать видео:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;mplayer -vo gl -cache 65535 -cache-min 98 video-compressed-ffvhuff.avi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Это значит, что мы просим сделать Mplayer кеш на 64Мб и заполнять его не менее чем на 98%. Это сильно помогло делу, но это ещё не всё.&lt;br /&gt;&lt;br /&gt;Условия нашей задачи в меру экзотические: нужно проигрывать видео без масштабирования, "как есть", и желательно на чёрном экране без фона, с максимально возможной плавностью. Всё осложняется тем, что компьютер, на котором видео будет воспроизводиться, управляется Windows, и Linux там можно задействовать только в режиме LiveCD.&lt;br /&gt;&lt;br /&gt;Идём дальше и привлекаем для наших нужд Knoppix. В арсенале его параметров загрузки есть неприметный параметр fb1280x1024 для работы с framebuffer. Замечательное дело, и мы решили этим воспользоваться. У нас теперь появилась графическая консоль, чёрная и мрачная, как полярная ночь.&lt;br /&gt;&lt;br /&gt;Теперь, чтобы воспроизвести сжатое нами видео, копируем видео в память на Knoppix в каталог Desktop. После этого воспроизводим наше многострадальное видео в консоли так:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;mplayer -vo fbdev -cache 65535 -cache-min 98 -quiet video-compressed.avi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Ключик -quiet нужен для того, чтобы при воспроизведении Mplayer не выводил статистику в бегущей строке. Всё, после этого получаем фильм на чёрном экране, который воспроизводится плавно и без затей.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Скорость воспроизведения в Mplayer&lt;/span&gt;&lt;br /&gt;На всякий случай, если потребуется запускать фильм с другой скоростью, всегда можно попросить Mplayer изменить число кадров в секунду (вплоть до 1 кадра в секунду) так:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span class="fullpost"&gt;&lt;span style="font-style: italic;"&gt;mplayer -fps 1  video-compressed.avi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Эта команда будет воспроизводить фильм со скоростью 1 кард в секунду.&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;(спасибо тов.&lt;/span&gt;&lt;a style="color: rgb(153, 153, 153);" href="http://linuxfreshman.blog.tut.by/" rel="nofollow"&gt;linuxfreshman&lt;/a&gt;&lt;span style="color: rgb(153, 153, 153);"&gt; за наводку)&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Выводы и ссылки&lt;/span&gt;&lt;br /&gt;Воспроизведение таких огромных файлов с большим FPS (у нас это 40FPS) - действительно непростая задача, на любой ОС. Надеюсь, что эта заметка пригодится не только нам, но и тем, кто хочет сжимать видео без потерь.&lt;br /&gt;Напоследок приведу интересную ссылку на &lt;a href="http://www.mplayerhq.hu/DOCS/HTML/ru/menc-feat-enc-libavcodec.html#menc-feat-enc-libavcodec-video-codecs"&gt;перечень кодеков&lt;/a&gt;, который имеется в арсенале libavcodec.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-4563758254845684946?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=31PtuIdVcc0:QxIaaYVr2QA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=31PtuIdVcc0:QxIaaYVr2QA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=31PtuIdVcc0:QxIaaYVr2QA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=31PtuIdVcc0:QxIaaYVr2QA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/31PtuIdVcc0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/4563758254845684946/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/04/lossless-linux.html#comment-form" title="Комментарии: 9" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4563758254845684946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4563758254845684946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/31PtuIdVcc0/lossless-linux.html" title="Немного о lossless кодировании видео в Linux - сжатие видео без потерь" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/04/lossless-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QBRno4cSp7ImA9WxVaE0o.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-5385922424309541970</id><published>2009-04-10T13:30:00.003+04:00</published><updated>2009-04-10T17:49:17.439+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-10T17:49:17.439+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="блоггер" /><title>Как сделать мобильную версию блога на Blogger?</title><content type="html">Очень часто я сам читаю свой блог, когда мне нужно что-то настроить в полевых условиях, где нет интернета и я сижу на своём мобильнике с GPRS. Там мне не до красивого оформления, а нужно просто взять и прочитать то, что я написал. При этом желательно с поиском по сайту.&lt;br /&gt;Поэтому в последнее время озадачился тем, что хорошо бы создать мобильную версию блога. Оказалось, что сделать это даже проще, чем я думал.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;Как сделано&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/big&gt;Всё довольно просто - есть такой замечательный сервис под названием &lt;a href="http://mofuse.com/"&gt;mofuse&lt;/a&gt;, который за несколько минут сделает вам мобильную версию вашего блога вида &lt;i&gt;XXX.mofuse.mobi&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Для этого нужно пройти простую процедуру регистрации, и через несколько минут, поковырявшись в настройках, можно получить желаемое. На предварительном просмотре можно отточить свои дизайнерские изыски, которые сводятся только к цвету текста, фона и ссылок. После этого можно добавить на страницу пару ссылок и в общем всё готово.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Идея такая: mofuse берёт вашу RSS-ленту блога и транслирует её по адресу &lt;span class="fullpost"&gt;&lt;i&gt;XXX.mofuse.mobi &lt;/i&gt;в очень облегчённом виде&lt;i&gt;.&lt;/i&gt; При этом mofuse будет сжимать и масштабировать картинки в постах, чтобы они быстрее загружались на мобильное устройство. Можно вставить свои страницы и ссылки, сделав таким образом мини-сайт с транслируемым RSS-потоком.&lt;br /&gt;&lt;br /&gt;В общем, вы получаете отдельный сайт, который есть трансляция RSS-ленты вашего блога плюс возможность вставить ссылки (как это сделано сейчас у меня - ссылка на поисковую форму на сайте). Никаких навороченных яваскриптов и флеш-роликов: просто и аскетично.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;За все эти прелести mofuse вставит в конец поста на вашем мобильном сайте, после навигации, несколько простых рекламных ссылок - более чем скромная плата за удобный и простой сервис.&lt;br /&gt;&lt;br /&gt;Пример того, что получилось у меня, находится по адресу &lt;a href="http://mydebianblog.mofuse.mobi/"&gt;http://mydebianblog.mofuse.mobi/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mydebianblog.mofuse.mobi/?sm=1"&gt;Прямую ссылку&lt;/a&gt; сразу на мобильную версию я уже повесил в боковой панели блога (пока в режиме тестирования), но в общем смотрится на мой взгляд неплохо.&lt;br /&gt;&lt;br /&gt;Работу mofuse я проверил на своём смартфоне Motorola A1200E и планшетке Nokia N800. В обоих случаях всё выглядит хорошо: есть трансляция короткой RSS-ленты и гуглопоиск по сайту. В общем это получается мобильная версия &lt;span style="font-style: italic;"&gt;всего&lt;/span&gt; блога, содержимое которого просто подгоняется под формат отображения на мобильных устройствах.&lt;br /&gt;&lt;br /&gt;Так как мобильная версия блога сделана недавно, с удовольствием принимаются пожелания, замечания и конструктивная критика в комментариях.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;P.S. Кроме этого, перевёл Feedburner-ленту в Google, измениться ничего не должно (старая лента должна работать). После перехода адрес ленты поменялся на http://feeds2.feedburner.com/debianletters но менять его не обязательно: Гугл обещает, что работать будут оба адреса. Это так, на всякий случай.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-5385922424309541970?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=9hK437bMRcI:UuYV5_tXgqY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=9hK437bMRcI:UuYV5_tXgqY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=9hK437bMRcI:UuYV5_tXgqY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=9hK437bMRcI:UuYV5_tXgqY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/9hK437bMRcI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/5385922424309541970/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/04/blogger.html#comment-form" title="Комментарии: 11" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/5385922424309541970?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/5385922424309541970?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/9hK437bMRcI/blogger.html" title="Как сделать мобильную версию блога на Blogger?" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/04/blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MQnozeyp7ImA9WxVaE0k.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-1871145761339548101</id><published>2009-04-02T02:02:00.002+04:00</published><updated>2009-04-10T10:29:43.483+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-10T10:29:43.483+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ЛаТеХ" /><title>Установка MikTeX в Windows</title><content type="html">Время от времени мне присылают письма и спрашивают коллеги - как установить LaTeX в Windows. Далее небольшое руководство по установке дистрибутива MikTeX для глобальной и надёжной ОС Windows.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Установка MikTex.&lt;br /&gt;&lt;br /&gt;1. miktex\setup\setup.exe&lt;br /&gt;После этого следует довольно длинная процедура распаковки архивов и установки MiKTeXa версии какой-то выше чем 2.0&lt;br /&gt;Лучше не отменять установку какого-то там TeXTree. Говорят, так лучше работает.&lt;br /&gt;На вопрос об incorporated лично я отвечаю "нет".&lt;br /&gt;Распаковывается и устанавливается действительно ооооочень долго.&lt;br /&gt;&lt;br /&gt;2. В корневом каталоге запускаем инсталлятор интегрированной оболочки. Это может быть WinEdit (платный), LyX или TexnicCenter.&lt;br /&gt;&lt;br /&gt;3. Настраиваем интегрированную оболочку: прописываем пути к latex-овским командам (если они не прописаны), убираем ненужные меню и прочее.&lt;br /&gt;&lt;br /&gt;4. MikTex и русский язык: чтобы при наборе русских букв не вылезала абракадабра, надо всего лишь изменить шрифт. Нажмите Options\Fonts\Courier Cyrillic .&lt;br /&gt;&lt;br /&gt;5. Чтобы ТеХ автоматически переносил русские слова (английские и так&lt;br /&gt;будет), надо сделать следующее:&lt;br /&gt;&lt;br /&gt;А) MiKTeX Options (кнопочка с шестеренками), далее Languages. Здесь&lt;br /&gt;поставить флажок напротив russian ruhyph.tex .&lt;br /&gt;&lt;br /&gt;Б) Пуск\Выполнить&lt;br /&gt;Нужно выполнить две команды (пробелы важны):&lt;br /&gt;initexmf --dump&lt;br /&gt;initexmf --find-tex language.dat&lt;br /&gt;&lt;br /&gt;Если не заработает, найдите через поиск файл initexmf и укажите полный путь, примерно так:&lt;br /&gt;C:\Programs\texmf\miktex\bin\initexmf --dump&lt;br /&gt;C:\Programs\texmf\miktex\bin\initexmf --find-tex language.dat&lt;br /&gt;Настоятельно рекомендую сначала попробовать без пути. А то иногда не&lt;br /&gt;работает с путем.&lt;br /&gt;&lt;br /&gt;6. Установить ghostscript и imagemagick, для возможности работы с PostScript и конвертированием изображений в разные форматы соответственно.&lt;br /&gt;&lt;br /&gt;7. Установить программу для работы с библиографической базой данных JabRef. Идём в интернет и качаем оттуда последнюю версию. Получаем файл .jar, который запускается при помощи Java. Java в Windows, конечно, нет - надо скачивать Java Runtime Environment и устанавливать её.&lt;br /&gt;&lt;br /&gt;В общем, дружественная такая процедура. Главное - не терять присутствие духа и стоически бороться.&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;br /&gt;Компромиссный вариант&lt;/span&gt;&lt;br /&gt;Если нужно просто немного поработать с LaTeX-документами в Windows и при этом не устанавливать ничего, можно воспользоваться &lt;a href="http://www.xm1math.net/texmaker/"&gt;TexMaker&lt;/a&gt; Portable, о котором &lt;a href="http://mydebianblog.blogspot.com/2007/06/latex-texmaker.html"&gt;я уже писал&lt;/a&gt;. Версия TexMaker для Windows имеется &lt;a href="http://www.badongo.com/it/file/11579099"&gt;тут&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-1871145761339548101?l=mydebianblog.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=iEFI9TVpXwQ:YyFG2XG2Yeo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=iEFI9TVpXwQ:YyFG2XG2Yeo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=iEFI9TVpXwQ:YyFG2XG2Yeo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=iEFI9TVpXwQ:YyFG2XG2Yeo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/iEFI9TVpXwQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/1871145761339548101/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://mydebianblog.blogspot.com/2009/04/miktex-windows.html#comment-form" title="Комментарии: 11" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1871145761339548101?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/1871145761339548101?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/iEFI9TVpXwQ/miktex-windows.html" title="Установка MikTeX в Windows" /><author><name>virens</name><uri>http://www.blogger.com/profile/12420257446841864325</uri><email>mydebianblog@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="09310948239609827054" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/04/miktex-windows.html</feedburner:origLink></entry></feed>
