<?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;Ck4CQXw5fCp7ImA9WxBSE0w.&quot;"><id>tag:blogger.com,1999:blog-30744165</id><updated>2009-12-20T15:09:20.224+03:00</updated><title>Записки дебианщика</title><subtitle type="html">В этом блоге публикуются заметки и решения,&lt;br&gt; найденные в процессе работы, освоения и жизни &lt;br&gt;в дистрибутиве Debian GNU/Linux.&lt;a href="http://mydebianblog.mofuse.mobi/?sm=1"&gt;&lt;sup&gt;[мобильная версия]&lt;/sup&gt;&lt;/a&gt;</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="hub" href="http://pubsubhubbub.appspot.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>250</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>10</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/debianletters" /><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;CUMNRnk9fSp7ImA9WxBTE0U.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-3584929455778696697</id><published>2009-12-07T01:54:00.007+03:00</published><updated>2009-12-09T21:31:37.765+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-09T21:31:37.765+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="данные" /><category scheme="http://www.blogger.com/atom/ns#" term="обработка" /><title>Небольшая шпаргалка по командам SVN</title><content type="html">В этом посте я решил собрать простые и наиболее часто используемые мной команды svn, часть параметров и способов работы с репозиториями svn, которых я склонен забывать. Это своеобразная шпаргалка, описание subversion на простых примерах. Чтобы теперь находки по работе в subversion никуда не потерялись - им место в блоге.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;По ходу действия хочу подчеркнуть, что Subversion, хотя и является инструментом в первую очередь для программистов, может использоваться и людьми, от программирования достаточно далёкими. Если вы имеете дело с документами в формате LaTeX, то никто не запрещает использовать Subversion или любую другую систему контроля версий: LaTeX в общем тоже язык программирования &lt;span style="font-style: italic;"&gt;оформления документов&lt;/span&gt;, так что использование Subversion будет так же продуктивно.&lt;br /&gt;&lt;br /&gt;Пример, который я люблю приводить своим студентам - их диплом. Большой документ, много текста и картинок. Обычно написание диплома в форматах, к тому не предназначенных, приводит к кошмару вида &lt;b&gt;diplom-pupkin-last-best-new-cool-version45.doc&lt;/b&gt; с полным непониманием того, что изменилось в 44 версии и как посмотреть, много ли поменял научный руководитель в тексте с прошлой встречи. Subversion, будучи использованной вместе с LaTeX, избавляет от головной боли и других нежелательных расстройств при написании диплома или (того хуже) диссертации.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Наполнение репозитория Subversion&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Репозиторий, созданный командой:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;$ svnadmin create /usr/local/svn/newrepos&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt; нужно наполнить свежими данными. Для этого есть команда  &lt;i&gt;svn import&lt;/i&gt;  это быстрый способ скопировать не версионированное дерево файлов в хранилище, например:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;$ svn import mytree file:///usr/local/svn/newrepos/some/project \&lt;br /&gt; -m "Initial import"&lt;br /&gt;Adding         mytree/foo.c&lt;br /&gt;Adding         mytree/bar.c&lt;br /&gt;Adding         mytree/subdir&lt;br /&gt;Adding         mytree/subdir/quux.h&lt;br /&gt;&lt;br /&gt;Committed revision 1.&lt;/blockquote&gt;&lt;br /&gt;Стоит заметить, что после завершения импорта, оригинальное дерево файлов не конвертируется в рабочую копию. Для того, чтобы начать работать вам необходимо создать новую рабочую копию (svn checkout) дерева файлов.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Добавление новых файлов и каталогов в репозиторий Subversion&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Например, вы создаёте крупный документ в ЛаТеХе, и появился новый каталог с новыми текстами или картинками. Как их добавить в Subversion репозиторий? Очень просто:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;$ svn add temp&lt;/span&gt; &lt;span style="font-style: italic;"&gt;A         temp&lt;/span&gt; &lt;span style="font-style: italic;"&gt;A         temp/Lit_obzor2_edt.tex&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Теперь смотрим на статус наших файлов и видим, что против них стоит буква &lt;b&gt;А&lt;/b&gt; - значит, они &lt;b&gt;A&lt;/b&gt;dded, то есть добавлены:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ svn status&lt;br /&gt;?      image&lt;br /&gt;?      biblio&lt;br /&gt;?      optcodeimages&lt;br /&gt;M      draft_PhD_Konnik.dvi&lt;br /&gt;!      PhD_Konnik.log&lt;br /&gt;A      temp&lt;br /&gt;A      temp/Lit_obzor2_edt.tex&lt;br /&gt;!      PhD_Konnik.toc&lt;br /&gt;M      PhD_Konnik_chapter_results.tex~&lt;br /&gt;!      PhD_Konnik_chapter_introduction.dvi&lt;br /&gt;!      PhD_Konnik.aux&lt;br /&gt;!      PhD_Konnik.bbl&lt;br /&gt;!      draft_PhD_Konnik.log&lt;br /&gt;!      PhD_Konnik.blg&lt;br /&gt;!      draft_PhD_Konnik.toc&lt;br /&gt;!      draft_PhD_Konnik.aux&lt;br /&gt;!      draft_PhD_Konnik.bbl&lt;br /&gt;M      PhD_Konnik.dvi&lt;br /&gt;!      draft_PhD_Konnik.blg&lt;br /&gt;M      PhD_Konnik_chapter_results.tex&lt;br /&gt;!      PhD_Konnik_chapter_introduction.log&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Они будут помещены в репозиторий при следующей отправке (commit).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Обновление рабочей копии до состояния репозитория&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Файлы, находящиеся в репозитории свежее, чем у вас в рабочей копии. Дубовый вариант заключается в том, чтобы удалить свою рабочую копию и сделать chekout из репозитория. Это проходит, если репозиторий только ваш и вы уверены, что никаких изменений в рабочей копии вы не потеряете. Но есть вариант и получше:&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;$ svn update&lt;/span&gt; &lt;span style="font-style: italic;"&gt;U &lt;br /&gt;biblio/my.bib&lt;/span&gt; &lt;span style="font-style: italic;"&gt;U &lt;br /&gt;biblio/my.bib.bak&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;Updated to revision 9.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Это обновит вашу локальную копию до ревизии, которая находится в репозитории SVN. После этого можно приступать к работе с файлами, так как они обновлены до последней версии.&lt;br /&gt;&lt;br /&gt;Латинские буквы перед именем файла имеют свой сакральный смысл, скрытый в недрах документации сокрушительных размеров (кстати, документация очень хороша, и есть даже частичный перевод на русский &lt;a href="http://svnbook.red-bean.com/nightly/ru/svn-book.html"&gt;тут&lt;/a&gt;). Собственно, буква означает действие, которое выполнил Subversion для приведения рабочей копии в актуальное состояние:&lt;div class="variablelist"&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;U      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;U&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;pdated — Файл &lt;code class="filename"&gt;foo&lt;/code&gt; был обновлен&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;A      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;A&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;dded — Файл или директория &lt;code class="filename"&gt;foo&lt;/code&gt; были              &lt;code class="computeroutput"&gt;&lt;/code&gt;добавлены в рабочую копию.&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;D      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;D&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;eleted — Файл или директория &lt;code class="filename"&gt;foo&lt;/code&gt; были              &lt;code class="computeroutput"&gt;&lt;/code&gt;удалены из рабочей копии.&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;R      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;R&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;eplaced — Файл или директория &lt;code class="filename"&gt;foo&lt;/code&gt; была               &lt;code class="computeroutput"&gt;&lt;/code&gt;заменена в рабочей копии; это значит, что &lt;code class="filename"&gt;foo&lt;/code&gt; был удален, а новый элемент с таким же именем был добавлен.&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;G      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;mer&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;G&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;ed — Файл &lt;code class="filename"&gt;foo&lt;/code&gt; получил новые изменения из хранилища, однако ваша локальная копия содержит ваши&lt;br /&gt;  изменения. Либо изменения не пересекаются, либо они точно такие же, как ваши локальные изменения, поэтому Subversion успешно выполнил слияние изменений хранилища с файлом.&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class="term"&gt;&lt;code class="computeroutput"&gt;C      foo&lt;/code&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;code class="computeroutput"&gt;C&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;onflicting — Файл &lt;code class="filename"&gt;foo&lt;/code&gt; получил от сервера конфликтующие изменения. Изменения с сервера пересекаются с&lt;br /&gt; вашими изменениями фала.&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Просмотр истории ревизий в Subversion&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Часто нужно просмотреть, что и как редактировалось - для этого при отправке новых данных в репозиторий (commit) есть смысл писать содержательные и осмысленные комментарии. Если это так, то можно многое узнать о том, что и когда редактировалось:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;$ svn log --revision &lt;b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1:3&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;что значит: выдать лог ревизий с первую по третью. Увидим:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;-----------------------------------&lt;/span&gt; &lt;span style="font-style: italic;"&gt;r1 | penta4 | 2008-06-03 15:49:21 +0400 (Втр, 03 Июн 2008) | 1 line&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;Initial dissertation state&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;--------------------------------&lt;/span&gt; &lt;span style="font-style: italic;"&gt;r2 | penta4 | 2008-06-03 16:56:01 +0400 (Втр, 03 Июн 2008) | 3 lines&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;Committed new editions&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;---------------------------------&lt;/span&gt; &lt;span style="font-style: italic;"&gt;r3 | penta4 | 2008-06-03 16:58:12 +0400 (Втр, 03 Июн 2008) | 2 lines&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;incremental&lt;/span&gt; &lt;span style="font-style: italic;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&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;Просмотр изменений в Subversion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Например, нужно просмотреть изменения, происшедшие со второй по четвёртую ревизии. Легко!&lt;br /&gt;&lt;i&gt;&lt;blockquote&gt;$ svn diff --revision 2:4 PhD_Konnik.tex &amp;gt; PhD_Konnik.tex.diff.r2-4&lt;/blockquote&gt;&lt;/i&gt;Это выведет нам в diff-файл все изменения, а ваш любимый текстовый редактор их с удовольствием подсветит для более удобного просмотра.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Отмена изменений в Subversion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Вы сидите и правите какой-то документ - и тут с ужасом понимаете, что правите _не тот_ документ. Не беда - переносите изменения во временный файл, а для того документа, который вы нечаянно испортили, пишем:&lt;br /&gt;&lt;blockquote&gt;$ svn revert UMNIK08-Report-01/Report-01-sub1-shortened.tex&lt;br /&gt;&lt;i&gt;Reverted 'UMNIK08-Report-01/Report-01-sub1-shortened.tex'&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;После этого SVN вернёт файл &lt;i&gt;Report-01-sub1-shortened.tex &lt;/i&gt;в то состояние, в котором он находится в репозитории.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;Копирование или перемещение нескольких файлов&lt;/big&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;b&gt; в SVN/Subversion &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;(multiple targets move/copy in SVN)&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Странно, однако SVN не понимает символов типа *, так что ваша попытка сделать так:&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;blockquote style="font-style: italic;"&gt;$ svn mv MCBC/*jpg LinuxImages/&lt;br /&gt;&lt;/blockquote&gt;приведёт к ошибке:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;svn: Client error in parsing arguments&lt;br /&gt;&lt;/blockquote&gt;Чтобы не перемещать все файлы по одному, &lt;a href="http://eightpence.com/moving-multiple-files-in-subversion/"&gt;воспользуемся&lt;/a&gt; _ваша любимая оболочка тут_, в моём случае это Bash:&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote style="font-style: italic;"&gt;for i in *.cs ; do svn mv $i newFolder/ ; done&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:Georgia,serif;"&gt;Конечно, если в вашей операционной системе есть нормальная консоль :-)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Выдача определённой правки файла из репозитория&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Например, нам очень нужно посмотреть, каким был файл при второй правке. Для этого пишем:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;$ svn cat --revision 2 PhD_Konnik.tex &amp;gt; PhD_Konnik.tex.v2&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;То есть выводим результат второй правки файла &lt;i&gt;PhD_Konnik.tex&lt;/i&gt; и записываем его в файл &lt;i&gt;&lt;i&gt;PhD_Konnik.tex.v2&lt;/i&gt;&lt;/i&gt; для дальнейшего просмотра.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;big&gt;Восстановление удалённых файлов в Subversion&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Ну и наконец самое страшное: вы приказали Subversion удалить файл из репозитория, а потом кто-то вам говорит: этот файл нужно вернуть. На самом деле, файл, который вы удалили из SVN, никуда не делся: элемент исчезает из правки &lt;code class="literal"&gt;HEAD,&lt;/code&gt; но продолжает существовать в более ранних правках. Так что вопрос "как восстановить удалённый файл в Subversion" имеет довольно простой ответ: скопировать его из последней правки, где он был.&lt;br /&gt;&lt;br /&gt;Главное вспомнить, как этот файл назывался. Если помним хотя бы частично имя файла (например, &lt;i&gt;overview&lt;/i&gt;), то можно попросить Subversion вывести все упоминания о правках этого файла так:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;svn log -v | &lt;/span&gt;&lt;span style="font-style: italic;"&gt;grep spatialcoh -A 5 -B 5 &lt;/span&gt;&lt;/blockquote&gt;Здесь параметры для &lt;span style="font-weight: bold;"&gt;grep&lt;/span&gt; такие: &lt;span style="color: rgb(51, 51, 255);"&gt;-A 5&lt;/span&gt; это выдача 5 строк после (&lt;span style="color: rgb(51, 51, 255);"&gt;A&lt;/span&gt;fter) совпадения,  &lt;span style="color: rgb(204, 0, 0);"&gt;-B 5&lt;span style="color: rgb(0, 0, 0);"&gt; это 5 строк до (&lt;/span&gt;B&lt;span style="color: rgb(0, 0, 0);"&gt;efore) совпадения.&lt;/span&gt;&lt;/span&gt; Получим длинный вывод вида:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;spatialcoherencyexplained.eps &lt;span style="font-style: italic;"&gt;436&lt;/span&gt;&lt;/span&gt; | penta4 | 2009-12-02 15:39:30 +0300 (Срд, 02 Дек 2009) | 2 lines&lt;br /&gt;Changed paths:&lt;br /&gt; M /PhD_Konnik_autoreferat.tex&lt;br /&gt; M /PhD_Konnik_chapter_opticalcoding.tex&lt;br /&gt; M /PhD_Konnik_chapter_overview.tex&lt;br /&gt; D /images-opticalcoding/spatialcoherencyexplained.eps&lt;br /&gt; M /images-opticalcoding/sxemacorrelator3.eps&lt;br /&gt; M /latex.py&lt;br /&gt; M /svnstatus.tex&lt;br /&gt; M /zagashnikPhD_Konnik.tex&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt; M /biblio&lt;br /&gt; A /formaldocs/disserDocs.tif.7z&lt;br /&gt; A /images-opticalcoding/PSFdotssize.eps&lt;br /&gt; M /images-opticalcoding/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSFRus.ps&lt;br /&gt; A /images-opticalcoding/auxilaryImagesForDisser.svg&lt;br /&gt; A /images-opticalcoding/spatialcoherencyexplained.eps&lt;br /&gt; M /zagashnikPhD_Konnik.tex&lt;br /&gt;&lt;br /&gt;TENGIBLE changes:&lt;br /&gt;- autoreferat is improved slightly;&lt;br /&gt;- Spatial coherency is improved&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/blockquote&gt;Красным подчеркнул я: видно, что файл &lt;/span&gt;&lt;span&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;spatialcoherencyexplained.eps &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;удалён в правку 436, &lt;i&gt;&lt;/i&gt; и теперь хотим его восстановить. Смотрим, в какой правке файл был удалён - в 436, значит, в 435 есть его последняя копия.  Восстанавливаем:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;svn copy --revision 435 file:///phdthesis/&lt;span&gt;&lt;span class="fullpost"&gt;images-opticalcoding/spatialcoherencyexplained.eps&lt;/span&gt;&lt;/span&gt; &lt;span class="fullpost"&gt;&lt;span&gt;&lt;span class="fullpost"&gt;spatialcoherencyexplained.eps&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Всё, теперь файл появится снова, вместе с историей правок (что важно) и вы можете его править дальше.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;big&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/big&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Ссылки&lt;/span&gt;&lt;br /&gt;Разумеется, это далеко не все возможности Subversion - в данном посте не рассмотрены возможности создания и слияния веток, но в качестве быстрого введения должно хватить. Больше есть в переведённом на русский исчерпывающем мануале &lt;a href="http://svnbook.red-bean.com/nightly/ru/svn-book.html"&gt;тут&lt;/a&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-3584929455778696697?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=Lk1GVB6Mr7M:tLApp0bFmVI: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=Lk1GVB6Mr7M:tLApp0bFmVI: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=Lk1GVB6Mr7M:tLApp0bFmVI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=Lk1GVB6Mr7M:tLApp0bFmVI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/Lk1GVB6Mr7M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/3584929455778696697/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=3584929455778696697" title="Комментарии: 27" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3584929455778696697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3584929455778696697?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/Lk1GVB6Mr7M/svn.html" title="Небольшая шпаргалка по командам SVN" /><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">27</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/12/svn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HQHk9eSp7ImA9WxNbGUo.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-3466845864499713391</id><published>2009-11-23T00:41:00.001+03:00</published><updated>2009-11-23T14:30:31.761+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-23T14:30:31.761+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="гнуплот" /><title>Как построить графики с погрешностями в gnuplot по экспериментальным данным</title><content type="html">Собственно, наиболее часто в экспериментальной физике требуется строить графики, которые отражают точность измерений - на графиках требуется откладывать погрешности. Так как чаще всего данные организованы в таблицы, построить график с погрешностями в &lt;b&gt;gnuplot&lt;/b&gt; нетрудно, однако в этом деле есть ряд подводных камней, о чём&lt;span class="fullpost"&gt; ниже.&lt;br /&gt;&lt;br /&gt;Для того, чтобы указать &lt;b&gt;gnuplot&lt;/b&gt; строить графики с погрешностями, строка с командой &lt;i&gt;plot&lt;/i&gt; в скрипте должна содержать директиву &lt;i&gt;with errorbars&lt;/i&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;погрешности откладываются для данных по оси Х: &lt;i&gt;with xerrorbars&lt;/i&gt;&lt;/li&gt;&lt;li&gt;погрешности откладываются для данных по оси Y: &lt;i&gt;with yerrorbars&lt;/i&gt;&lt;/li&gt;&lt;li&gt;погрешности откладываются для данных по обоим осям: &lt;i&gt;with xyerrorbars&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Величину погрешности можно посчитать для каждой точки (в зависимости от эксперимента, например, при измерениях на разных пределах) и сделать для этого в файле данных &lt;i&gt;test.dat&lt;/i&gt; данных отдельную колонку:&lt;br /&gt;&lt;pre class="file"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;#  X     Y     dX    dY&lt;br /&gt;1.0   1.2   0.8   1.5&lt;br /&gt;2.0   1.8   0.3   2.3&lt;br /&gt;3.0   1.6   1.0   2.1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt; &lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;В этом случае, чтобы построить график с погрешностями по оси Y, например, последняя команда в скрипте для графика будет выглядеть так:&lt;br /&gt;&lt;pre class="sample"&gt;&lt;b&gt;gnuplot&gt; plot "test.dat" using 1:2:3 with yerrorbars&lt;/b&gt;&lt;/pre&gt;Общая идея, думаю, понятна: сначала указываются колонки, содержащие данные, а потом колонки, содержащие значения погрешностей. Таблица, любезно утянутая &lt;a href="http://t16web.lanl.gov/Kawano/gnuplot/"&gt;отсюда&lt;/a&gt;, даёт прекрасную иллюстрацию:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="incontent" border="1"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Data Format     &lt;/th&gt;&lt;th&gt;Column&lt;/th&gt;&lt;th&gt;using  &lt;/th&gt;&lt;th&gt;with&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;(X,Y) data      &lt;/td&gt;&lt;td&gt;X Y   &lt;/td&gt;&lt;td&gt;1:2    &lt;/td&gt;&lt;td&gt;lines, points, steps,&lt;br /&gt;                                                          linespoints, boxes, etc.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Y has an error of dY  &lt;/td&gt;&lt;td&gt;X Y dY    &lt;/td&gt;&lt;td&gt;1:2:3    &lt;/td&gt;&lt;td&gt;yerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;X has an error of dX  &lt;/td&gt;&lt;td&gt;X Y dX    &lt;/td&gt;&lt;td&gt;1:2:3    &lt;/td&gt;&lt;td&gt;xerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Y has an error of dY, and&lt;br /&gt;  X has an error of dX  &lt;/td&gt;&lt;td&gt;X Y dX dY &lt;/td&gt;&lt;td&gt;1:2:3:4  &lt;/td&gt;&lt;td&gt;xyerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Y has a range of [Y1,Y2]  &lt;/td&gt;&lt;td&gt;X Y Y1 Y2 &lt;/td&gt;&lt;td&gt;1:2:3:4  &lt;/td&gt;&lt;td&gt;yerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;X has a range of [X1,X2]  &lt;/td&gt;&lt;td&gt;X Y X1 X2 &lt;/td&gt;&lt;td&gt;1:2:3:4  &lt;/td&gt;&lt;td&gt;xerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Y has a range of [Y1,Y2], and&lt;br /&gt;  X has a range of [X1,X2]  &lt;/td&gt;&lt;td&gt;X Y X1 X2 Y1 Y2 &lt;/td&gt;&lt;td&gt;1:2:3:4:5:6  &lt;/td&gt;&lt;td&gt;xyerrorbars&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;    &lt;h3&gt;&lt;a name="3dim"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/h3&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;Пример 1. Построить график с погрешностями по обеим осям в gnuplot&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Итак, есть экспериментальные данные в виде таблицы с разделителями - пробелами:&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;16 18     0.72  10     whiteLEDS          1   10&lt;br /&gt;12 30     0.61  12   greenUltraBrightLEDS 1   10&lt;br /&gt;8  200    0.45  20    HGlamp             1   15&lt;br /&gt;6  1600   0.35  35  AlGaAsLser           1   50&lt;br /&gt;4  17000  0.28  68 NdYAG-laser           1   900&lt;br /&gt;4  25000  0.27  70  HeNeLaser            1   1100&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Нужно построить зависимость первой колонки от второй, при этом погрешности по оси X составляют 7% от данных, а по оси Y указаны в колонке 7. Вот такой при этом получается код для gnuplot:&lt;br /&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  #! /usr/bin/gnuplot -persist&lt;br /&gt;set terminal postscript 'NimbusSanL-Regu' eps enhanced&lt;br /&gt;set output "./plot/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSF.ps"&lt;br /&gt;set encoding koi8r&lt;br /&gt;set xlabel "Light's monochromaticity, {/Symbol l}/{/Symbol D}{/Symbol l}" font "NimbusSanL-Regu,18"&lt;br /&gt;set nokey&lt;br /&gt;set bmargin 4&lt;br /&gt;set ylabel "Number of resolvable points of the PSF's kinoform" font "NimbusSanL-Regu,18"&lt;br /&gt;set logscale x&lt;br /&gt;set grid&lt;br /&gt;set xrange [1:100000]&lt;br /&gt;set mxtics 10&lt;br /&gt;set style line 1 lt 1 pt 7 ps 0.5&lt;br /&gt;plot "./PSFoutofLambdaDeltaLambda.txt" using 2:((300/$1)**2):7:(((300/$1)**2)*0.07) with xyerrorbars linestyle 1, "./PSFoutofLambdaDeltaLambda.txt"  using 2:((300/$1)**2) smooth bezier with lines &lt;/span&gt;&lt;br /&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/SuKVJk0HfLI/AAAAAAAABOc/3TMcEfKa97A/s1600-h/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSF.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SuKVJk0HfLI/AAAAAAAABOc/3TMcEfKa97A/s320/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSF.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 224px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/SuKVJk0HfLI/AAAAAAAABOc/3TMcEfKa97A/s320/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSF.jpg" alt="" id="BLOGGER_PHOTO_ID_5396039295276907698" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;Что в этом коде (и графике) есть примечательного, заставившего меня таки покопаться в мануале?&lt;br /&gt;&lt;br /&gt;Ну например то, что при строительстве данных с погрешностями вам не удастся использовать линии: опция with linespoints не пройдёт и gnuplot будет выдавать ошибки. И это правильно: экспериментальные данные соединять непрерывной линией - моветон. Так что используем только &lt;span style="color: rgb(0, 102, 0);"&gt;linestyle 1 &lt;/span&gt;который определён так:&lt;span style="color: rgb(0, 102, 0);"&gt; set style line 1 lt 1 pt 7 ps 0.5&lt;/span&gt; Это значит: тип линии 1, стиль точек 7, размер точки на графике 0.5. Крайние точки я просто соединил кривой Безье, о чём честно написал в коде графика: &lt;span style="color: rgb(0, 102, 0);"&gt;smooth bezier with lines &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ну и наконец нужно было построить квадратичную зависимость по оси Y, что реализовано так: &lt;span style="color: rgb(0, 102, 0);"&gt;((300/$1)**2)  т&lt;/span&gt;о есть число 300 делится для каждой точки на значение в первой колонке,  результат возводится в квадрат.&lt;br /&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;Пример 2. Построить график с погрешностями и аппроксимацией в gnuplot&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;Задачка посложнее: здесь требовалось экспериментальные точки аппроксимировать прямой линией и погрешностями. Из части данных нужно вычесть постоянную составляющую, так что работы для &lt;b&gt;gnuplot&lt;/b&gt; хватает. Итак, сеанс чёрной магии с полным её разоблачением:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;#! /usr/bin/gnuplot -persist&lt;br /&gt;set terminal postscript 'NimbusSanL-Regu' eps enhanced solid&lt;br /&gt;set yrange [0.1:10000]&lt;br /&gt;set logscale x&lt;br /&gt;set logscale y&lt;br /&gt;set mxtics 10&lt;br /&gt;set mytics 10&lt;br /&gt;set grid xtics ytics mxtics mytics&lt;br /&gt;set format y "10^{%L}"&lt;br /&gt;set format x "10^{%L}"&lt;br /&gt;set mxtics 10&lt;br /&gt;set output "./plots/1RAWMEANtoSaturateLineApproxcomparingLogscale.ps"&lt;br /&gt;set encoding koi8r&lt;br /&gt;set xlabel "Exposure value, rel. units" font "NimbusSanL-Regu,18"&lt;br /&gt;set ylabel "Signal mean value, DN" font "NimbusSanL-Regu,18"&lt;br /&gt;set key bottom right&lt;br /&gt;set bmargin 4&lt;br /&gt;set style line 1 lt 2 pt 7 ps 1&lt;br /&gt;f(x) = (a*x)+b&lt;br /&gt;fit f(x) "./RAWMEANmeasurementresult" using 4:($3-255.22579) every ::4::35 via a,b&lt;br /&gt;plot "./RAWMEANmeasurementresult" using 4:($3-255.22579):7 title "Digital values of photosensor signal" with yerrorbars linestyle 1,  f(x) title "linear fitting function" with line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Сейчас &lt;strike&gt;маэстро Воланд&lt;/strike&gt; скромный автор сих строк разоблачит этот опыт. Первое, что надо разоблачить - аппроксимацию прямой. Здесь сначала задаётся функция &lt;span style="color: rgb(0, 102, 0);"&gt;f(x) = (a*x)+b&lt;/span&gt; которая далее подгоняется под данные &lt;span style="color: rgb(0, 102, 0);"&gt;using 4:($3-255.22579)&lt;/span&gt; из которых вычитается постоянная величина (эксперимент такой был). Далее при подгонке я потребовал от &lt;b&gt;gnuplot&lt;/b&gt;&lt;br /&gt;использовать только точки с 4 по 35-ю &lt;span style="color: rgb(0, 102, 0);"&gt;every ::4::35&lt;/span&gt; и, наконец, подогнать коэффициенты a и b под данные &lt;span style="color: rgb(0, 102, 0);"&gt;via a,b&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Здесь я отмечу то, что сам часто забываю: директиву &lt;span style="color: rgb(0, 153, 0);"&gt;every&lt;/span&gt; можно использовать не только при подгонке, но и для других графиков. Для этого полезно иметь перед глазами таблицу, которую изваял автор &lt;i&gt;not so Frequently Asked Questions:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; every I:J:K:L:M:N &lt;/td&gt;    &lt;td&gt;      &lt;table class="incontent" border="1"&gt;         &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;I &lt;/td&gt;&lt;td&gt; Line increment &lt;/td&gt;&lt;/tr&gt;         &lt;tr&gt; &lt;td&gt;J &lt;/td&gt;&lt;td&gt; Data block increment &lt;/td&gt;&lt;/tr&gt;         &lt;tr&gt; &lt;td&gt;K &lt;/td&gt;&lt;td&gt; The first line &lt;/td&gt;&lt;/tr&gt;         &lt;tr&gt; &lt;td&gt;L &lt;/td&gt;&lt;td&gt; The first data block &lt;/td&gt;&lt;/tr&gt;         &lt;tr&gt; &lt;td&gt;M &lt;/td&gt;&lt;td&gt; The last line &lt;/td&gt;&lt;/tr&gt;         &lt;tr&gt; &lt;td&gt;N &lt;/td&gt;&lt;td&gt; The last data block &lt;/td&gt;&lt;/tr&gt;      &lt;/tbody&gt;&lt;/table&gt;    &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every 2       &lt;/td&gt;&lt;td&gt; plot every 2 line &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every ::3     &lt;/td&gt;&lt;td&gt; plot from the 3-rd lines  &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every ::3::5  &lt;/td&gt;&lt;td&gt; plot from the 3-rd to 5-th lines &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every ::0::0  &lt;/td&gt;&lt;td&gt; plot the first line only &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every 2::::6  &lt;/td&gt;&lt;td&gt; plot the 1,3,5,7-th lines &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every :2      &lt;/td&gt;&lt;td&gt; plot every 2 data block &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; every :::5::8 &lt;/td&gt;&lt;td&gt; plot from 5-th to 8-th data blocks &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Теперь осталось построить два графика на одном:&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;plot "./RAWMEANmeasurementresult" using 4:($3-255.22579):7 title "Digital values of photosensor signal" with yerrorbars linestyle 1,  f(x) title "linear fitting function" with line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;То есть строим зависимость колонки 3 от 4 и используем колонку 7 как источник погрешности. При этом накладываем аппроксимационную линию с помощью директивы &lt;span style="color: rgb(0, 102, 0);"&gt;f(x) title "linear fitting function" with line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Собственно, вот итог моих фокусов:&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/SuKU5GSiy9I/AAAAAAAABOU/uUrCVGkkM4U/s1600-h/1RAWMEANtoSaturateLineApproxcomparingLogscale.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SuKU5GSiy9I/AAAAAAAABOU/uUrCVGkkM4U/s320/1RAWMEANtoSaturateLineApproxcomparingLogscale.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 224px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/SuKU5GSiy9I/AAAAAAAABOU/uUrCVGkkM4U/s320/1RAWMEANtoSaturateLineApproxcomparingLogscale.jpg" alt="" id="BLOGGER_PHOTO_ID_5396039012205120466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Красиво и вполне себе презентабельно, хоть в &lt;i&gt;Nature&lt;/i&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-3466845864499713391?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=vC_KN_A3E90:LyIDjM3cIjo: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=vC_KN_A3E90:LyIDjM3cIjo: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=vC_KN_A3E90:LyIDjM3cIjo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=vC_KN_A3E90:LyIDjM3cIjo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/vC_KN_A3E90" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/3466845864499713391/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=3466845864499713391" title="Комментарии: 10" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3466845864499713391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3466845864499713391?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/vC_KN_A3E90/gnuplot.html" title="Как построить графики с погрешностями в gnuplot по экспериментальным данным" /><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/SuKVJk0HfLI/AAAAAAAABOc/3TMcEfKa97A/s72-c/PSFoutofLambdaDeltaLambdavsfromNumberOfElementsPSF.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">10</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/11/gnuplot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUGRHsycCp7ImA9WxNaEE0.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-8517429922713004185</id><published>2009-11-20T21:21:00.005+03:00</published><updated>2009-11-23T23:13:45.598+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-23T23:13:45.598+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="блоггер" /><title>Ребрендеринг блога, Эпизод 2: Новая надежда</title><content type="html">Что, не ждали!? А вот оно как! Даже отчаянные консерваторы и поклонники тезиса "Не сломалось - не чини" иногда делают это... А если серьёзно, то на смену шаблона меня подтолкнул мой старинный товарищ SAV, который однажды на линукс-поинте деликатно мне намекнул на страшные тормоза с отрисовкой шаблона моего блога. Ну, думаю, раз такое дело, надо принимать меры. И я их принял, о чём далее.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Новый шаблон я несколько обточил перед тем, как сломать старый, но блог "Записки дебианщика" &lt;span style="color: rgb(153, 153, 153);"&gt;(вместе с самим дебианщиком :-))&lt;/span&gt; немного покукожит и поплющит, так как большая часть виджетов слетела и их надо восстанавливать героическим самоотверженным трудом. А в этом нелёгком деле авторский коллектив призывает на помощь благодарных читателей, дабы оные кидали тухлые помидоры в места наибольших скоплений багов.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Обновлено&lt;/span&gt;: на удивление, всё прошло довольно быстро и с минимальными потерями. Виджеты я перетащил со старого шаблона, самые занудные виджеты реализованы уже в Блоггере (гугловцы не дремлют).&lt;br /&gt;&lt;br /&gt;Новая идея такая: на главной - только один пост, и при том укороченный (с помощью fullpost). Все кнопки, виджеты и гаджеты снесены в подвал (вниз страницы) - это особенность нового &lt;span style="font-style: italic;"&gt;одноколоночного&lt;/span&gt; шаблона. Так как здесь важен текст, а не навороченное оформление, я выбирал самый простой шаблон при внешней презентабельности и минимализме. Основной шрифт Trebuchet - как и прежде, и по крайней мере в Firefox масштабируется колесом мыши без косяков.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;Обращаю внимание пользователей Microsoft Internet Explorer: в коде шаблона о вашем браузере написано много нехороших слов, так что если что-то отображается неправильно, то в этом виноваты не только кривые руки автора блога :-)&lt;/span&gt;&lt;/blockquote&gt;Так вот, пост на главной один, а остальное ищется локальным поиском (внизу слева), с помощью облака тегов или непосредственно по архиву блога (стандартный гугловский виджет). Функциональность вроде не пострадала. Предложения по улучшению принимаются (и пока у меня есть время их воплотить).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Немножко истории&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;Решил выложить предыдущие версии блога - как он выглядел раньше.&lt;br /&gt;Сначала я решил не мудрствовать и просто выбрал стандартный шаблон Sand Dollar, но выглядит он вполне сносно:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_hM8AMxgJLzw/RcxdDb9cD6I/AAAAAAAAAAU/0nra7_FedNw/s800/firefox2.jpg"&gt;&lt;img src="http://lh6.ggpht.com/_hM8AMxgJLzw/RcxdDb9cD6I/AAAAAAAAAAU/0nra7_FedNw/s800/firefox2.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 552px; height: 403px;" src="http://lh6.ggpht.com/_hM8AMxgJLzw/RcxdDb9cD6I/AAAAAAAAAAU/0nra7_FedNw/s800/firefox2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Потом был &lt;a href="http://mydebianblog.blogspot.com/2007/08/blog-post_24.html"&gt;шаблон с листьями&lt;/a&gt;, который я нашёл где-то на окраине Интернета и который я установил тогда, когда был Великий Переход Blogger со статических шаблонов на динамические (после этого отпала необходимость делать &lt;span style="font-style: italic;"&gt;Republish your blog&lt;/span&gt; - ветераны помнят, что это). В шаблон с листьями я со временем напихал столько хаков и джаваскриптов, что со роптать начали даже самые стойкие орлы. Шаблон содержал постоянно регенерируемую градиентную заливку (без неё шаблон не смотрелся вообще) - выглядел красиво:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/SwrqjTo6YXI/AAAAAAAABQc/kQ-3mvhFJ8M/s1600/mydebianblogYellowLeaves.png"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/SwrqjTo6YXI/AAAAAAAABQc/kQ-3mvhFJ8M/s400/mydebianblogYellowLeaves.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/SwrqjTo6YXI/AAAAAAAABQc/kQ-3mvhFJ8M/s400/mydebianblogYellowLeaves.png" alt="" id="BLOGGER_PHOTO_ID_5407392194899894642" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;... но тормозить под нагрузкой джаваскриптов стал безбожно.&lt;br /&gt;И вот, когда в очередной раз мне начали выносить мозг написанием научно-технического отчёта и переоформлением его в Microsoft Word (ну, вы поняли, да?), мне и пришла в голову шальная мысль - а не сменить ли мне шаблон. Полдня поисков, и вот, собственно, результат.&lt;br /&gt;&lt;br /&gt;Тормозить здесь просто нечему (в шаблоне только одно внешнее изображение - в заголовке). Код довольно прост и компактен, а большая часть хаков стали не нужны, так как они уже реализованы командой Blogger.&lt;br /&gt;&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-8517429922713004185?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=7BXqGBfOMKU:yI2S2SwQE_g: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=7BXqGBfOMKU:yI2S2SwQE_g: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=7BXqGBfOMKU:yI2S2SwQE_g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=7BXqGBfOMKU:yI2S2SwQE_g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/7BXqGBfOMKU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/8517429922713004185/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=8517429922713004185" title="Комментарии: 27" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/8517429922713004185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/8517429922713004185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/7BXqGBfOMKU/2.html" title="Ребрендеринг блога, Эпизод 2: Новая надежда" /><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://4.bp.blogspot.com/_hM8AMxgJLzw/SwrqjTo6YXI/AAAAAAAABQc/kQ-3mvhFJ8M/s72-c/mydebianblogYellowLeaves.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">27</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/11/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UAQXk7eSp7ImA9WxNUEUw.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-7041665296935525085</id><published>2009-11-02T00:34:00.000+03:00</published><updated>2009-11-02T00:34:00.701+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T00:34:00.701+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="навигация" /><title>Маршруты и треки с помощью GPS-навигаторов Garmin</title><content type="html">Отслеживание перемещений по GPS (tracking) это довольно интересная и полезная возможность современных навигаторов. Например, вы пошли в поход или просто в парк, и долго блуждали, пока искали правильный путь - со включённым отслеживанием вы потом сможете дома посмотреть, как можно было бы срезать путь. Или, что тоже важно, по этим данным можно найти обратную дорогу.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Собственно, на навигаторе всё довольно просто: в зависимости от модели, трекинг включается одной-двумя кнопками (в Garmin GPSmap 60CSX - главное меню - Track - ON). После этого на экране должны оставаться точки, которые обозначают ваш путь по местности. Эти данные в абсолютных координатах хранятся в самом навигаторе, и скачать их оттуда можно в Linux довольно просто.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Скачиваем треки в гармине под Linux&lt;/span&gt;&lt;br /&gt;Для этого нам понадобится консольная утилита &lt;span style="font-weight: bold;"&gt;gpsbabel&lt;/span&gt;. Её исходники нужно скачать с &lt;a href="http://www.gpsbabel.org/downloaded.html"&gt;официального сайта&lt;/a&gt; (или посмотреть в репозиториях своего любимого дистрибутива) и собрать. Далее в нашем распоряжении появляется собственно gpsbabel, с помощью которого треки и скачиваем. Вот как это происходит (утянуто у тов. &lt;a href="http://sovety.blogspot.com/"&gt;jetxee&lt;/a&gt; из &lt;a href="http://sovety.blogspot.com/2008/06/garmin-gpsmap-60cx-linux.html"&gt;этого поста&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Можно загрузить трек и точки маршрута с устройства при помощи программы &lt;/span&gt;&lt;code style="font-style: italic;"&gt;gpsbabel&lt;/code&gt;&lt;span style="font-style: italic;"&gt;, из командной строки. Если устройство подключено к &lt;/span&gt;&lt;code style="font-style: italic;"&gt;/dev/ttyUSB0&lt;/code&gt;&lt;span style="font-style: italic;"&gt;, а нужен трек с точками в формате GPX, то получить его можно так:&lt;/span&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;code&gt;$ gpsbabel -t -w -i garmin -f /dev/ttyUSB0 -o gpx -F мойтрек.gpx&lt;/code&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Другой способ получить эту информацию — скопировать с устройства GPX-файл в режиме USB Mass Storage, а потом уже его конверировать-преобразовывать… Этот файл с названием вида ГГГГММДД.gpx появляется на карточке памяти только если включена соответствующая функция в приборе. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Ну и зачем это всё надо!?&lt;/span&gt;&lt;br /&gt;Ответ на этот вопрос я хочу дать в виде примера. Вот, например, был я не так давно в замечательном парке Покровское-Глебово. Парк этот замечателен в первую очередь тем, что его вовсе не так просто найти, как это может показаться на первый взгляд, а найдя - ориентироваться в нём. Для меня это превратилось в увлекательное путешествие и освежение в памяти навыков спортивного ориентирования на местности, чем я увлекался в горячую пионерскую юность...&lt;br /&gt;&lt;br /&gt;Итак, по результатам моих хождений &lt;strike&gt;по мукам&lt;/strike&gt;по парку, появился файл с расширением GPX, который я скачал с помощью &lt;span style="font-weight: bold;"&gt;gpsbabel&lt;/span&gt; (см. немного выше). И что с ним, спрашивается, делать? А вот что. Скачиваем замечательную программу JOSM, которая позволяет редактировать карты &lt;a class="ext-link" href="http://www.openstreetmap.org/"&gt;OpenStreetMap&lt;/a&gt; (OSM). Как легко догадаться, программа на Java, и просит эту саму джаву не древнее версии 1.5. Выглядит сама программа примерно так:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/StsSDkzIk_I/AAAAAAAABM8/w4p_ye_Sdpk/s1600-h/JOSM1.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/StsSDkzIk_I/AAAAAAAABM8/w4p_ye_Sdpk/s320/JOSM1.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/StsSDkzIk_I/AAAAAAAABM8/w4p_ye_Sdpk/s320/JOSM1.jpg" alt="" id="BLOGGER_PHOTO_ID_5393924831333356530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;После этого можем скачать карту с OpenStreetMap и загрузить её в JOSM для просмотра. Интерфейс на Java, так что набираемся терпения и ждём, пока отрисуется. Далее можно открыть скачанный трек в формате GPX и он должен стать новым слоем (над картой). Тонкая серая извилистая линия, помеченная на скриншоте красными стрелками, это и есть мой путь по парку.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/StsSNk6ihJI/AAAAAAAABNE/KRPEacOeppM/s1600-h/JOSM2.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/StsSNk6ihJI/AAAAAAAABNE/KRPEacOeppM/s320/JOSM2.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/StsSNk6ihJI/AAAAAAAABNE/KRPEacOeppM/s320/JOSM2.jpg" alt="" id="BLOGGER_PHOTO_ID_5393925003163108498" border="0" /&gt;&lt;/a&gt;Собственно, из него я потом узнал, как пройти более коротким путём и что в парке мне не удалось с первого захода посмотреть. Довольно удобно так же использовать трекинг для редактирования OpenStreetMap, особенно если вы хорошо знаете район - с помощью треков можно вносить в карты улицы и дома. Но об этом как-нибудь в следующий раз...&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-7041665296935525085?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=-jVkpbXGouY:tOr8X7Hiyb8: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=-jVkpbXGouY:tOr8X7Hiyb8: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=-jVkpbXGouY:tOr8X7Hiyb8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=-jVkpbXGouY:tOr8X7Hiyb8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/-jVkpbXGouY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/7041665296935525085/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=7041665296935525085" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7041665296935525085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7041665296935525085?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/-jVkpbXGouY/gps-garmin.html" title="Маршруты и треки с помощью GPS-навигаторов Garmin" /><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://4.bp.blogspot.com/_hM8AMxgJLzw/StsSDkzIk_I/AAAAAAAABM8/w4p_ye_Sdpk/s72-c/JOSM1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/11/gps-garmin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMAQX8_fyp7ImA9WxNWGUw.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-7915714106179555310</id><published>2009-10-19T04:34:00.001+04:00</published><updated>2009-10-19T04:34:00.147+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-19T04:34:00.147+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="навигация" /><title>Garmin 60CSx: технические особенности устройства и карты для Garmin</title><content type="html">В этом посте мне хотелось собрать раскиданные там и сям разные технические особенности GPS-навигатора Garmin 60CSx. Кроме того, несколько замечаний о картах для Garmin 60CSx. Собственно, о них далее.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Где скачать карты для Garmin?&lt;/span&gt; Собственно, на торрентах или пойти и честно воспользоваться картами OpenStreetMaps.&lt;br /&gt;Уже готовые карты OSM по городам есть &lt;a href="http://gpsmapsearch.com/osm/mp/"&gt;здесь&lt;/a&gt;. Или можно отправиться на сайт &lt;a href="http://www.openstreetmap.org/"&gt;OpenStreetMaps&lt;/a&gt;, зарегистрироваться там и скачать карту нужной области честно и бесплатно.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Для этого заходим на &lt;a href="http://www.openstreetmap.org/"&gt;http://www.openstreetmap.org/&lt;/a&gt; и регистрируемся. Далее выделяем область карты, которую хотим экспортировать (для последующей закачки в навигатор), жмём  на Экспорт и просим карту в OSM формате - через некоторое время получаем файлик map.osm. Теперь скачиваем &lt;span style="font-weight: bold;"&gt;mkmap&lt;/span&gt; &lt;a href="http://www.mkgmap.org.uk/snapshots/"&gt;отсюда&lt;/a&gt;, как завещал ув.тов. jetxee в своей бессмертной &lt;a href="http://sovety.blogspot.com/2009/02/openstreetmap-gps-garmin.html"&gt;статье&lt;/a&gt;, оно на джаве и требует сановскую джаву версии старше 1.5. С её помощью компилируем в полученный OSM-файл в img формат. Получившийся файл &lt;a href="http://mydebianblog.blogspot.com/2009/08/gps-garmin-gpsmap-60csx.html"&gt;заливаем в гармин с помощью sendmap&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Однако с картами OpenStreetMap есть одна проблема: не дают скачать сразу большую карту (я с жадности запросил у сервера векторную карту всей Москвы с областью). Если нужны большие карты, например, всей РФ, можно податься на &lt;a href="http://downloads.cloudmade.com/asia/russian_federation#breadcrumbs"&gt;Cloudmade.com&lt;/a&gt; и скачать оттуда. Этот сайт содержит уже скачанные карты местностей в формате OSM (которые мы потом перегоняем в img для Гармина) и собственно файл IMG, который можно закачать в навигатор.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Закачивание карт в Garmin 60CSx&lt;/span&gt;&lt;br /&gt;По сообщениям разных осведомлённых &lt;a href="http://garmincolorado.wikispaces.com/Colorado+vs+60csx?responseToken=0d2043c26672e892377d6aa5d871a52fb"&gt;орлов&lt;/a&gt;, во внутренней памяти (internal) может находиться до 3 карт, тогда как на флешке (microSD) - только одна. Хотя, как совершенно справедливо попенял многоуважаемый комментатор &lt;a href="http://diaword.vox.com/" rel="nofollow"&gt;diaword&lt;/a&gt;,  на самом деле, никто не мешает скачать несколько карт и потом собрать из них одну. Это &lt;a href="http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin"&gt;можно сделать&lt;/a&gt; с помощью утилиты &lt;a href="http://wiki.openstreetmap.org/wiki/Mkgmap"&gt;Mkgmap&lt;/a&gt;, а её ключик &lt;span style="font-style: italic;"&gt;--gmapsupp&lt;/span&gt; позволяет собрать результирующую карту из нескольких отдельных и потом залить в навигатор. Файл gmapsupp.img является архивом из нескольких карт *.img, причем их можно как упаковывать, так и обратно распаковывать с помощью &lt;span style="font-style: italic;"&gt;sendmap&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;А такой финт, как закачка четырёх файлов карт сразу:&lt;br /&gt;&lt;blockquote&gt;Gmapbmap.img -- базовая карта&lt;br /&gt;Gmapsupp.img -- ваша карта&lt;br /&gt;Gmapsup2.img -- другая карта&lt;br /&gt;Gmapprom.img -- другая карта&lt;br /&gt;&lt;/blockquote&gt;на Garmin 60CSx не проходит, к сожалению.&lt;br /&gt;&lt;br /&gt;Размер одной карты (img-файл) не может превышать 2Gb, хотя карта может состоять из кусков, число этих кусков не может быть больше 2025.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Комментарий насчёт экрана Garmin 60CSx&lt;/span&gt;&lt;br /&gt;В Сети есть много критики по поводу низкого разрешения (160х240 пикселей) трансфлективного экрана у 60CSx. Критика понятна, так как есть другие навигаторы с более высоким разрешением. Но друзья, мы же помним, зачем гарминовцы эту модель выпускали? Правильно, для туристов, рыбоволовов, любителей активного отдыха и прочих экстремалов. Там важно не любоваться на карты, а быстро понять, где ты находишься.&lt;br /&gt;&lt;br /&gt;Чтобы дать понять всю прелесть экрана 60CSx в походных условиях, вот фотография face-to-face: мой телефон Motorola 1200AE и 60CSx. На мобильнике подсветка включена на полную катушку, а на Гармине она не включена вообще.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Str_rYUeQsI/AAAAAAAABM0/TQ5GnT6iMGY/s1600-h/garminvsmotorola.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Str_rYUeQsI/AAAAAAAABM0/TQ5GnT6iMGY/s320/garminvsmotorola.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Str_rYUeQsI/AAAAAAAABM0/TQ5GnT6iMGY/s320/garminvsmotorola.jpg" alt="" id="BLOGGER_PHOTO_ID_5393904624457368258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;И кто из них продержится дольше - думаю, понятно.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;Память и подключение&lt;/span&gt;&lt;br /&gt;Подключение происходит через miniUSB кабель как в режиме MassStorage, так и по специльному протоколу. И тот, и другой вариант &lt;a href="http://mydebianblog.blogspot.com/2009/08/gps-garmin-gpsmap-60csx.html"&gt;поддерживаются&lt;/a&gt; в Linux.&lt;br /&gt;В комплекте идёт карта microSD на 64Mb, максимальная поддерживаемая ёмкость карты 4GB micro SDHC.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;&lt;br /&gt;Батареи&lt;/span&gt;&lt;br /&gt;Удобнее использовать комплект аккумуляторов: от двух NiMH аккумуляторов ёмкости 2700mA*h устройство будет работать 16-20 часов.&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-7915714106179555310?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=QTPwNca0g94:Ulaw90Ba958: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=QTPwNca0g94:Ulaw90Ba958: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=QTPwNca0g94:Ulaw90Ba958:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=QTPwNca0g94:Ulaw90Ba958:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/QTPwNca0g94" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/7915714106179555310/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=7915714106179555310" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7915714106179555310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7915714106179555310?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/QTPwNca0g94/garmin-60csx-garmin.html" title="Garmin 60CSx: технические особенности устройства и карты для Garmin" /><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://4.bp.blogspot.com/_hM8AMxgJLzw/Str_rYUeQsI/AAAAAAAABM0/TQ5GnT6iMGY/s72-c/garminvsmotorola.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/10/garmin-60csx-garmin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8CQX0_fyp7ImA9WxNXGE4.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-3507235981992873824</id><published>2009-10-05T00:55:00.001+04:00</published><updated>2009-10-06T16:07:40.347+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-06T16:07:40.347+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="научное" /><title>QtOctave - графическая оболочка для Octave</title><content type="html">Хотя MATLAB и правит миром численных математических расчётов, в этом деле ему зреет очень хорошая альтернатива - GNU/Octave. И хотя у Октавы много проблем, таких как слабая документация и в основном консольный режим работы, есть и хорошие новости: проект QtOctave, ставящий своей целью сделать графическую среду разработки для Octave, весьма неплох. О нём и будет этот небольшой пост.&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;Для того, чтобы поставить QtOctave, вам потребуется скачать бинарник с сайта авторов и установить пакет &lt;span style="font-weight: bold;"&gt;octave&lt;/span&gt; в вашем дистрибутиве. Собранный и готовый бинарник прямо с сайта &lt;a href="http://forja.rediris.es/frs/download.php/856/qtoctave_binaries_Linux_i386-0.8.1_svn166.binaries.tar.bz2"&gt;qtoctave_binaries_Linux_i386-0.8.1_svn166.binaries.tar.bz2&lt;/a&gt; . Далее устанавливаем QtOctave по инструкции, то есть делаем sudo ./install.sh&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;&lt;br /&gt;Собственно, открываем графическую консольку и пишем: qtoctave. Перед вами развернётся графическая благодать, в которой замигает разноцветными огнями вся неимоверная мощь Octave. Разворачиваем одно из окон и открываем там свой скрипт на MATLAB\Octave. Выглядит это так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hM8AMxgJLzw/Slt2l_GC0XI/AAAAAAAABJc/FvFFoya0sBE/s1600-h/qtoctave1.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_hM8AMxgJLzw/Slt2l_GC0XI/AAAAAAAABJc/FvFFoya0sBE/s320/qtoctave1.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_hM8AMxgJLzw/Slt2l_GC0XI/AAAAAAAABJc/FvFFoya0sBE/s320/qtoctave1.jpg" alt="" id="BLOGGER_PHOTO_ID_5358006576651358578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;По умолчанию можно просматривать переменные, список последних команд и файлов. В общем-то, для работы особенно больше ничего и не нужно. Развернув окно внутренней консоли в QtOctave, можно работать непосредственно с командной строкой Октавы и при этом видеть список активных переменных.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/Slt28rMKLBI/AAAAAAAABJk/e2iVvvY7lgo/s1600-h/qtoctave2.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Slt28rMKLBI/AAAAAAAABJk/e2iVvvY7lgo/s320/qtoctave2.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Slt28rMKLBI/AAAAAAAABJk/e2iVvvY7lgo/s320/qtoctave2.jpg" alt="" id="BLOGGER_PHOTO_ID_5358006966445288466" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Сразу из замеченных недостатков: в графической консоли внутри QtOctave нельзя использовать подсказку по клавише TAB, при этом оно переходит в режим правки. Так же хотелось бы попенять на то, что QtOctave &lt;/span&gt;&lt;span class="fullpost"&gt;не сохраняет расположение окон. &lt;/span&gt;&lt;span class="fullpost"&gt;Но это в общем не так бросается в глаза: при некотором навыке работы с Октавой или Матлабом работать вы будете не с консолью, а с редактором, &lt;a href="http://mydebianblog.blogspot.com/2009/07/matlab-linux.html"&gt;как уже описывалось ранее&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Так же в комплекте идёт справка в формате HTML, причём весьма добротная. Конечно, до матлабовской ещё очень и очень далеко, но уже что-то. И главное, что это в комплекте, то есть batteries included.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Slt32t10A0I/AAAAAAAABJs/UKkHfHKSkJg/s1600-h/qtoctave3.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Slt32t10A0I/AAAAAAAABJs/UKkHfHKSkJg/s320/qtoctave3.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Slt32t10A0I/AAAAAAAABJs/UKkHfHKSkJg/s320/qtoctave3.jpg" alt="" id="BLOGGER_PHOTO_ID_5358007963589280578" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;То есть можно не только работать в Octave, но ещё и получать справку по командам, хотя и весьма базовую.&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;br /&gt;В целом впечатление QtOctave производит очень благоприятное. Хотя Octave можно пользоваться таким же способом, как и MATLAB, &lt;a target="_blank" href="http://mydebianblog.blogspot.com/2009/07/matlab-linux.html"&gt;о чём уже писалось&lt;/a&gt;, просмотр переменных и история команд в графическом виде это очень полезные возможности QtOctave. Хочется пожелать успехов проекту и дальнейшего развития.&lt;br /&gt;&lt;br /&gt;Так же можно посмотреть в сторону&lt;/span&gt; Python и SciPy. Как советуют &lt;a href="http://www.blogger.com/profile/00441172787160329883"&gt;товарищи питонисты&lt;/a&gt;, для этого есть следующие инструменты:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pythonxy.com/foreword.php" rel="nofollow"&gt;Python(x,y)&lt;/a&gt; готовый дистрибутив питона для научных нужд (batteries included).&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/spyderlib/" rel="nofollow"&gt;SPYDER&lt;/a&gt; (графическая оболочка, входит также в Python(x,y) в дополнение к Eclipse)&lt;/li&gt;&lt;/ul&gt;Так же можно посмотреть в сторону IPython.&lt;span class="fullpost"&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-3507235981992873824?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=6rMCavBqJiU:NpR-oEQcRA0: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=6rMCavBqJiU:NpR-oEQcRA0: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=6rMCavBqJiU:NpR-oEQcRA0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=6rMCavBqJiU:NpR-oEQcRA0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/6rMCavBqJiU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/3507235981992873824/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=3507235981992873824" title="Комментарии: 8" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3507235981992873824?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/3507235981992873824?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/6rMCavBqJiU/qtoctave-octave.html" title="QtOctave - графическая оболочка для Octave" /><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/Slt2l_GC0XI/AAAAAAAABJc/FvFFoya0sBE/s72-c/qtoctave1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/10/qtoctave-octave.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEAQX07fyp7ImA9WxNQFEU.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-4729006107079261031</id><published>2009-09-21T01:04:00.000+04:00</published><updated>2009-09-21T01:04:00.307+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-21T01:04:00.307+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>Научная поисковая система на вашем Linux-десктопе</title><content type="html">Некоторое время назад я писал о &lt;span style="font-weight: bold;"&gt;SWISH&lt;/span&gt;++, и вот теперь мне хотелось бы обобщить написанное в более краткой форме. Проблема поиска нужной статьи, если не помнишь точно где она находится в каталогах, действительно серьёзная.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;1. Поиск дубликатов&lt;/span&gt;&lt;br /&gt;Итак, когда я накачал нужных мне статей из Интернета, я прежде всего смотрю, есть ли они у меня в коллекции с помощью &lt;span style="font-weight: bold;"&gt;fdupes&lt;/span&gt;. Эта программа ищет дубликаты файлов:&lt;br /&gt;&lt;blockquote&gt;$ fdupes -rd .&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Точка в конце говорит о том, что искать дубликаты &lt;span style="font-weight: bold;"&gt;fdupes&lt;/span&gt; будет, начиная с текущего каталога, поэтому можно в каталоге со статьями сделать подкаталог 1/  и набросать туда скачанные статьи.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fdupes&lt;/span&gt; сравнивает файлы как побайтово, так и с помощью подсчёта md5-суммы, работает невероятно быстро, сортировка производится в полуавтоматическом режиме: программа выводит в консоли дублирующиеся файлы и спрашивает, какой из них оставить. Об этом уже говорилось &lt;a href="http://mydebianblog.blogspot.com/2006/10/blog-post_16.html"&gt;в статье о подходах&lt;/a&gt; к сортировке PDF-файлов.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;2. Индексация текста в PDF-файлах&lt;/span&gt;&lt;br /&gt;Сначала из &lt;/span&gt;&lt;span class="fullpost"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;документов pdf вытаскиваем текст, &lt;/span&gt;для чего просим утилиту &lt;span style="font-weight: bold;"&gt;find&lt;/span&gt; найти все файлы PDF и для каждого найденного выполнить &lt;span style="font-weight: bold;"&gt;pdftotext&lt;/span&gt; без выдачи предупреждений и без вставки символов разрыва страницы:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;find -name '*.pdf' -exec pdftotext -nopgbrk -q {} \; &lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Надо отметить, что &lt;span style="font-weight: bold;"&gt;pdftotext&lt;/span&gt; хорошо работает только для английского языка, на котором, в общем, все статьи и написаны.&lt;br /&gt;&lt;br /&gt;Теперь индексируем все текстовые файлы - в этом нам поможет собрат SWISH++ по имени  &lt;span style="font-weight: bold;"&gt;index++&lt;/span&gt; для индексации текстовых файлов:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;index++ -e "text:*.txt" .&lt;br /&gt;&lt;/blockquote&gt;Точка в конце означает, что поиск ведётся с текущего каталога. Подробнее об индексации и автоматизации этого процесса сказано &lt;a href="http://mydebianblog.blogspot.com/2006/10/pdf.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;В результате в текущем каталоге появится файл &lt;span style="font-style: italic;"&gt;swish++.index&lt;/span&gt; где, собственно, лежит информация об индексировани файлов. Теперь всё готово для поиска.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 102, 51);"&gt;3. Ищем в архиве статей нужное&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Для поиска &lt;a href="http://mydebianblog.blogspot.com/2006/10/pdf-swish.html"&gt;используем&lt;/a&gt; &lt;span class="fullpost"&gt;&lt;span style="font-weight: bold;"&gt;search++&lt;/span&gt; которая найдёт по нашему запросу в индексированной базе  &lt;span style="font-style: italic;"&gt;swish++.index&lt;/span&gt; файлы. Вот пример поиска статьи по математической морфологии, в которых нет упоминания про медицину:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;$ search++ morphology and erosion and dilation not medicine&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Мгновение спустя вижу результат &lt;span style="color: rgb(153, 153, 153);"&gt;(вывод сокращён)&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;# results: 125&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 99 ./Krylov2.txt 3771 Krylov2.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 49 ./13300407.txt 3103 13300407.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 46 ./morph1.slides.printing.6.txt 4369 morph1.slides.printing.6.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 37 ./lecture_morphology_sara.txt 6746 lecture_morphology_sara.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 30 ./SIGGRAPH2002_Sketch-Mitchell.txt 5308 SIGGRAPH2002_Sketch-Mitchell.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 26 ./MorphologicalImageProcessing.txt 7642 MorphologicalImageProcessing.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 25 ./phdsymp2002_ledda.txt 8298 phdsymp2002_ledda.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 23 ./lab2_manual.txt 9313 lab2_manual.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 23 ./Project 1.txt 9946 Project 1.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 22 ./morphology.txt 11212 morphology.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 22 ./edg/morphology.txt 11212 morphology.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 22 ./slides-6-geometry.txt 11717 slides-6-geometry.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 22 ./V1BFOGG8.txt 10797 V1BFOGG8.txt&lt;/small&gt;&lt;br /&gt;&lt;small&gt; 18 ./71650638.txt 13978 71650638.txt&lt;/small&gt;&lt;br /&gt;&lt;/blockquote&gt; Первая колонка - релевантность, вторая - расположение файла относительно текущей директории, третья - размер файла, четвёртая - имя. Просто и понятно.&lt;br /&gt;&lt;br /&gt;Теперь в консольке набираю kdpf &lt;/span&gt;&lt;span class="fullpost"&gt;&lt;small&gt;./Krylov2.pdf&lt;/small&gt;&lt;/span&gt; и смотрю нужную мне статью. И всё.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Ссылки&lt;/span&gt;&lt;br /&gt;Собственно, документации о SWISH++ очень мало, так что в основном я решил собрать свои предыдущие записи в один пост:&lt;br /&gt;- &lt;a href="http://mydebianblog.blogspot.com/2006/10/blog-post_16.html"&gt;поиск и удаление дубликатов файлов с помощью fdupes&lt;/a&gt;;&lt;br /&gt;- &lt;a href="http://mydebianblog.blogspot.com/2006/10/pdf.html"&gt;выделение текста из PDF-файлов и их индексация&lt;/a&gt;;&lt;br /&gt;- &lt;a href="http://mydebianblog.blogspot.com/2006/10/pdf-swish.html"&gt;поиск в индексированных файлах с помощью SWISH++&lt;/a&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-4729006107079261031?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=pmla2zY5j3k:JnfWcAcSkek: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=pmla2zY5j3k:JnfWcAcSkek: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=pmla2zY5j3k:JnfWcAcSkek:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=pmla2zY5j3k:JnfWcAcSkek:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/pmla2zY5j3k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/4729006107079261031/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=4729006107079261031" title="Комментарии: 9" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4729006107079261031?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4729006107079261031?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/pmla2zY5j3k/linux.html" title="Научная поисковая система на вашем 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/09/linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8FQX48eSp7ImA9WxNRFU0.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-8658134889669331382</id><published>2009-09-09T17:54:00.004+04:00</published><updated>2009-09-09T18:50:10.071+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-09T18:50:10.071+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="обработка" /><category scheme="http://www.blogger.com/atom/ns#" term="изображение" /><title>Чтение MAT-файлов MATLAB в nip2</title><content type="html">То, о чём так долго говорили красные, белые, зелёные, и даже голубые - свершилось. Теперь замечательный графический анализатор nip2 полностью поддерживает чтение MAT-файлов, в которых MATLAB записывает данные рабочего окружения с двойной точностью (double precision). И хотя в основной ветке этой возможности ещё нет, в SVN-репозитории оно уже появилось благодаря скромным усилиям автора этих строк и John Cupitt - одного из авторов nip2 и библиотеки VIPS.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;На всякий случай:&lt;/span&gt; nip2 это &lt;a href="http://mydebianblog.blogspot.com/2007/09/nip2.html"&gt;графический &lt;span style="font-style: italic;"&gt;анализатор&lt;/span&gt; изображений&lt;/a&gt; (это не привычный gimp или photoshop), который создавался специально &lt;a href="http://mydebianblog.blogspot.com/2006/11/nip2.html"&gt;для работы с огромными файлами&lt;/a&gt; и научных применений. Но он может быть полезен и простым пользователям: с его помощью легко открывать, просматривать, кадрировать огромные файлы. Или, например, склеить две фотографии в одну - как склеивают панорамы.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);font-size:130%;" &gt;Для чего нужно открывать MAT-файлы в nip2&lt;/span&gt;&lt;br /&gt;Упреждая возможные вопросы "а зачем нам проприетарный mat когда есть csv" отвечу: запись в открытый формат CSV в матлабе происходит несколько нетривиальным образом и можно записать только одну переменную. Более того, если забыть указать несколько важных параметров, можно сильно потерять в точности сохраняемых данных. И главное, что уже много результатов научных экспериментов сохранено в MAT-формате.&lt;br /&gt;&lt;br /&gt;Периодически возникает необходимость быстро просмотреть эти данные (это изображения) в каком-нибудь просмотрщике без необходимости загружать MATLAB. Таковых просмотрщиков я не знаю - открыть MAT-файл может только GNU/Octave с помощью библиотеки matio. Так что эта возможность очень нужна и востребована.&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);font-size:130%;" &gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Установка nip2 и VIPS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Хотя об установке nip2 я &lt;a href="http://mydebianblog.blogspot.com/2008/04/nip2.html"&gt;уже писал&lt;/a&gt;, тем не менее, повторюсь. Сначала нужно  &lt;span class="fullpost"&gt;скачать &lt;a href="http://www.vips.ecs.soton.ac.uk/supported/"&gt;отсюда&lt;/a&gt; из support-зоны самый свежак. Сначала собираем VIPS и устанавливаем пакет, потом собираем nip2 и тоже устанавливаем. Последние версии (vips7.18.XX) со старыми версиями Питона могут не собраться, так что для этого при сборке пользуем ключ --without-python и собираем&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Для себя и своих студентов я собрал пакеты под Debian Etch и архитектуру i386 &lt;span style="color: rgb(153, 153, 153);"&gt;(да-да, я в конкретном бронепоезде)&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://narod.ru/disk/12968013000/nip2_7.18.2-1_i386.deb.html"&gt;nip2-7.18.2-alpha&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://narod.ru/disk/12968209000/vips_7.18.2-1_i386.deb.html"&gt;vips-7.18.2-alpha&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;После этого добавляем программу в меню вашего оконного менеджера или запускаем прямо из графической консоли командой &lt;span style="font-weight: bold; font-style: italic;"&gt;nip2.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 153, 51);font-size:130%;" &gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;Просмотр MAT-файлов MATLAB в nip2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Здесь всё довольно просто: в диалоге открытия явно указываем, что хотим просмотреть &lt;span style="font-style: italic;"&gt;MATLAB's mat-files&lt;/span&gt;  и далее открываем такой файл. Пример на скриншоте - легендарная Лена&lt;br /&gt;(&lt;a href="http://mydebianblog.blogspot.com/2007/02/blog-post_12.html"&gt;а кто такая Лена?&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sqe6upeSlMI/AAAAAAAABMM/Gxbbg4_dTpk/s1600-h/nip2mat-lena.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sqe6upeSlMI/AAAAAAAABMM/Gxbbg4_dTpk/s320/nip2mat-lena.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_hM8AMxgJLzw/Sqe6upeSlMI/AAAAAAAABMM/Gxbbg4_dTpk/s320/nip2mat-lena.jpg" alt="" id="BLOGGER_PHOTO_ID_5379473590486996162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;А теперь примерчик посложнее - загружаем изображение усреднённых темновых шумов цифровой камеры и берём от них Фурье-преобразование (на том же скриншоте открыта в левом нижнем углу неудачная фотография от скоростной съёмки):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sqe92L6-orI/AAAAAAAABMU/ywlGaxgK7lk/s1600-h/nip2mat-lena2.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sqe92L6-orI/AAAAAAAABMU/ywlGaxgK7lk/s320/nip2mat-lena2.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sqe92L6-orI/AAAAAAAABMU/ywlGaxgK7lk/s320/nip2mat-lena2.jpg" alt="" id="BLOGGER_PHOTO_ID_5379477018528096946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Так что наши данные теперь можно просмотреть без томительного ожидания, пока MATLAB откроет эти файлы. Кстати о данных в форматах CSV и MAT...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Данные в CSV и MAT-форматах: особенности записи MATLAB и просмотр nip2&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Эту заметку я хотел сделать отдельным постом, но решил выложить здесь же. Появился тут вопрос: как сохраняет MATLAB данные с плавающей точкой в разных форматах. Для этого мы провели маленькое расследование...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 51);font-size:100%;" &gt;&lt;b&gt;Подготовка&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Ответ состоит из нескольких частей. Да, Матлаб может сохранять данные в своём формате mat, и его может прочесть та же Octave (теперь и nip2 с использованием библиотеки matio). Для проверки сгенерируем матрицу&lt;br /&gt;&lt;br /&gt;&gt;&gt; a = magic(5)&lt;br /&gt;&lt;br /&gt;a =&lt;br /&gt;&lt;br /&gt; 17    24     1     8    15&lt;br /&gt; 23     5     7    14    16&lt;br /&gt;  4     6    13    20    22&lt;br /&gt; 10    12    19    21     3&lt;br /&gt; 11    18    25     2     9&lt;br /&gt;&lt;br /&gt;&gt;&gt; b =a./3&lt;br /&gt;&lt;br /&gt;b =&lt;br /&gt;&lt;br /&gt; 5.6667    8.0000    0.3333    2.6667    5.0000&lt;br /&gt; 7.6667    1.6667    2.3333    4.6667    5.3333&lt;br /&gt; 1.3333    2.0000    4.3333    6.6667    7.3333&lt;br /&gt; 3.3333    4.0000    6.3333    7.0000    1.0000&lt;br /&gt; 3.6667    6.0000    8.3333    0.6667    3.0000&lt;br /&gt;&lt;br /&gt;&gt;&gt; b(2,2)=1.09878432753084573248523475&lt;br /&gt;&gt;&gt; b(2,3)=2^20&lt;br /&gt;&lt;br /&gt;Видим только первые четыре числа после запятой - это потому, что по умолчанию MATLAB отображает числа в коротком формате. Изменить этот формат можно командой &lt;b&gt;format type.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Чтобы сделать задачу более наглядной, в матрицу записали два числа: одно с разными числами после запятой, а второе - очень большое (2^20). Теперь сохраняем в MAT-файл и CSV командами:&lt;br /&gt;&lt;blockquote&gt; save('magic5x5doubleafterformatlong.mat', 'b'); &lt;span style="color: rgb(153, 153, 153);"&gt;&lt;i&gt;%% это сохраняется MAT-файл&lt;br /&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;csvwrite('magic5x5double-afterformatlong.csv',b); &lt;/span&gt;&lt;i&gt;%% это сохраняется CSV-файл&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;Теперь открываем их и сравниваем с исходниками...&lt;br /&gt;&lt;big&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Данные в MAT-файле.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/big&gt;В MAT-файлах всё чисто: он сохраняет так же, как и открывает.&lt;br /&gt;&lt;blockquote&gt;&gt;&gt; load('magic5x5doubleafterformatlong.mat')&lt;br /&gt;&gt;&gt; b&lt;br /&gt;b =&lt;br /&gt;1.0e+06 *&lt;br /&gt;Columns 1 through 4&lt;br /&gt;0.00000566666667   0.00000800000000   0.00000033333333   0.00000266666667&lt;br /&gt;0.00000766666667   0.00000109878433   1.04857600000000   0.00000466666667&lt;br /&gt;0.00000133333333   0.00000200000000   0.00000433333333   0.00000666666667&lt;br /&gt;0.00000333333333   0.00000400000000   0.00000633333333   0.00000700000000&lt;br /&gt;0.00000366666667   0.00000600000000   0.00000833333333   0.00000066666667&lt;br /&gt;Column 5&lt;br /&gt;0.00000500000000&lt;br /&gt;0.00000533333333&lt;br /&gt;0.00000733333333&lt;br /&gt;0.00000100000000&lt;br /&gt;0.00000300000000&lt;br /&gt;&gt;&gt; b(2,2)&lt;br /&gt;ans =&lt;br /&gt;1.09878432753085&lt;br /&gt;&gt;&gt; b(2,3)&lt;br /&gt;ans =&lt;br /&gt;  1048576&lt;br /&gt;&lt;/blockquote&gt;&lt;big&gt;&lt;b&gt;&lt;span style="color: rgb(153, 102, 51);"&gt;&lt;br /&gt;Данные в CSV-файле.&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/big&gt;А вот тут начинаются приключения. MATLAB записывает в CSV формат данные с точностью, такой же, как при отображении. То есть, например, при отображении используется вывод только первых 4 чисел после запятой - следовательно, сохранены они в CSV будут так же.&lt;br /&gt;&lt;br /&gt;&gt;&gt; b(2,2)&lt;br /&gt;&lt;br /&gt;ans =&lt;br /&gt;&lt;br /&gt; 1.0988&lt;br /&gt;&lt;br /&gt;С большими числами тоже самое: они сохраняются в экспоненциальной форме с точностью, установленной для отображения (по умолчанию 4 знака). Это так же видно в CSV-файле (записывает с той точностью, с которой отображает). У одной и той же матрицы, сохранённой в CSV и MAT сходный размер.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&gt;&gt; b(2,3)=2^20&lt;br /&gt;&lt;br /&gt;b =&lt;br /&gt;&lt;br /&gt;1.0e+06 *&lt;br /&gt;&lt;br /&gt; 0.0000    0.0000    0.0000    0.0000    0.0000&lt;br /&gt; 0.0000    0.0000    1.0486    0.0000    0.0000&lt;br /&gt; 0.0000    0.0000    0.0000    0.0000    0.0000&lt;br /&gt; 0.0000    0.0000    0.0000    0.0000    0.0000&lt;br /&gt; 0.0000    0.0000    0.0000    0.0000    0.0000&lt;br /&gt;&lt;br /&gt;&gt;&gt; b(2,3)&lt;br /&gt;&lt;br /&gt;ans =&lt;br /&gt;&lt;br /&gt;  1048600&lt;br /&gt;&lt;br /&gt;&gt;&gt; 2^20&lt;br /&gt;&lt;br /&gt;ans =&lt;br /&gt;&lt;br /&gt;  1048576&lt;br /&gt;&lt;br /&gt;Именно так оно и происходит по умолчанию: MATLAB просто округляет числа при записи в CSV до четырёх значащих чисел. Для того, чтобы запись происходила с нужной нам точностью в CSV, следует использовать команду dlmwrite и явно указывать точность. Например так:&lt;br /&gt;&lt;br /&gt;&gt;&gt; dlmwrite('magic5x5double1-dlmwrite-precision12f.csv', b, 'precision', '%12.12f')&lt;br /&gt;&lt;br /&gt;Это записывает матрицу в CSV формат с переменной &lt;b&gt;b&lt;/b&gt; и обеспечивает точность 12 значащих чисел. Так что стоит аккуратнее обходиться с командами записи: csvwrite вам запишет, конечно, переменную, но с малой точностью. Это может стать источником трудноуловимых проблем.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 102, 51);font-size:100%;" &gt;&lt;b&gt;Отображение данных в MAT и CSV форматах в nip2&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;Теперь, возвращаясь к теме поста, в последних версиях (nip2 и vips &gt; 7.18.2) замечательного графического анализатора nip2  можно просматривать не только данные в CSV, но и в MAT-файлах. Это очень и очень удобная возможность: например, усреднённое изображение в MAT-файле можно проанализировать и посмотреть без необходимости загружать лишний раз MATLAB. Особенно это актуально, если изображение в MAT-файле больших размеров. Точность просмотра CSV и MAT-данных составляет 5 значащих цифр.&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-8658134889669331382?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=HknX0l2JNyo:0kLxNbif9AU: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=HknX0l2JNyo:0kLxNbif9AU: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=HknX0l2JNyo:0kLxNbif9AU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=HknX0l2JNyo:0kLxNbif9AU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/HknX0l2JNyo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/8658134889669331382/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=8658134889669331382" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/8658134889669331382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/8658134889669331382?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/HknX0l2JNyo/mat-matlab-nip2.html" title="Чтение MAT-файлов MATLAB в nip2" /><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/Sqe6upeSlMI/AAAAAAAABMM/Gxbbg4_dTpk/s72-c/nip2mat-lena.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/09/mat-matlab-nip2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMAQXwyfSp7ImA9WxNREks.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-7224094771697840771</id><published>2009-09-07T00:04:00.000+04:00</published><updated>2009-09-07T00:04:00.295+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T00:04:00.295+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="мультимедиа" /><title>MOCP - Music On Console player, или Играй, гармонь!</title><content type="html">Время от времени нужно выходить в консоль и гасить иксы - для изменения иксовых же настроек или обновлений, связанных с иксовыми пакетами. И сидеть в это время в тишине совсем не хочется. Конечно, можно запустить&lt;a href="http://mydebianblog.blogspot.com/2007/04/xmms.html"&gt; XMMS&lt;/a&gt; на ноутбуке и проигрывать музыку оттуда, но есть решение лучше: MOCP.  Запустил MOCP в консольке, скрыл - и музыка заиграла. Вышел из иксов что-то поправить в консоли -  а гармонь-то поёт :-)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;Если б гармошка умела&lt;br /&gt;всё говорить, не тая...&lt;br /&gt;&lt;small&gt;&lt;i&gt;(с) Песня, из которой слов не выкинуть&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Об этом замечательном плеере уже писал Андрей aka vonderer &lt;a href="http://vonderer.blogspot.com/2006/10/music-on-console-xmms.html"&gt;здесь&lt;/a&gt;. Из той песни тоже слов не выкинуть, но я немного подробнее остановлюсь на управлении плеером. Как любое хорошее приложение, оно управляется горячими клавишами, и основные клавиатурные  сокращения такие:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ENTER – переключиться в директорию и\или начать воспроизведение песни&lt;/li&gt;&lt;li&gt;o – проиграть URL (например, интернет-радиостанции)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;p или пробел – пауза&lt;/li&gt;&lt;li&gt;s – стоп&lt;/li&gt;&lt;li&gt;l – переключиться между одно- и двухпанельным режимом&lt;br /&gt;&lt;/li&gt;&lt;li&gt;a – добавить текущий файл в список воспроизведения&lt;/li&gt;&lt;li&gt;A – добавить текущую директорию в список воспроизведения&lt;/li&gt;&lt;li&gt;C – очистить список воспроизведения&lt;/li&gt;&lt;li&gt;q – отключить консольный интерфейс (сервер MOC будет продолжать воспроизведение, к нему можно подключиться снова, набрав &lt;b&gt;mocp&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Q – отключение MOC-сервера (прекращение воспроизведения)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Так же можно воспользоваться более широкими возможностями по управлению плеером с помощью следующих клавиатурных сокращений:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;n      -- проиграть следующую песню из списка&lt;/li&gt;&lt;li&gt;  b      -- проиграть предыдущую песню из списка&lt;/li&gt;&lt;li&gt;S      -- воспроизведение в произвольном порядке&lt;/li&gt;&lt;li&gt;  R      -- повторяет выбранную песню циклически&lt;br /&gt;&lt;/li&gt;&lt;li&gt;u      -- перемещает элемент списка воспроизведения вверх&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  j      -- перемещает элемент списка воспроизведения вниз&lt;/li&gt;&lt;li&gt;g или /      -- ищет заданную строку в именах фалов песен&lt;br /&gt;&lt;/li&gt;&lt;li&gt;r      -- перечитать директорию заново&lt;br /&gt;&lt;/li&gt;&lt;li&gt;f      -- переключить режим отображения с имён файлов на теги&lt;/li&gt;&lt;li&gt;  TAB    -- переключение между списком воспроизведения и файлами песен&lt;br /&gt;&lt;/li&gt;&lt;li&gt;H      -- показывает скрытые файлы&lt;/li&gt;&lt;li&gt;  Ctrl-t -- показать или убрать длительность песни в списке&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  Ctrl-f -- показать или убрать формат песни&lt;br /&gt;&lt;/li&gt;&lt;li&gt;U      -- переместиться на уровень выше в директории&lt;/li&gt;&lt;li&gt;  a      -- добавить файл к списку воспроизведения&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  A      -- добавить каталог к списку воспроизведения&lt;/li&gt;&lt;li&gt;  C      -- очистить список воспроизведения&lt;/li&gt;&lt;li&gt;  V      -- сохранить список воспроизведения&lt;/li&gt;&lt;li&gt;  d      -- удалить отмеченные песни из списка воспроизведения&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Наконец, управление громкостью&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  &lt; -- уменьшить громкость на  1%&lt;/li&gt;&lt;li&gt;  ,      --  уменьшить громкость на  5%&lt;/li&gt;&lt;li&gt;   &gt;—  увеличить громкость на  1%&lt;/li&gt;&lt;li&gt;  .      — увеличить громкость на 5%&lt;/li&gt;&lt;/ul&gt;Если вы запамятовали какую-нибудь команду, то получить справку по клавиатурным сокращениям можно клавишей "?"&lt;br /&gt;&lt;br /&gt;Язык осин и берёз MOCP по умолчанию отображает славяно-греко-латинской мешаниной, что легко &lt;a href="http://vonderer.blogspot.com/2006/10/music-on-console-xmms.html"&gt;поправить&lt;/a&gt;.  Для этого копируем пример конфига отсюда:&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;blockquote&gt;$ cp /usr/share/doc/moc/examples/config.example.gz ~/.moc/&lt;br /&gt;$ cd ~/.moc&lt;br /&gt;# chown $USER config.example.gz&lt;br /&gt;&lt;/blockquote&gt;Где $USER - имя пользователя в системе. После этого разархивируем конфиг:&lt;br /&gt;&lt;blockquote&gt;$ gunzip config.example.gz&lt;br /&gt;$ mv config.example config&lt;br /&gt;&lt;/blockquote&gt;И правим его своим любимым текстовым редактором. Чтобы заставить MOCP дружить с кириллицей в ID3v1-заголовках, необходимо найти строку:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#ID3v1TagsEncoding = WINDOWS-1250&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;и превратить ее в&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;ID3v1TagsEncoding = WINDOWS-1251&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;И всё, играй, гармонь!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30744165-7224094771697840771?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=up-45C_70KE:EPWkNz3jHeo: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=up-45C_70KE:EPWkNz3jHeo: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=up-45C_70KE:EPWkNz3jHeo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=up-45C_70KE:EPWkNz3jHeo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/up-45C_70KE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/7224094771697840771/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=7224094771697840771" title="Комментарии: 18" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7224094771697840771?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/7224094771697840771?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/up-45C_70KE/mocp-music-on-console-player.html" title="MOCP - Music On Console player, или Играй, гармонь!" /><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">18</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/07/mocp-music-on-console-player.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUFRHc7eyp7ImA9WxBSEkk.&quot;"><id>tag:blogger.com,1999:blog-30744165.post-4433343008701852973</id><published>2009-08-31T00:37:00.000+04:00</published><updated>2009-12-19T19:30:15.903+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-19T19:30:15.903+03:00</app:edited><title>Как обналичить чек Google Adsense в Москве</title><content type="html">Некоторое время назад на блоге появилась контекстная реклама Google AdSense, чтобы несколько поддержать моё материальное благосостояние. И вот я получил свой долгожданный чек на целых сто восемнадцать долларов. Казалось бы - что такого, всего лишь обналичить чек? Но вот тут-то история и начинается...&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Пусть этот пост немного не в тему блога, просто мало ли кому пригодится (или я снова буду обналичивать чек от AdSense). Итак, мы имеем чек Google AdSense, который выпустил Citibank в США. Такие чеки выглядят так:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sltz0GMa_sI/AAAAAAAABJU/GEYlYz-FVOQ/s1600-h/GoogleAdSenseVirensEdited.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sltz0GMa_sI/AAAAAAAABJU/GEYlYz-FVOQ/s320/GoogleAdSenseVirensEdited.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 309px; height: 320px;" src="http://4.bp.blogspot.com/_hM8AMxgJLzw/Sltz0GMa_sI/AAAAAAAABJU/GEYlYz-FVOQ/s320/GoogleAdSenseVirensEdited.jpg" alt="" id="BLOGGER_PHOTO_ID_5358003520540442306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Всего делов - обналичить чек. Для этого мы обзваниваем окрестные банки и говорим, как &lt;a href="http://lecactus.ru/2008/05/14/2149/"&gt;совершенно правильно советуют старшие товарищи&lt;/a&gt;, &lt;span style="color: rgb(0, 0, 0);"&gt;что нужно &lt;strong&gt;СДАТЬ ИМЕННОЙ ЧЕК НА ИНКАССО&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Услуга это не массовая, и скорее всего придётся ехать в центральное (головное) отделение банка. Операция проводится довольно долго (у меня заняло около 40 минут вместе с открытием счёта), так что запасаемся терпением. Ниже - итоги моих странствий со счастливым концом :-)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-weight: bold; color: rgb(153, 102, 51);"&gt;&lt;span style="font-size:130%;"&gt;Краткий обзор пунктов приёма именных чеков Google AdSense на инкассо в Москве&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Сразу заявляю: я звонил в те банки, которые либо близко от меня территориально, либо где у меня уже открыты счета. Все данные актуальны на &lt;span style="font-weight: bold;"&gt;Июль 2009 года&lt;/span&gt;. Так как всё течёт и меняется, лучше перед походом не полениться и позвонить в банк.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Итак, чеки Google AdSense соглашается брать:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;РБР, Русский банк развития (ФК Открытие):&lt;/span&gt; комиссия 1% от суммы (минимум 5$) + 900 руб (!) на почтовые расходы + комиссии сторонних банков. Время - не более 1 месяца. Только в головном отделении. Требуется открытие счёта.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0); font-weight: bold;"&gt;Банк Москвы:&lt;/span&gt; комиссия 350 рублей, вроде (?) счёт открывать не обязательно, сроков назвать не могут.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Юниаструм банк:&lt;/span&gt; комиссия 500 рублей (= 21$), открытие счёта, головное отделение. Время 1-2 месяца.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;В Райффайзен Банк, Альфа-банк и БинБанк можно не звонить и не тратить время - чеков не берут.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-style: italic;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-style: italic;"&gt;Теперь личные впечатления.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Несмотря на то, что в РБР у меня открыт счёт, комиссия у них просто грабительская: 1% от суммы и 900 рублей на почту + комиссия сторонних банков. Я, конечно, понимаю здоровое желание банков подзаработать, но всё имеет свои пределы.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Банк Москвы так же порадовал: по телефону бодро пообещали, что обналичить могут в любом офисе, но я, зная цену таким обещаниям, поехал в головное отделение. Дальше начинался цирк с конями: в головном офисе обналичка чеков только до 18:00 (хотя отделение работает до 20:00) и срока обналички назвать не могут (!). Такой восхитительный бардак, впрочем, неудивителен, судя по &lt;a href="http://www.banki.ru/services/responses/bank/?id=3425"&gt;отзывам клиентов о самом банке&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;Решив, что нервы дороже, поехал в Юниаструм банк. Путь &lt;a href="http://www.uniastrum.ru/ru/branches/moscow.php?ID=415"&gt;неблизкий&lt;/a&gt;, но он того стоил. Персонал очень вежливый и приветливый, клиентов немного, на всю операцию (открытие счёта, приём чека на инкассо, оплата комиссии) ушло около 40 минут. В итоге: открыт валютный счёт, но без карты (комиссия не берётся, как и деньги за обслуживание), через 45 дней деньги можно забрать по паспорту в любом отделении Юниаструмбанка.&lt;br /&gt;&lt;br /&gt;Не так давно (конец августа 2009) я зашёл в местный доп.офис Юниаструма и, после некоторых объяснений, забрал свои кровные 110$ американских рублей. Правда, с меня взяли комиссию в 1.5% "за безналичный перевод" - это составило около полутора долларов. На всё ушло около 40 дней, как и было обещано банкирами.&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-4433343008701852973?l=mydebianblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/debianletters?a=LH07jt5boqA:3LAZNt0UVc0: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=LH07jt5boqA:3LAZNt0UVc0: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=LH07jt5boqA:3LAZNt0UVc0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/debianletters?i=LH07jt5boqA:3LAZNt0UVc0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/debianletters/~4/LH07jt5boqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mydebianblog.blogspot.com/feeds/4433343008701852973/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=30744165&amp;postID=4433343008701852973" title="Комментарии: 10" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4433343008701852973?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30744165/posts/default/4433343008701852973?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/debianletters/~3/LH07jt5boqA/google-adsense.html" title="Как обналичить чек Google Adsense в Москве" /><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://4.bp.blogspot.com/_hM8AMxgJLzw/Sltz0GMa_sI/AAAAAAAABJU/GEYlYz-FVOQ/s72-c/GoogleAdSenseVirensEdited.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">10</thr:total><feedburner:origLink>http://mydebianblog.blogspot.com/2009/08/google-adsense.html</feedburner:origLink></entry></feed>
