<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2051948051894215337</atom:id><lastBuildDate>Wed, 30 May 2012 21:47:51 +0000</lastBuildDate><category>обновление</category><category>итоги</category><category>облака</category><category>conky</category><category>мысли</category><category>полезное</category><category>LibreOffice</category><category>FAQ</category><category>репозиторий</category><category>игры</category><category>устройства</category><category>программы</category><category>мультимедиа</category><category>аудио</category><category>wine</category><category>bash</category><category>установка</category><category>chrome</category><category>история</category><category>emerald</category><category>android</category><category>сайты</category><category>GIMP</category><category>обои</category><category>compiz</category><category>конкурс</category><category>программирование</category><category>настройка</category><category>opera</category><category>google</category><category>значки</category><category>unity</category><title>Банальные заметки убунтовода</title><description>Банально о Ubuntu и не только. Заметки о установке, настройке, использовании программ и самой Ubuntu.</description><link>http://ramzport.blogspot.com/</link><managingEditor>noreply@blogger.com (ramzport)</managingEditor><generator>Blogger</generator><openSearch:totalResults>292</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/FjlE" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogspot/fjle" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-5495083701661215664</guid><pubDate>Wed, 30 May 2012 18:25:00 +0000</pubDate><atom:updated>2012-05-30T22:25:50.935+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GIMP</category><category domain="http://www.blogger.com/atom/ns#">репозиторий</category><title>Обновляем GIMP до версии 2.8</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Релиз GIMP 2.8 состоялся еще 3 мая сего года, но как-то руки не доходили написать об этом, да и обновляться, собственно, не спешил. И лишь сегодня вечером решился исправить сложившееся недоразумение.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Перво-наперво добавляем любым удобным способом репозиторий с последней версией графического редактора:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Не устану рекомендовать для этого Ubuntu Tweak, что удобно и не заставляет совершать лишних телодвижений (хотя да, мышкой движений больше):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-A0XFCNDYVYI/T8ZgO58jbbI/AAAAAAAABfA/HISlMQuQcNU/s1600/ubuntutweak.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-A0XFCNDYVYI/T8ZgO58jbbI/AAAAAAAABfA/HISlMQuQcNU/s400/ubuntutweak.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Обновляемся и запускаем GIMP. Сразу же бросается в глаза изменная заставка, она стала гораздо "веселее" по сравнению с темно-синей у версии 2.6.&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4uMbEwBjV3c/T8ZgQO8YmFI/AAAAAAAABfI/Tt7-Ac4RJxU/s1600/zastavka.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-4uMbEwBjV3c/T8ZgQO8YmFI/AAAAAAAABfI/Tt7-Ac4RJxU/s400/zastavka.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Признаюсь честно, на обновление меня подтолкнула возможность объединить все панели в одном окне. Надоели инструменты, постоянно вылетающие на другие рабочие столы, особенно когда работа касалась нескольких документов. Теперь же выбрав на панели "Окна - Однооконный режим" можно объединить все, что нужно, в единое целое:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NxVJd3Lq5zY/T8ZgGw8St-I/AAAAAAAABe4/hTB9A9bGKOk/s1600/onewindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-NxVJd3Lq5zY/T8ZgGw8St-I/AAAAAAAABe4/hTB9A9bGKOk/s400/onewindow.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Пусть полный &lt;a href="http://www.expertdoma.ru/tn.html" title="технический надзор"&gt;технический надзор&lt;/a&gt;  проводят специалисты, но среди того, что произвело&amp;nbsp;впечатление, хочется отметить:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- однооконный режим;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- возможность объединять слои в отдельные группы;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- новые поля для ввода числовых параметров инструментов, значения вводятся с клавиатуры, прокруткой колеса мыши, с помощью кнопок со стрелками, перетаскиванием ползунка, вообщем стало удобнее;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- кисти можно вращать, а также добавлять им метки, что должно существенно облегчить поиск.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;И, судя по блогу разработчиков, это не все улучшения. Так что обновиться действительно стоит!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-5495083701661215664?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/gimp-28.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-A0XFCNDYVYI/T8ZgO58jbbI/AAAAAAAABfA/HISlMQuQcNU/s72-c/ubuntutweak.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-6791456448447018241</guid><pubDate>Fri, 25 May 2012 12:40:00 +0000</pubDate><atom:updated>2012-05-25T16:44:38.729+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Сводим дебет с кредитом</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;На сегодняшний день все готово к ведению простого учета денежных средств: таблицы для хранения данных, представления для их удобного отображения и формы для ввода доходов и расходов. К тому же я уже успел заполнить оба журнала сведениями за 10 дней, но один нюанс мешает продолжать развитие системы - проверка правильности заполнения путем сравнения суммы от введенных операций с реальным количеством денег на счетах.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;В этом деле вновь помогут представления. Для начала узнаем суммы в обоих журналах (расходы и доходы) сгруппировав их по счетам:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JdPDkX3cFOg/T793qE9WxnI/AAAAAAAABeQ/SfzbDYkoXM0/s1600/balance1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-JdPDkX3cFOg/T793qE9WxnI/AAAAAAAABeQ/SfzbDYkoXM0/s400/balance1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Представление по журналу расходов&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BKyGp5hTJf4/T793rnBqBWI/AAAAAAAABeY/NEvgLxTJ1HE/s1600/balance2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-BKyGp5hTJf4/T793rnBqBWI/AAAAAAAABeY/NEvgLxTJ1HE/s400/balance2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Представление по журналу доходов&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Теперь неплохо было бы объединить полученные данные, чтобы увидеть - что же осталось на счетах. Еще одно представление данных (хотя можно было бы и запрос):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-grFMKhsSgis/T795IUTUtXI/AAAAAAAABeg/zB7ooEiKlg8/s1600/balance3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-grFMKhsSgis/T795IUTUtXI/AAAAAAAABeg/zB7ooEiKlg8/s400/balance3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Представление о балансе&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Последний столбец этого представления отведен под расчет разницы между доходами и расходами. Получившиеся сводная таблица пригодится для вот такого отчета:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0q3OBwsjdz8/T796Xs4xeDI/AAAAAAAABeo/EzbDqrU7GfA/s1600/balance4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-0q3OBwsjdz8/T796Xs4xeDI/AAAAAAAABeo/EzbDqrU7GfA/s400/balance4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Отчет "Остатки на счетах"&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Его создание описывать бессмысленно, так как там все очень просто.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;На данном этапе видно, что для обозначения валют можно добавить поля со сокращенным написанием, чтобы более понятно подавать информацию. К тому же это даст возможность сжать отчет и вывести в нем подробности о движении&amp;nbsp;средств. Вообщем есть еще над чем поработать :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;А пока можно посетить &lt;a href="http://comp-i.ru/" title="интернет магазин компьютеров"&gt;&lt;b&gt;&lt;i&gt;интернет магазин компьютеров&lt;/i&gt;&lt;/b&gt;&lt;/a&gt; и взглянуть на то, на что можно будет потратить сэкономленные таким образом деньги. Есть возможность предварительного заказа, так что поездка до Твери будет не напрасной. Да и системнику уже 4 года...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-6791456448447018241?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base_25.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-JdPDkX3cFOg/T793qE9WxnI/AAAAAAAABeQ/SfzbDYkoXM0/s72-c/balance1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-5244518330708953340</guid><pubDate>Thu, 24 May 2012 18:38:00 +0000</pubDate><atom:updated>2012-05-25T08:12:25.028+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Форма добавления операций</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Покончив со вспомогательными формами, пора приступать к основным - к формам добавления операций, записей расходов и доходов. Полей становится еще больше, но порядок действий остается прежним. Переходим на вкладку "Формы" и выбираем "Использовать мастер для создание формы".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Выбираем требуемые поля, здесь пригодятся все за исключением идентификатора, который проставляется автоматически:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-00WU6r8scl4/T753l64VJ2I/AAAAAAAABdU/3palB_v0FDo/s1600/formloss1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-00WU6r8scl4/T753l64VJ2I/AAAAAAAABdU/3palB_v0FDo/s320/formloss1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Выбираем поля&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Остальные шаги практически не имеют значения - выбираем полюбившуюся расцветку и начинаем модификацию формы. Прежде всего заменим непонятные латинские названия полей словами на родном языке:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LxbhO8VlFZk/T753mnVkBxI/AAAAAAAABdY/aoPMKQcNQPA/s1600/formloss2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-LxbhO8VlFZk/T753mnVkBxI/AAAAAAAABdY/aoPMKQcNQPA/s320/formloss2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Переименовываем поля&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Теперь предстоит заменить поля на списки, естественно там, где это нужно. Поле для ввода дата проведения операции меняется на "Поле даты". Так будет гораздо удобнее:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--HH5DAeqC8w/T753ndKRTII/AAAAAAAABdk/EUdU5r1z044/s1600/formloss3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/--HH5DAeqC8w/T753ndKRTII/AAAAAAAABdk/EUdU5r1z044/s320/formloss3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Поле даты&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;В свойствах для списка с выбором счета указываем соответствующее представление (viewlistacc):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sIQHEuuBUb0/T753ofaefsI/AAAAAAAABdo/DA8Rwz9HOYE/s1600/formloss4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-sIQHEuuBUb0/T753ofaefsI/AAAAAAAABdo/DA8Rwz9HOYE/s320/formloss4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список счетов&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;В свойствах для списка с выбором категории расходов (доходов) указываем соответствующее представление (viewlistlosscat/viewlistprofcat):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZbpB3ho3ts8/T753pNu-0LI/AAAAAAAABd0/LtwRIClDCTA/s1600/formloss5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-ZbpB3ho3ts8/T753pNu-0LI/AAAAAAAABd0/LtwRIClDCTA/s320/formloss5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список категорий&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Вот так база данных постепенно&amp;nbsp;приобретает&amp;nbsp;человеческий облик, правда панели&amp;nbsp;инструментов&amp;nbsp;все портят, но по окончании их можно будет убрать.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Форма для добавления дохода создается точно также.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;К сожалению, слетевшие настройки в наше время, когда все зависит от всемирной паутины, могут серьезно повлиять как на деловую жизнь, так и на личную. Если вам посчастливилось быть жителем Санкт-Петербурга, &lt;a href="http://starservice.spb.ru/nastroika_internet.php" title="Настройка интернет в Василеостровском районе"&gt;&lt;b&gt;&lt;i&gt;Настройка интернет в Василеостровском районе&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&amp;nbsp;не станет проблемой, потому что там всегда рады помочь. Ни единого разрыва вам, дорогие читатели!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-5244518330708953340?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base_3766.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-00WU6r8scl4/T753l64VJ2I/AAAAAAAABdU/3palB_v0FDo/s72-c/formloss1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-2123354344454779549</guid><pubDate>Thu, 24 May 2012 10:25:00 +0000</pubDate><atom:updated>2012-05-24T14:25:57.050+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Составные представления данных</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Перед созданием базы данных для ведения домашнего бюджета было определено, что категории - наименьший этап разбивки расходов (доходов), далее пойдут статьи. Каждая статья содержит определенные категории, но хранить идентификаторы статей в основных таблицах (журнал расходов и доходов) не разумно. Достаточно лишь записывать категорию и, соответственно, выбирать ее в форме.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;В таком подходе есть одно "но" - не всегда ясно, какая категория к какой статье относится. Да и могут быть одинаковые категории в разных статьях. Например, я добавил в каждую статью категорию "Разное", но объединять их никак нельзя. Поэтому для выбора категории в форме можно использовать список с таким представлением, что будет понятно куда отнести необходимую категорию. Допустим, человек выполняет &lt;a href="http://www.24zakaz.ru/" title="печать визиток"&gt;печать визиток&lt;/a&gt;  и календарей - это две разные статьи доходов, при этом и визитки, и календари разбиты на категории, среди которых есть "Разное". Они должны быть разделены между собой.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;На вкладке "Таблицы" выбираем "Создать представление..." и в появившемся окне добавляем две таблицы, одна из которых содержит категории, а другая - статьи:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rJjsF_Q96_g/T74DN7HQMJI/AAAAAAAABcs/FDB509mIcq4/s1600/view-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-rJjsF_Q96_g/T74DN7HQMJI/AAAAAAAABcs/FDB509mIcq4/s400/view-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Добавляем таблицы&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Затем, в нижней части добавляем поле, содержащее идентификатор категорий, и еще одно с таким хитрым выражением: "listlosssect"."losssectname" + "listlosscat"."losscatname". Это позволит вывести в произвольном поле название двух других, принимая при этом идентификатор одного из них. Также необходимо поставить получившееся поле первым - для списков:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ki9wYk8HmQQ/T74E5vTHg4I/AAAAAAAABc0/pE67bV0XSgQ/s1600/view-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-Ki9wYk8HmQQ/T74E5vTHg4I/AAAAAAAABc0/pE67bV0XSgQ/s400/view-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Устанавливаем поля&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Данное выражение будет выводить запись вида "СтатьяКатегория", что не очень-то&amp;nbsp;удобочитаемо. Гораздо лучше смотрится что-то вроде "Статья - Категория". Для продолжения редактирование отключим дизайнерский вид:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RRE1sw6KAgk/T74ItPryp6I/AAAAAAAABdA/fFb9ULN96bU/s1600/view-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-RRE1sw6KAgk/T74ItPryp6I/AAAAAAAABdA/fFb9ULN96bU/s400/view-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Вне дизайна&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Исправляем в тексте запроса значение первого поля на -&amp;nbsp;"listlosssect"."losssectname" || ' - ' || "listlosscat"."losscatname". И смотри что получилось нажав кнопку "Выполнить запрос":&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-5UbRO408J6c/T74JeNQx_-I/AAAAAAAABdI/OTJsRSS0dSA/s1600/view-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-5UbRO408J6c/T74JeNQx_-I/AAAAAAAABdI/OTJsRSS0dSA/s400/view-4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Выполняем запрос&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Представление готово к использованию!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-2123354344454779549?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base_2735.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-rJjsF_Q96_g/T74DN7HQMJI/AAAAAAAABcs/FDB509mIcq4/s72-c/view-1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-3297570174267087303</guid><pubDate>Thu, 24 May 2012 06:49:00 +0000</pubDate><atom:updated>2012-05-24T20:42:24.957+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Формы со списком и представления данных</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Редко какие формы ограничиваются лишь одним полем. Обычно их несколько и это не только поля: флажки, группы, кнопки, переключаемые кнопки и, наконец, списки. Вот о них и поговорим в сегодняшней статье.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Зачем нужны списки на форме? Ну, конечно же, для выбора. Во многие поля таблиц записываются безликие идентификаторы и заполнять форму становиться затруднительно. Гораздо проще выбрать из выпадающего списка нужное значение, а программа сама подставит соответствующее числовое значение в таблицу. Как уже говорилось ранее под числом может иметься в виду что угодно, любая категория, а в таблице она будет идти за абстрактным номером. Чтобы не ошибиться при вводе потребуется список: либо на бумаге, либо на форме.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;С помощью мастера создаем форму на основе таблицы счетов (listacc):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sb5cpJxCavY/T73IsVI4hNI/AAAAAAAABbE/GLmAkOFl7rs/s1600/formacc-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-sb5cpJxCavY/T73IsVI4hNI/AAAAAAAABbE/GLmAkOFl7rs/s400/formacc-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Выбор полей&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Макет будет точно такой же, как и в предыдущей статье:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-T2SFXhOm-hw/T73JCphlE5I/AAAAAAAABbM/bU1mDZaNA8Q/s1600/formacc-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-T2SFXhOm-hw/T73JCphlE5I/AAAAAAAABbM/bU1mDZaNA8Q/s400/formacc-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Элементы управления&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;После всех шагов переходим к модификации полученной формы:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-efzRIMccacM/T73JaeUho0I/AAAAAAAABbU/CedTO2YSITM/s1600/formacc-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-efzRIMccacM/T73JaeUho0I/AAAAAAAABbU/CedTO2YSITM/s400/formacc-6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Переходим к модификации&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;После создании формы через мастер, ее элементы сгруппированы. Поэтому для их редактирования входим в группы и вносим требуемые исправления, в данном случае - меняем подписи к полям:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mLbmitQD0IM/T73LFKQCVtI/AAAAAAAABbc/WrESo6ujqTM/s1600/formacc-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-mLbmitQD0IM/T73LFKQCVtI/AAAAAAAABbc/WrESo6ujqTM/s400/formacc-7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Входим в группу элементов&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-bezP0eJGm-U/T73OF6GbAGI/AAAAAAAABbo/vFIFfXdyUPw/s1600/formacc-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-bezP0eJGm-U/T73OF6GbAGI/AAAAAAAABbo/vFIFfXdyUPw/s400/formacc-8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;i&gt;Меняем подписи&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Теперь заменим обычное поле на список. Для этого щелкаем правой кнопкой на поле, выбираем "Заменить на - Список". Дальше двойным щелчком на нем открываем&amp;nbsp;свойства&amp;nbsp;элемента и устанавливаем "Да" в поле "Раскрываемый", что сделает список выпадающим:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--9i7X-OqJE0/T73QhFLsdOI/AAAAAAAABb0/Yqen7vleWlI/s1600/formacc-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/--9i7X-OqJE0/T73QhFLsdOI/AAAAAAAABb0/Yqen7vleWlI/s400/formacc-9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Указываем "раскрываемость"&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;На вкладке данные устанавливаем нужные параметры источника данных:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eKP82gpnln4/T73RbucCZNI/AAAAAAAABb8/uV1kNjvX_-c/s1600/formacc-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-eKP82gpnln4/T73RbucCZNI/AAAAAAAABb8/uV1kNjvX_-c/s400/formacc-10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Устанавливаем параметры&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Закрываем и сохраняем форму. Смотри, что &amp;nbsp;же получилось в итоге:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ABt2BxLNIvg/T73Tr4r-SCI/AAAAAAAABcE/CW0clmgsLk8/s1600/formacc-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-ABt2BxLNIvg/T73Tr4r-SCI/AAAAAAAABcE/CW0clmgsLk8/s400/formacc-11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Предварительный итог&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;А в итоге получилось совсем не то, что ожидалось. Все дело в том, что Base подставляет в список самое первое значение в таблице, а в данном случае это идентификатор. Но проблему можно решить создав&amp;nbsp;представление&amp;nbsp;для таблицы. Представление - эдакий запрос, позволяющий&amp;nbsp;расставить&amp;nbsp;поля в нужном порядке.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Переходим на вкладку "Таблицы", выбираем пункт "Создать представление...". В открывшемся окне добавляем таблицу:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-q1brjPYc7zA/T73Wd5VAPMI/AAAAAAAABcQ/meXausqaVAw/s1600/formacc-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-q1brjPYc7zA/T73Wd5VAPMI/AAAAAAAABcQ/meXausqaVAw/s400/formacc-12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Создаем представление&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Расставляем поля в нужном порядке. Сохраняем представление. Указываем на него в свойствах ранее созданного списка:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KTMDNvoBhJE/T73XWwO2p3I/AAAAAAAABcY/eELgW1Zxdzs/s1600/formacc-13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-KTMDNvoBhJE/T73XWwO2p3I/AAAAAAAABcY/eELgW1Zxdzs/s400/formacc-13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Устанавливаем свойства списка&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;На сей раз результат гораздо лучше:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AyCSs30lNWw/T73YBdEYcFI/AAAAAAAABcg/3yPyarWjEY8/s1600/formacc-14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-AyCSs30lNWw/T73YBdEYcFI/AAAAAAAABcg/3yPyarWjEY8/s400/formacc-14.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;В результате!&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Аналогично должны выглядеть формы для добавления категорий расходов и доходов.&lt;br /&gt;&lt;br /&gt;Пока мы здесь с вами пытаемся свести дебет с кредитом, технологии неумолимо развиваются. И даже если вы еще не стали пользователем современного модного гаджета, почитав &lt;a href="http://www.planshetoff.com/" title="обзоры планшетов"&gt;обзоры планшетов&lt;/a&gt; можете приобрести один из них. Будет ли это устройство от Samsung или новенький iPad - решать вам!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-3297570174267087303?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base_24.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-sb5cpJxCavY/T73IsVI4hNI/AAAAAAAABbE/GLmAkOFl7rs/s72-c/formacc-1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-144137375292847316</guid><pubDate>Wed, 23 May 2012 17:12:00 +0000</pubDate><atom:updated>2012-05-23T21:12:25.476+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Формы для добавления данных</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;В предыдущей статье была создана основа будущей базы данных - таблицы. Пока они пусты, но это поправимо. Заполнять таблицы можно напрямую, открыв любую из них. Такой способ неэффективен и даже несколько опасен. Опасен он тем, что по неосторожности можно удалить какую-нибудь запись, а то и все. Неэффективность же заключается в том, что приходится заполнять связанные поля числами, обозначающими то или иное текстовое значение. Например, те же &lt;a href="http://spining.kiev.ua/" title="рыбацкие снасти"&gt;рыбацкие снасти&lt;/a&gt; будут идти под идентификатором 25, но чтобы это узнать необходимо подглядеть в соответствующем справочнике. Поэтому процедуру заполнения таблиц лучше переложить на плечи форм.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Начнем с самой простой формы - добавление валюты. Переходим на вкладку "Формы" и выбираем в "Задачах" - "Использовать мастер для создания формы...".&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KcnV3F4qfkI/T7zSv1kIXRI/AAAAAAAABaM/xiM4R323lbI/s1600/form_step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-KcnV3F4qfkI/T7zSv1kIXRI/AAAAAAAABaM/xiM4R323lbI/s400/form_step1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Выбор поля&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Создадим первую форму для добавления валют в соответствующую таблицу (listcurr). В этой форме будет всего одно поле - для добавления наименования валюты. Для изменения позднее создадим другую форму.&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1JTq2aUg7DI/T7zSx1mY2GI/AAAAAAAABaU/vnV3YAXHQXM/s1600/form_step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-1JTq2aUg7DI/T7zSx1mY2GI/AAAAAAAABaU/vnV3YAXHQXM/s400/form_step2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Установка субформы&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Субформы здесь не&amp;nbsp;предвидится, так наша форма - самая простейшая и никаких дополнений к ней не нужно.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QgXLxmx5JCs/T7zSzoyJXsI/AAAAAAAABac/TnmguakzYh8/s1600/form_step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-QgXLxmx5JCs/T7zSzoyJXsI/AAAAAAAABac/TnmguakzYh8/s400/form_step3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Расположить элементы управления&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Элементы для управления, а точнее единственное поле с&amp;nbsp;единственной&amp;nbsp;же подписью можно расположить как заблагорассудиться.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VmXBXtmEo04/T7zS1RD1CcI/AAAAAAAABak/GwfisERkPoQ/s1600/form_step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-VmXBXtmEo04/T7zS1RD1CcI/AAAAAAAABak/GwfisERkPoQ/s400/form_step4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Установка источника данных&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;На этом шаге указываем, что форма будет использоваться только для ввода новых значений, а существующие данные при этом отображаться не будут.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mgPomk4VUJw/T7zS3GBmQiI/AAAAAAAABas/Bo0tDSwtCVI/s1600/form_step5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-mgPomk4VUJw/T7zS3GBmQiI/AAAAAAAABas/Bo0tDSwtCVI/s400/form_step5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Применить стили&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;И в конце работы мастера устанавливаем предпочитаемую расцветку, которую в последствии можно изменить. Затем нас попросят ввести имя новой формы - указываем и смело переходим к модификации. В итоге должно получиться нечто такое:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gJJKLgZ0EVs/T70X2rDGaoI/AAAAAAAABa4/nFng1Olc3es/s1600/form_total.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-gJJKLgZ0EVs/T70X2rDGaoI/AAAAAAAABa4/nFng1Olc3es/s400/form_total.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Формы для добавления статей расходов и доходов строятся точно также.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-144137375292847316?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base_23.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-KcnV3F4qfkI/T7zSv1kIXRI/AAAAAAAABaM/xiM4R323lbI/s72-c/form_step1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-6380799258602821366</guid><pubDate>Wed, 23 May 2012 11:19:00 +0000</pubDate><atom:updated>2012-05-23T15:19:00.831+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">LibreOffice</category><title>База данных с помощью LibreOffice Base. Первые наброски</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Просмотрев несколько программ для ведения домашнего бюджета, убедился, что ни одна из них меня не привлекает, установил LibreOffice Base и начал конструировать свой "троллейбус" самостоятельно. Здесь же буду делиться приобретенным опытом, ибо подходящей русскоязычной документации в интернете очень мало - может кому и пригодится. Вообщем читайте, подсказывайте и критикуйте.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Первым делом при создании базы данных необходимо представить, какую информацию придется обрабатывать с самого начала, а какую можно добавить впоследствии. Опираясь на это, мы делаем таблицы - основу нашей БД. Исходя из просмотренного программного обеспечения можно вывести, что для домашнего бюджета основными таблицами будут: журнал расходов и журнал доходов. Вся остальная конструкция возводится вокруг них.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-cnI_EYAI9CQ/T7zCuPr6LgI/AAAAAAAABZI/mMrdgN0E0_Y/s1600/jourloss.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-cnI_EYAI9CQ/T7zCuPr6LgI/AAAAAAAABZI/mMrdgN0E0_Y/s400/jourloss.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Журнал расходов (jourloss)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-z2fhdc9IzWk/T7zC3bOXgbI/AAAAAAAABZQ/_hxr1jgJK_8/s1600/jourprof.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-z2fhdc9IzWk/T7zC3bOXgbI/AAAAAAAABZQ/_hxr1jgJK_8/s400/jourprof.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Журнал доходов (jourprof)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Два последних поля в таблицах журналов - идентификаторы, по которым будет происходить разбивка на категории и счета. Причем категории в свою очередь разбиваются на статьи расходов/доходов, а при желании и статьи можно будет разбить на что-то еще. Важно понимать, что категории здесь - самая низшая (мелкая) степень разбивки. Например, категория "&lt;a href="http://www.montblanc.ru/" title="окна пвх"&gt;окна пвх&lt;/a&gt;" попадает под статью "ремонт", в свою очередь "ремонт" можно определить в больший раздел - "дом" и т.д. Тоже самое можно проделать и со счетами, но пока счета будут разделены только по валютам, да и это лишь потому, что так оформлено у других разработчиков. Значит пригодится.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BKu8Pk6JR-Q/T7zEegSBTHI/AAAAAAAABZg/Zaaswn4CxIQ/s1600/listlosscat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-BKu8Pk6JR-Q/T7zEegSBTHI/AAAAAAAABZg/Zaaswn4CxIQ/s400/listlosscat.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список категорий расходов (listlosscat)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-D2WAxVnWyZQ/T7zEsak4HNI/AAAAAAAABZo/Cwo4CuPEndM/s1600/listlosssect.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-D2WAxVnWyZQ/T7zEsak4HNI/AAAAAAAABZo/Cwo4CuPEndM/s400/listlosssect.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список статей расходов (listlosssect)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nrWHLCeSdSE/T7zFFAeHSyI/AAAAAAAABZw/K-bL-0Rx3CY/s1600/listacc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-nrWHLCeSdSE/T7zFFAeHSyI/AAAAAAAABZw/K-bL-0Rx3CY/s400/listacc.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список счетов (listacc)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-84FrM3a5mcU/T7zFQGgyTsI/AAAAAAAABZ4/ecV9P2hI-T8/s1600/listcurr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-84FrM3a5mcU/T7zFQGgyTsI/AAAAAAAABZ4/ecV9P2hI-T8/s400/listcurr.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Список валют (listcurr)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Списки категорий и статей доходов делаются по аналогии. Теперь остается лишь указать связанные поля (Сервис - Связи...):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zAWrlNwaDPA/T7zFdewy56I/AAAAAAAABaA/DzWTZLFQYq8/s1600/svyazi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-zAWrlNwaDPA/T7zFdewy56I/AAAAAAAABaA/DzWTZLFQYq8/s400/svyazi.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Все эти приготовления лучше выполнить без ошибок, назначив всем полям необходимые свойства (тип, автозаполнение, обязательность и т.д.), так как потом тяжело что-то изменить - придется уничтожать любые связанные с таблицей элементы.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-6380799258602821366?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/libreoffice-base.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-cnI_EYAI9CQ/T7zCuPr6LgI/AAAAAAAABZI/mMrdgN0E0_Y/s72-c/jourloss.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-1359299275499976906</guid><pubDate>Mon, 21 May 2012 17:34:00 +0000</pubDate><atom:updated>2012-05-21T21:34:32.529+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">игры</category><category domain="http://www.blogger.com/atom/ns#">google</category><title>Гуглоигры</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Увлекшись планированием не стоит забывать и о развлечениях. Довольно давно я не заглядывал в Интернет-магазин Chrome, а он уже успел безобразно расшириться подобно своему собрату для Android-смартфонов - Play Маркет. В основном это все теже Tower Defense, "подделки" под Angry Birds и ссылки на орды однообразных MMORPG. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Но есть и приятные исключения:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-m6N-ZAMgnG0/T7p06vbYFDI/AAAAAAAABYk/BA-psnw9MRA/s1600/screen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-m6N-ZAMgnG0/T7p06vbYFDI/AAAAAAAABYk/BA-psnw9MRA/s400/screen1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Battle of Wesnoth&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Battle of Wesnoth, пожалуй самая лучшая из стратегий для Linux. Кроме того Веснот - вселенная наполняющаяся многочисленными сценариями от пользователей, при этом они частично связаны между собой и представляют хронологию событий, происходящих в одноименном королевстве. Теперь вам не придется синхронизировать свои сохранения с помощью Dropbox, все в родном браузере.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tztKWGCE0kU/T7p4e_KIybI/AAAAAAAABYw/C7yz6sM7RDs/s1600/screen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-tztKWGCE0kU/T7p4e_KIybI/AAAAAAAABYw/C7yz6sM7RDs/s400/screen2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Cargo Bridge: Armor Games Edition&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Cargo Bridge - намного проще, чем Битва за Веснот. Все над чем здесь придется размышлять - лишь физическая модель моста, по которому должен пройти рыцарь и,&amp;nbsp;естественно&amp;nbsp;не упасть вниз. Для того чтобы игрок не заскучал, введен микроменеджмент - каждая деталь моста стоит определенную сумму. В целом Cairo Bridge напоминает XConstruction на Android.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y_-8rWyNwKo/T7p69SGKwnI/AAAAAAAABY8/3xgUFZybRIU/s1600/screen3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-y_-8rWyNwKo/T7p69SGKwnI/AAAAAAAABY8/3xgUFZybRIU/s400/screen3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;AirMech&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;AirMech, еще одна интересная игра, где пользователю предстоит отрабатывать роль трансформера, который превращается из робота в самолет и обратно. Для браузерки графика вполне хороша. Потестирую насчет скрытых платежей, и если их нет... то рекомендую! :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Основную резь в глазах вызывает сам магазин. Перевод, который невозможно прочесть во много раз хуже таких словосочетаний, как &lt;a href="http://foxmart.ua/sokovyzhimalki" title="купить соковыжималку киев"&gt;купить соковыжималку киев&lt;/a&gt; и прочие, что можно встретить в интернете. Видимо, Google не хватает переводчиков! У вас есть все шансы :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-1359299275499976906?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/blog-post_21.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-m6N-ZAMgnG0/T7p06vbYFDI/AAAAAAAABYk/BA-psnw9MRA/s72-c/screen1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-2008587393109755649</guid><pubDate>Mon, 21 May 2012 11:57:00 +0000</pubDate><atom:updated>2012-05-21T15:57:03.119+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">мысли</category><title>Домашний бюджет - у каждого троллейбус свой!</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Продолжая тему планирования своей деятельности нельзя не затронуть такой аспект, как анализ бюджета. Что, куда и зачем тратится? Редкий человек может точно ответить на этот вопрос, ибо проследить перемещение денег, как наличных, так и электронных бывает сложновато. А нужно ли подобное планирование? Зависит от самого человека.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Инструментов для ведения финансовых операций в среде Linux предостаточно: GnuCash, KMyMoney, Grisbi, HomeBank, Skrooge и т.д.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mdc3Jq4OCJY/T7osdpgkjLI/AAAAAAAABYI/3KB7MZIPnsA/s1600/grisbi-cvs-transactions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://4.bp.blogspot.com/-mdc3Jq4OCJY/T7osdpgkjLI/AAAAAAAABYI/3KB7MZIPnsA/s400/grisbi-cvs-transactions.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;i&gt;Grisby&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qgHt0paRBaw/T7osgXljHQI/AAAAAAAABYQ/NelZcERimDY/s1600/homebank.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://1.bp.blogspot.com/-qgHt0paRBaw/T7osgXljHQI/AAAAAAAABYQ/NelZcERimDY/s400/homebank.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;HomeBank&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ftsYkr4oFXk/T7oslJFqhDI/AAAAAAAABYY/kjYhd_-hPXc/s1600/skrooge_1.0.0_0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://3.bp.blogspot.com/-ftsYkr4oFXk/T7oslJFqhDI/AAAAAAAABYY/kjYhd_-hPXc/s400/skrooge_1.0.0_0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;Skrooge&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Это наиболее упрощенные и близкие домашнему пользователю. Еще есть веб-сервисы, но сейчас не о них, а о самом подходе вышеперечисленных систем. Ведь, как и большинство представителей свободного (да и несвободного тоже) программного обеспечения, они создавались в первую очередь для автора, а уже потом для конечных пользователей.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;В таком подходе есть и плюсы, и минусы. Плюс, конечно, в том, что автор скорее всего "на собственной шкуре" испытал и продолжает испытывать свой инструмент для ведения учета. Отсюда выливается и минус - в большинстве своем при использовании за бортом оказывается огромное количество функций, и, напротив, некоторых категорически не хватает. Например, большей вложенности категорий, или цен на товары в различных местах для последующего сравнения. Тут перед глазами встает Evernote с его метками и блокнотами.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Так что же делать пользователю, который хочет разделить незамысловатую метку "&lt;a href="http://foxmart.ua/utjugi" title="паровой утюг киев"&gt;паровой утюг VITEK киев&lt;/a&gt;" разделить на несколько частей? Например, выделить все утюги, которые он купил, или всю продукцию компании VITEK, или цены в Киеве наконец? Выход лишь один - создать свою базу данных и настраивать ее как заблагорассудится. Я же попробую что-нибудь с LibreOffice Base накрутить. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-2008587393109755649?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/blog-post.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-mdc3Jq4OCJY/T7osdpgkjLI/AAAAAAAABYI/3KB7MZIPnsA/s72-c/grisbi-cvs-transactions.png" height="72" width="72" /><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-6915861464355829342</guid><pubDate>Thu, 17 May 2012 19:15:00 +0000</pubDate><atom:updated>2012-05-17T23:15:38.188+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">полезное</category><category domain="http://www.blogger.com/atom/ns#">мысли</category><title>Натягиваем Evernote на GTD</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;На сегодняшний день мой &lt;b&gt;аккаунт в Evernote имеет такую структуру&lt;/b&gt;:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;блокноты&lt;/b&gt;: 01 Сегодня, 02 Скоро, 03 Когда-нибудь, 04 Завершено, Входящие, Достижения, Справочник;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;метки&lt;/b&gt; (точнее группы меток): Места, Проекты.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s1600/EverNote.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s1600/EverNote.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Такого набора хватает для решения всех задач. Кроме одной! Даты. &lt;b&gt;В Evernote, к сожалению, нельзя задать событию определенную дату.&lt;/b&gt; Изначально этот неприятный момент почти поставил крест на GTD в столь удобном веб-сервисе, но нашлось решение. Даже два:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- следуя заветам Дэвида Аллена, &lt;b&gt;создать 43 блокнота&lt;/b&gt; (или метки). Из них 12 на каждый последующий месяц и 31 - на каждый день соответственно. Слишком громоздко, можно ограничится блокнотом для завтрашнего дня, и еще одним для текущей недели.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- просто &lt;b&gt;подписывать даты в начале заголовка&lt;/b&gt; записи в формате "год/месяц/день". Такой формат позволяет легко отсортировать записи в хронологическом порядке, отделив при этом точные даты от абстрактных "когда-то".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Вот теперь инструмент идеально заточен для сортировки всех накопившихся дел. Кроме того &lt;b&gt;в ряд блокнотов добавлены "Достижения"&lt;/b&gt; (или "Цели"), это уже подсмотрено в другой системе планирования, но тем не менее идеально подходит для стимуляции к ведению учета дел. Эдакий журнал с квестами в какой-нибудь игре. К примеру, я бросаю курить (в который раз уже :) ), и здесь же отмечаю определенные точки: 1 день, 10 дней, 1 месяц, 100 дней, полгода, 1 год и т.д. Тоже самое можно отнести и к любым проектам как онлайн, так и в реальной жизни. Можете поставить цель изучить любую&amp;nbsp;&lt;a href="http://www.linux-info.ru/" title="ОС Линукс и все о ней"&gt;ОС Линукс и все о ней&lt;/a&gt;  или же напротив - Windows и забыть навсегда дорогу в мир Linux, свободно разговаривать на одном/двух/трех языках или хотя бы родной знать на отлично. Ставьте цели и добивайтесь их!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-6915861464355829342?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/evernote-gtd.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s72-c/EverNote.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-4225421377576669697</guid><pubDate>Tue, 15 May 2012 17:33:00 +0000</pubDate><atom:updated>2012-05-15T21:33:25.343+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">полезное</category><category domain="http://www.blogger.com/atom/ns#">мысли</category><title>Натягиваем GTD на Evernote</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Система &lt;b&gt;Getting Things Done от Дэвида Аллена&lt;/b&gt; предполагает запись всех своих умных и не очень мыслей на бумаге, а при наличии электронных средств хранения информации - на них. Средств под рукой предостаточно, да и &lt;b&gt;инструмент в виде Evernote&lt;/b&gt; уже выбран. Что же дальше? А дальше необходимо четко запомнить пять важнейших этапов обработки всей той каши, что скапливается в наших головах: сбор, обработка, организация, обзор, действия.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-eiYJRgPynOw/T7KRiu4ycbI/AAAAAAAABX0/9lkTWRplEPc/s1600/Russiangtddrawing1dc1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-eiYJRgPynOw/T7KRiu4ycbI/AAAAAAAABX0/9lkTWRplEPc/s400/Russiangtddrawing1dc1.jpg" width="307" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Со сбором Evernote справляется чудесно.&lt;/b&gt; С мобильного клиента быстро добавляются новые заметки, причем не только текстовые. Evernote легко подхватывает изображения с фотокамеры и звук с микрофона, так что ничто не ускользнет от вашего внимания. Все новые записи будут складироваться в определенном блокноте, назовем его "Входящие". Главное на этом этапе - не зацикливаться на содержимом заметок, да будет хаос!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Этап обработки&lt;/b&gt; тоже боле-менее ясен. Садимся, смотрим на то, что скопилось во "Входящем". То, что можно сделать сразу - делаем, что совершенно не нужно - удаляем, просто интересную информацию складируем в блокноте "Справочник", хорошие идеи - отправляем в блокнот "Когда-нибудь", ну а то, что придется распланировать - в блокнот "Скоро".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Далее идет &lt;b&gt;организация собранных и отсортированных заметок&lt;/b&gt;. И вот тут у каждого могут появиться свои варианты. Например, я выделил 6 блокнотов: Входящие, Справочник, 01 Сегодня, 02 Скоро, 03 Когда-нибудь, 04 Завершено. Здесь цифры нужны исключительно для сортировки. Также сделал две группы меток: Места - "@Дом", "@Интернет", "@Работа" и т.д.; и Проекты - "&lt;a href="http://www.webfactor.co/" title="создание веб сайтов"&gt;создание веб сайтов&lt;/a&gt;", "Твиттер", "Банальные заметки убунтовода", "Квартира" и т.д.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Этап, на котором производится обзор&lt;/b&gt;, тяжел для постоянного выполнения, особенно, когда дел скапливается очень много. Его суть сводится к проверке целостности всей системы. Поверхностный обзор должен проводится не менее раза в день, например, при планировании распорядка на завтра, а глубокая проверка всех элементов - хотя бы раз в неделю.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Действуйте!&lt;/b&gt; И следите, чтобы все ваше время не расходовалось на соблюдение правил GTD!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-4225421377576669697?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/gtd-evernote.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-eiYJRgPynOw/T7KRiu4ycbI/AAAAAAAABX0/9lkTWRplEPc/s72-c/Russiangtddrawing1dc1.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-4074165905566550867</guid><pubDate>Mon, 14 May 2012 17:32:00 +0000</pubDate><atom:updated>2012-05-14T21:32:23.810+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">полезное</category><category domain="http://www.blogger.com/atom/ns#">мысли</category><title>GTD, Evernote и Ubuntu</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Давно я не возвращался к теме &lt;b&gt;GTD (Getting Things Done, или простым языком - "доведение дел до завершения")&lt;/b&gt;, но череда праздников и неудачно расставленных выходных заставили вновь обратиться к системе планирования с одним-единственным вопросом. Как же заставить себя выполнять то, что задумывалось? Да даже не заставить, а хотя бы стимулировать на выполнение необходимых задач! Все таки в 21 веке живем как-никак и "стимуляторов" хватает.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s1600/EverNote.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s1600/EverNote.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Телефон, смартфон, коммуникатор - один из этих электронных помощников непременно живет в кармане искушенного современными технологиями пользователя. Но не каждый пользователь использует все возможности своего помощника, ограничиваясь лишь телефонными разговорами. Хотя на самом деле перед нами &lt;b&gt;идеальный инструмент GTD&lt;/b&gt;! Ведь что такое GTD? Это банальное упорядочивание своих мыслей и текущих дел! Для такого подойдет обычный блокнот, а в нашем случае &lt;b&gt;блокнот электронный - Evernote&lt;/b&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Конечно, Evernote, не самый удачный инструмент для планирования, есть и более функциональные, но он самый универсальный. Причем универсальный как в отношении поддерживаемых платформ, так и в настройке под свои потребности. С помощью набора блокнотов и меток можно выстроить любую структуру, которую в свою очередь можно "подглядеть" в другой, менее универсальной программе GTD. Блокноты используются как первичный элемент упорядочивания, а метки - для легкого поиска любых словосочетаний, например "&lt;a href="http://711.ua/aviaraspisanie-price" title="авиабилеты стоимость"&gt;авиабилеты стоимость&lt;/a&gt;", где любое из слов может быть отдельной меткой.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Итак, у нас имеется:&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;- два компьютера с Ubuntu;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;- нетбук опять же с Ubuntu;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;- смартфон Android.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;На все это необходимо установить Evernote-клиенты или просто добавить закладки на веб-версию в браузер. А также обдумать боле-менее подходящую систему планирования. Об этом совсем скоро!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-4074165905566550867?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/05/gtd-evernote-ubuntu.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Y1LwddP5diQ/T7E9UcaPvqI/AAAAAAAABXk/ct_1dq9bj80/s72-c/EverNote.jpg" height="72" width="72" /><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-136593929658499958</guid><pubDate>Mon, 30 Apr 2012 16:58:00 +0000</pubDate><atom:updated>2012-04-30T20:58:47.704+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">игры</category><category domain="http://www.blogger.com/atom/ns#">wine</category><title>World of Tanks на Ubuntu</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Давно уже на страницах блога не появлялась информация об играх, которые хоть и не предназначены для Ubuntu, но все таки запускаются на ней. На этот раз речь пойдет о довольно популярной многопользовательской игре World of Tanks, позволяющая игрокам с головой окунуться в мир танков, тактики и эпичных сражений.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XF2i2JchER8/T57Aj3nR_kI/AAAAAAAABXE/CpVyXNVt66c/s1600/logo1280_1024_ru.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-XF2i2JchER8/T57Aj3nR_kI/AAAAAAAABXE/CpVyXNVt66c/s400/logo1280_1024_ru.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;К сегодняшнему дню игра достигла версии 0.7.2, но кроме операционной системы Windows ни хочет ни кого признавать. Казалось бы выход есть - Wine, но в официальном каталоге игр, World of Tanks имеет статус "Bronze", что означает практически никакую играбельность. И пока одни копаются в настройках Wine, другие, а именно умельцы из ООО "Инфоникс" собрали свой архив со всеми необходимыми параметрами. Вот и он:&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://dl.dropbox.com/u/29069915/WoTFLIX_1.3.24_fs04.tar.gz"&gt;&lt;i&gt;&lt;b&gt;http://dl.dropbox.com/u/29069915/WoTFLIX_1.3.24_fs04.tar.gz&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Я выложил ее на Dropbox, так как на форуме Инфоникса были сообщения о битых ссылках, хотя все скачалось нормально.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;После скачивания архива ваши действия таковы:&lt;/div&gt;- распаковываем его в Домашнюю папку;&lt;br /&gt;- с официального сайта скачиваем установочный комплект World of Tanks;&lt;br /&gt;- с помощью Wine устанавливаем ее;&lt;br /&gt;- перемещаем папку "World_оf_Tanks" из "~/.wine/drive_c/Games" в "~/WoTFLIX/.wine/drive_c/Games".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KvD1lm2xnPo/T57EcbVQjlI/AAAAAAAABXQ/o5DPrrvv3iI/s1600/wotshotprohorovka013opt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-KvD1lm2xnPo/T57EcbVQjlI/AAAAAAAABXQ/o5DPrrvv3iI/s400/wotshotprohorovka013opt.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Теперь вы сможете запускать игру скриптами&amp;nbsp;"~/WoTFLIX/WoTLauncherIX" или&amp;nbsp;"~/WoTFLIX/WoTX1" (в отдельном X-сервере).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Проблемы с запуском и работой Windows-программ удел не только Linux-систем, но и самой Windows. Вот, к примеру, &lt;a href="http://www.1c-biz.ru/epf/72-code-not-found.html" title="ошибка печати"&gt;ошибка печати&lt;/a&gt; может возникать в 1С Предприятие 8. Конечно, это не обязательно проблемы операционной системы, но вспоминая переход с Windows XP на Windows 7 в пределах небольшой организации, почему-то хочется обвинить именно ее.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-136593929658499958?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/world-of-tanks-ubuntu.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XF2i2JchER8/T57Aj3nR_kI/AAAAAAAABXE/CpVyXNVt66c/s72-c/logo1280_1024_ru.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-5965368728412844894</guid><pubDate>Mon, 30 Apr 2012 16:03:00 +0000</pubDate><atom:updated>2012-04-30T20:03:49.210+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Индикатор с горизонтальной стрелкой. часть 3</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Виджет-индикатор приближается к логическому завершению. Переходим к&amp;nbsp;последнему шагу по работе со шкалой - нанесению рисок и текстовой информации. Индикатор предназначен для измерения любых данных, но лучше всего подходит для наглядного отображения процентов, будь-то нагрузка на процессор, оперативную память или даже объем занимаемого пространства на жестком диске, поэтому градуируем шкалу от 0 до 100.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;-- текст на шкале&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nXCenter+10, nYCenter-5, 'CPU', 'DejaVu Sans Condensed', 14, 0, 0, 0x555555, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--риски на шкале&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, 10 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(29+i*15, 27, 29+i*15, 40, 0x000000, 1, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, 9 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(36+i*15, 27, 36+i*15, 35, 0x000000, 1, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--цифры на шкале&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (29, 52, '0', 'DejaVu Sans Condensed', 12, 0, 1, 0x555555, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nXCenter+10, 52, '50', 'DejaVu Sans Condensed', 12, 0, 1, 0x555555, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nWidth-20, 52, '100', 'DejaVu Sans Condensed', 12, 0, 1, 0x555555, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SKpNxsp4jzQ/T560tb9Bb4I/AAAAAAAABWo/n-q7tZwXTVU/s1600/%D0%A2%D0%B5%D0%BA%D1%81%D1%82.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-SKpNxsp4jzQ/T560tb9Bb4I/AAAAAAAABWo/n-q7tZwXTVU/s400/%D0%A2%D0%B5%D0%BA%D1%81%D1%82.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Дальше рисуем самую основную часть - стрелку. Это делается в следующей последовательности: тень, черная основа, красная линия и линия к центру индикатора, имитирующая горизонтальную стрелку. Затем на нее накладывается градиент, придающий ощущение объема, как-будто стрелка уходит вглубь индикатора.&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;i&gt;--стрелка&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(29+fLineScale (150, 0, 100, nPerc)+2, 31, 29+fLineScale (150, 0, 100, nPerc)+2, nHeight-8, 0x000000, 0.3, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(29+fLineScale (150, 0, 100, nPerc), 30, 29+fLineScale (150, 0, 100, nPerc), nHeight-10, 0x000000, 1, 4)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(29+fLineScale (150, 0, 100, nPerc), 31, 29+fLineScale (150, 0, 100, nPerc), nHeight-10, 0xff0000, 1, 2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(29+fLineScale (150, 0, 100, nPerc), nHeight-10, nXCenter+10, nHeight-7, 0xff0000, 0.7, 2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (26, nHeight-11, nWidth-32, 5, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (26, nHeight-21, nWidth-15, nHeight-20)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0, fRGBtoARGB(0x000000, 0.1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.3, fRGBtoARGB(0x000000, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.5, fRGBtoARGB(0x000000, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.7, fRGBtoARGB(0x000000, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x000000, 0.1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-aeMlbnVqmrg/T56076AbBCI/AAAAAAAABWw/BbDnqzdV9sA/s1600/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-aeMlbnVqmrg/T56076AbBCI/AAAAAAAABWw/BbDnqzdV9sA/s400/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;И, наконец последний штрих - глянец, осветливший верхнюю часть индикатора.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--глянец&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, nWidth, nHeight, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (10, 10, 10, nHeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0xffffff, 0.4))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.3, fRGBtoARGB(0xffffff, 0.1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0xffffff, 0.0))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wqaGrzZJEK0/T561CsdwOII/AAAAAAAABW4/l9Iw54Qjue8/s1600/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-wqaGrzZJEK0/T561CsdwOII/AAAAAAAABW4/l9Iw54Qjue8/s400/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Все, вообщем-то, просто и понятно - в создании виджетов нет ничего сложного. Это как &lt;a href="http://indian-films.net/" title="индийские фильмы"&gt;индийские фильмы&lt;/a&gt;, где сюжеты очень похожи, но выглядят по-разному. Так и в Conky - с помощью казалось бы схожего кода можно получить совсем другой виджет, были бы знания, на которые можно опираться.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-5965368728412844894?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-3_30.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-SKpNxsp4jzQ/T560tb9Bb4I/AAAAAAAABWo/n-q7tZwXTVU/s72-c/%D0%A2%D0%B5%D0%BA%D1%81%D1%82.png" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-7482568325556643325</guid><pubDate>Mon, 30 Apr 2012 15:44:00 +0000</pubDate><atom:updated>2012-04-30T19:44:01.909+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Индикатор с горизонтальной стрелкой. часть 2</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Наконец-то закончилась суета с обновлением Ubuntu до версии 12.04, подключены обновленные репозитории, исследованы нововведения. Пора возвращаться к руководству, где последней статьей остается недоделанный индикатор с горизонтальной стрелкой. Приступим.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Так как мы представляем размеры будущего индикатора, то сразу же можем нарисовать его тень, при этом отступив немного от края:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--тень&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.3))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (13, 13, nWidth, nHeight, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3noMx4eix7w/T56wleZ0jqI/AAAAAAAABV8/qux5mqV8pDc/s1600/%D0%A2%D0%B5%D0%BD%D1%8C.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-3noMx4eix7w/T56wleZ0jqI/AAAAAAAABV8/qux5mqV8pDc/s400/%D0%A2%D0%B5%D0%BD%D1%8C.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Тень и корпус должны быть одинакового размера, поэтому чуть, сдвинув координаты вывода по вертикали и горизонтали, рисуем корпус нашего виджета. Он чем-то похож на корпус аналоговых часов, разве что форма прямоугольная.&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;--корпус&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, nWidth, nHeight, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (0, 0, 0, nHeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0x111111, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.5, fRGBtoARGB(0x666666, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x111111, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.8))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, nWidth, nHeight, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.3))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, nWidth, nHeight, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RwTDFCYNJwE/T56wsVZfMjI/AAAAAAAABWE/ucwwQXRQiec/s1600/%D0%9A%D0%BE%D1%80%D0%BF%D1%83%D1%81.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-RwTDFCYNJwE/T56wsVZfMjI/AAAAAAAABWE/ucwwQXRQiec/s400/%D0%9A%D0%BE%D1%80%D0%BF%D1%83%D1%81.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Делаем «рифленный» корпус, добавляя насечки:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--насечки на корпусе&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, nWidth/3-1 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(10+i*3, 11, 10+i*3, nHeight+10, 0x777777, 0.3, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-o8ZKH12lCrQ/T56wyKZFYWI/AAAAAAAABWM/DoTJlsmS4Ug/s1600/%D0%9D%D0%B0%D1%81%D0%B5%D1%87%D0%BA%D0%B8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-o8ZKH12lCrQ/T56wyKZFYWI/AAAAAAAABWM/DoTJlsmS4Ug/s400/%D0%9D%D0%B0%D1%81%D0%B5%D1%87%D0%BA%D0%B8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Также как и в статье про часы, следующий шаг - углубление, куда мы в последствии поместим шкалу:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--углубление под шкалу&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (20, 20, nWidth-20, nHeight-20, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (20, -15, 20, nHeight-20)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0, fRGBtoARGB(0xffffff, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.8, fRGBtoARGB(0x777777, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x555555, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (20, 20, nWidth-20, nHeight-20, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KBbTVR3Emjg/T56w3qPNeDI/AAAAAAAABWU/YJBqwnfFmks/s1600/%D0%A3%D0%B3%D0%BB%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-KBbTVR3Emjg/T56w3qPNeDI/AAAAAAAABWU/YJBqwnfFmks/s400/%D0%A3%D0%B3%D0%BB%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Шкала в данном индикаторе, а точнее в его реальной модели, представлена в виде слегка закругленной ленты, за которой скрывается основной механизм. Снизу должно оставаться место для стрелки индикатора.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--шкала&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (25, 25, nWidth-30, nHeight-30, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (26, 27, nWidth-32, nHeight-40, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (25, 20, nWidth-15, 20)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0, fRGBtoARGB(0xaaaaaa, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.2, fRGBtoARGB(0xeeeeee, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.5, fRGBtoARGB(0xffffff, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.8, fRGBtoARGB(0xeeeeee, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0xaaaaaa, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hHnHVkgW8cI/T56w_MezqfI/AAAAAAAABWc/5RXUpl-VlP0/s1600/%D0%A8%D0%BA%D0%B0%D0%BB%D0%B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-hHnHVkgW8cI/T56w_MezqfI/AAAAAAAABWc/5RXUpl-VlP0/s400/%D0%A8%D0%BA%D0%B0%D0%BB%D0%B0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Вот такой результат мы получили в ходе этой статьи.&amp;nbsp;Осталось совсем немного до того момента, когда очередной виджет будет готов. После этого надо будет вернутся к основным командам Conky, а то как-то я слишком увлекся Lua-скриптами.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;В интернете можно найти помощь не только по программному обеспечению и виртуальным услугам, но и вполне реальную службу по оказанию бытовых услуг на &lt;a href="http://goodmaster.pro/" title="http://goodmaster.pro/"&gt;http://goodmaster.pro/&lt;/a&gt;, так что ищите и обязательно найдете то, что нужно. Ведь для того и нужен интернет :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-7482568325556643325?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-2_30.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3noMx4eix7w/T56wleZ0jqI/AAAAAAAABV8/qux5mqV8pDc/s72-c/%D0%A2%D0%B5%D0%BD%D1%8C.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-4572782030382393423</guid><pubDate>Fri, 27 Apr 2012 17:31:00 +0000</pubDate><atom:updated>2012-04-27T21:35:34.391+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">обновление</category><title>С выходом Ubuntu 12.04!</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;Почти сутки назад вышла новая версия нашей любимой операционной системы - Ubuntu 12.04 Precise Pangolin. Панголин действительно выдался пунктуальным - вечером 26 апреля, как и было обещано, он вышел на просторы всемирной паутины дабы порадовать своим видом заждавшихся пользователей. И все было бы хорошо, если не было так печально.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-K6daHTPjBfw/T5rW7S861KI/AAAAAAAABVo/cRRyd4cJVyI/s1600/Ubuntu1204.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://2.bp.blogspot.com/-K6daHTPjBfw/T5rW7S861KI/AAAAAAAABVo/cRRyd4cJVyI/s400/Ubuntu1204.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;Не знаю как у вас, но у меня ни обновление, ни "голая" установка, не прошли гладко. В обоих случаях компьютер отказался загружаться после всех выполненных операций. Если вас постигла та же участь - вот небольшие рекомендации:&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;i&gt;Обновление нетбука Acer Aspire One D257 с Ubuntu 11.10 до Ubuntu 12.04&lt;/i&gt;&lt;/b&gt;. После загрузки всех необходимых пакетов и перезагрузки выдал "Check battery state... [OK]" и благополучно завис. Помогла загрузка в Safe Mode ("Shift" при загрузке) и выборе пункта "dpkg", который переустанавил все пакеты. Затем вылез очередной казус - не появилась вкладка с видео в Dash, что решилось установкой пакета "unity-lens-video" (через Synaptic, либо "sudo apt-get install unity-lens-video" в Терминале).&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;i&gt;Чистая установка Ubuntu 12.04&lt;/i&gt;&lt;/b&gt; также не принесла ничего хорошего. После всех операций и перезагрузки монитор застелил черный экран, который не хотел реагировать ни на какие манипуляции. Выход тоже прост - загрузка Safe Mode, выбор пункта "Resume" (хотя по идее он не должен был ничего сделать), затем установка драйверов видеокарты. У меня nVidia, как там на ATI знают только их владельцы.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;Не знаю, может руки стали кривее за это время, но Ubuntu никак не хочет становиться дружелюбней и это печально. Любой начинающий пользователь просто бы ушел на другой дистрибутив, причем скорее всего это была бы Windows. Это для нас, знающих, что любой "косяк" можно исправить, такие мелочи незаметны, а для новичков аналогичные ситуации станут непреодолимым препятствием...&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;Как бы то не было, еще раз поздравляю всех с выходом новенькой Ubuntu 12.04 Precise Pangolin! И пусть вам не потребуется &lt;a href="http://ru.eihseba.com/distancionnoe-obuchenie/internet/" title="дистанционное обучение через интернет"&gt;&lt;b&gt;&lt;i&gt;дистанционное обучение через интернет&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, хотя многим моим знакомым оно бы не помешало :) Вчерашнее обновление в очередной раз меня убедило использовать на основных машинах LTS-версии, так что скорее всего со следующим обновлением я вас буду поздравлять заочно.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-4572782030382393423?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/ubuntu-1204.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-K6daHTPjBfw/T5rW7S861KI/AAAAAAAABVo/cRRyd4cJVyI/s72-c/Ubuntu1204.png" height="72" width="72" /><thr:total>15</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-4651462166129351625</guid><pubDate>Thu, 26 Apr 2012 16:30:00 +0000</pubDate><atom:updated>2012-04-30T18:17:55.807+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Индикатор с горизонтальной стрелкой. часть 1</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Продолжим рисование “красивых” виджетов с индикаторов отображающих нагрузку на процессор и память. На этот раз мы не будем использовать прогресс-бар, а обратим внимание на индикаторы существующие в реальной жизни. Вариантов очень много, но самый простой - индикатор с горизонтальной стрелкой, которые устанавливались в различную аудиоаппаратуру.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NHJNXkWAoDo/T5l2vWZYVCI/AAAAAAAABVc/dzkrBnDDf-s/s1600/LinearIndicator.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-NHJNXkWAoDo/T5l2vWZYVCI/AAAAAAAABVc/dzkrBnDDf-s/s400/LinearIndicator.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Начинаем с подготовки, &lt;b&gt;&lt;i&gt;текст .conkyrc&lt;/i&gt;&lt;/b&gt;:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title WidgetAnalogIndicator&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type panel&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment middle_right&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 200 100&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_load ~/LuaScript.lua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_draw_hook_pre startlua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Далее создаем набросок &lt;i&gt;&lt;b&gt;LuaScript.lua&lt;/b&gt;&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;require 'cairo'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function conky_startlua()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if conky_window == nil then return end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cr = cairo_create(cs)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nWidth = conky_window.width-22&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nHeight = conky_window.height-22&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCenter = nWidth/2&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCenter = nHeight-15&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nRadius = 70&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nPerc = tonumber (conky_parse('${cpu cpu0}'))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--аналоговый индикатор&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_destroy(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRGBtoARGB (nColor, nAlpha)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return ((nColor / 0x10000) % 0x100) / 255., ((nColor / 0x100) % 0x100) / 255., (nColor % 0x100) / 255., nAlpha&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fDrawTextCenter (nXCenter, nYCenter, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local extents = cairo_text_extents_t:create()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_font_size (cr, sFontSize)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_text_extents (cr, sText, extents)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nXSpace = nXCenter-(extents.width/2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nYSpace = nYCenter&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to (cr, nXSpace, nYSpace)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, nRotate*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_show_text(cr, sText)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, (0-nRotate)*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, nColor, nAlpha, nWidthLine)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, nWidthLine)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXoCoord, nYoCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRoundRect (nXCoord, nYCoord, nWidth, nHeight, nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXCoord+nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth-nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nRadius, nRadius, math.rad(270), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth, nYCoord+nHeight-nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(0), math.rad(90))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nRadius, nYCoord+nHeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(90), math.rad(180))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord+nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nRadius, nRadius, math.rad(180), math.rad(270))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fLineScale (nScaleLength, nScaleMin, nScaleMax, nValueScale)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;lt; nScaleMin then nValueScale = nScaleMin end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;gt; nScaleMax then nValueScale = nScaleMax end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsScaleLength = nScaleMax - nScaleMin&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nDivScale = nScaleLength/nAbsScaleLength&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsValueScale = (nValueScale - nScaleMin) * nDivScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale == nScaleMax then nAbsValueScale = nScaleLength end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return nAbsValueScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Сюда вошли почти все полезные функции, которые обсуждались ранее:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;function fRGBtoARGB&lt;/b&gt;&lt;/i&gt; - для работы с цветом;&lt;br /&gt;&lt;i&gt;&lt;b&gt;function fDrawTextCenter&lt;/b&gt;&lt;/i&gt; - для нанесения цифр на шкалу;&lt;br /&gt;&lt;i&gt;&lt;b&gt;function fLine&lt;/b&gt;&lt;/i&gt; - для отрисовки шкалы и стрелки;&lt;br /&gt;&lt;b&gt;&lt;i&gt;function fRoundRec&lt;/i&gt;&lt;/b&gt;t - для создания корпуса индикатора;&lt;br /&gt;&lt;i&gt;&lt;b&gt;function fLineScale&lt;/b&gt;&lt;/i&gt; - для расчета значения по шкале.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Остальной код будет написан после строки “--аналоговый индикатор”, он будет похож на тот, что использовался при создании часов, как составом, так и конструкцией. Разница лишь в том, что предыдущий виджет был круглым, а этот - прямоугольный. В остальном все точно также.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Вот чем только не занимаются и о чем только не пишут люди в сети: я например, пишу про Conky, &lt;a href="http://www.uk-pravo.ru/liquidation/" title="тут ликвидация ооо с нулевым балансом"&gt;тут ликвидация ооо с нулевым балансом&lt;/a&gt;, так еще что-то... В интернете можно найти все, что угодно, лишь бы знать - что ищешь. Успехов в ваших поисках!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-4651462166129351625?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-1_26.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-NHJNXkWAoDo/T5l2vWZYVCI/AAAAAAAABVc/dzkrBnDDf-s/s72-c/LinearIndicator.png" height="72" width="72" /><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-3019895632042199462</guid><pubDate>Wed, 25 Apr 2012 11:52:00 +0000</pubDate><atom:updated>2012-04-25T15:52:41.868+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Аналоговые часы. часть 3</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;В двух предыдущих статьях мы нарисовали подложку для будущих часов. Некоторые ее элементы можно убрать, другие покрасить, но сейчас мы добавим то, без чего не могут обойтись любые часы, если, конечно, они не цифровые. Стрелки.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CJUz93Hg7zg/T5fglCFwJLI/AAAAAAAABVI/H0bLcwDqyzc/s1600/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-CJUz93Hg7zg/T5fglCFwJLI/AAAAAAAABVI/H0bLcwDqyzc/s400/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Они рисуются следующим образом:&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;--часовая стрелка&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nHour*30+nMinute/2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-55)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-55)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-5*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-5*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord+1, nYoCoord+1, nXCoord+2, nYCoord+2, 0x000000, 0.3, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXoCoord, nYoCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nHour*30+nMinute/2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-56)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-56)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-4*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-4*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0x555555, 1, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--минутная стрелка&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nMinute*6)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-45)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-45)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-5*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-5*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord+1, nYoCoord+1, nXCoord+2, nYCoord+2, 0x000000, 0.3, 4)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 4)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXoCoord, nYoCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nMinute*6)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-46)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-46)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-4*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-4*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0x555555, 1, 2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--секундная стрелка&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nSecond*6)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-35)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-35)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-10*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-10*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord+1, nYoCoord+1, nXCoord+2, nYCoord+2, 0x000000, 0.3, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXoCoord, nYoCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(270+nSecond*6)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter+(nRadius-36)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter+(nRadius-36)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter-9*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter-9*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0xff0000, 1, 1)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;nTheta - это градус, на который должна быть повернута стрелка в данный момент времени, далее идет расчет конечных (nXCoord и nYCoord) и начальных (nXoCoord и nYoCoord)&amp;nbsp;координат, через которые пройдет линия&amp;nbsp;соответствующей&amp;nbsp;ширины. Вместо линий можно нарисовать более сложные стрелки, но это уже на ваше усмотрение.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;И, в качестве последнего штриха, добавим ”глянец”, немного высветлив верхнюю часть часов:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--глянец&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_radial (nXCenter, nYCenter-50, 0, nXCenter, nYCenter-50, nRadius+55)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0xffffff, 0.4))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.3, fRGBtoARGB(0xffffff, 0.1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0xffffff, 0.0))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xUs7SJKs2IY/T5fg19eGmmI/AAAAAAAABVQ/EaJ7XxdsTnw/s1600/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-xUs7SJKs2IY/T5fg19eGmmI/AAAAAAAABVQ/EaJ7XxdsTnw/s400/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Рисовать с помощью Lua+Cairo просто и очень интересно. Этот процесс аналогичен созданию рисунков в векторных редакторах вроде Inkscape или LibreOffice Draw. Те же инструменты: фигуры, заливка, градиент, текст, только вместо пера строчки &amp;nbsp;кода и листок с набросками.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Постепенно конфигурации Conky развиваются во все более сложные конструкции, точно также, как и наши дети. Тем же кто только собирается их завести можно ознакомится со статьей &lt;a href="http://www.frisoclub.ru/pervomamochki/news_date_514/" title="ребенок 5 месяцев развитие здесь"&gt;ребенок 5 месяцев развитие здесь&lt;/a&gt;, нужно быть готовым ко всему. Да уж, "коньки" "коньками", а про детей не стоит забывать, да они и не дадут этого сделать :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-3019895632042199462?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-3.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-CJUz93Hg7zg/T5fglCFwJLI/AAAAAAAABVI/H0bLcwDqyzc/s72-c/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B8.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-5062235440105328042</guid><pubDate>Wed, 25 Apr 2012 11:20:00 +0000</pubDate><atom:updated>2012-05-16T08:34:09.270+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Аналоговые часы. часть 2</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Что нужно для хорошего виджета? Объем и достаточное количество мелких деталей, которые избавят от “плоскости” изображения.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Объем предмета начинается с тени:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--тень&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.3))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter+1, nYCenter+1, nRadius, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-CF0T6qwlKMw/T5fYYoB6-yI/AAAAAAAABUE/MOxw4tbklHE/s1600/%D0%A2%D0%B5%D0%BD%D1%8C.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-CF0T6qwlKMw/T5fYYoB6-yI/AAAAAAAABUE/MOxw4tbklHE/s400/%D0%A2%D0%B5%D0%BD%D1%8C.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Следующим шагом рисуем сам корпус и с помощь градиента придаем ему объемность:&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;--корпус&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_radial (nXCenter, nYCenter, 0, nXCenter, nYCenter, nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0x666666, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.6, fRGBtoARGB(0x555555, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x111111, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 0.8))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.3))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6Qe_KXO91Bs/T5fYln9fnII/AAAAAAAABUM/t-t60hXPovo/s1600/%D0%9A%D0%BE%D1%80%D0%BF%D1%83%D1%81.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-6Qe_KXO91Bs/T5fYln9fnII/AAAAAAAABUM/t-t60hXPovo/s400/%D0%9A%D0%BE%D1%80%D0%BF%D1%83%D1%81.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Делаем углублением под циферблат, при этом смещаем градиент так, как если бы на него снизу падал свет:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--углубление под циферблат&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius-25, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_radial (nXCenter, nYCenter-25, 0, nXCenter, nYCenter-25, nRadius-25)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0xffffff, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.8, fRGBtoARGB(0x777777, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x555555, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius-25, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5D-ArM4aW8E/T5fY4EPz1NI/AAAAAAAABUU/8L76ByiGr2E/s1600/%D0%A3%D0%B3%D0%BB%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-5D-ArM4aW8E/T5fY4EPz1NI/AAAAAAAABUU/8L76ByiGr2E/s400/%D0%A3%D0%B3%D0%BB%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Добавляем насечку на корпус, так мы придадим столь необходимые мелкие детали:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--насечка на корпусе&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, 180 do&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(i*2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter + (nRadius)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter + (nRadius)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter + (nRadius-25)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter + (nRadius-25)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0x777777, 0.3, 1)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-adfFe9ooURs/T5fZpjOq8rI/AAAAAAAABUk/Hio20Bl7XD4/s1600/%D0%9D%D0%B0%D1%81%D0%B5%D1%87%D0%BA%D0%B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-adfFe9ooURs/T5fZpjOq8rI/AAAAAAAABUk/Hio20Bl7XD4/s400/%D0%9D%D0%B0%D1%81%D0%B5%D1%87%D0%BA%D0%B0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Помещаем в полученное углубление циферблат. Он также не будет кристально белым, с помощь градиента затемняем его к краю:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--циферблат&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_new_sub_path(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCenter, nYCenter, nRadius-31, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_radial (nXCenter, nYCenter, 0, nXCenter, nYCenter, nRadius-5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0xffffff, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.4, fRGBtoARGB(0xeeeeee, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0xcccccc, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-x1t__5r-nhQ/T5fZSR3TQ4I/AAAAAAAABUc/v9RD9cYwr00/s1600/%D0%A6%D0%B8%D1%84%D0%B5%D1%80%D0%B1%D0%BB%D0%B0%D1%82.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-x1t__5r-nhQ/T5fZSR3TQ4I/AAAAAAAABUc/v9RD9cYwr00/s400/%D0%A6%D0%B8%D1%84%D0%B5%D1%80%D0%B1%D0%BB%D0%B0%D1%82.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Наносим риски на циферблат:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--риски на циферблате&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, 12 do&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(i*30)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter + (nRadius-40)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter + (nRadius-40)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter + (nRadius-32)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter + (nRadius-32)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0x000000, 1, 2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0, 60 do&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(i*6)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter + (nRadius-37)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter + (nRadius-37)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXoCoord = nXCenter + (nRadius-33)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYoCoord = nYCenter + (nRadius-33)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, 0x000000, 1, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-bnz6ZnXRsH0/T5faCcGMfHI/AAAAAAAABUs/Oh3Bg1UmhXU/s1600/%D0%A0%D0%B8%D1%81%D0%BA%D0%B8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-bnz6ZnXRsH0/T5faCcGMfHI/AAAAAAAABUs/Oh3Bg1UmhXU/s400/%D0%A0%D0%B8%D1%81%D0%BA%D0%B8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Так как одних рисок бывает недостаточно, рисуем цифры на самом корпусе:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--цифры на корпусе&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 1, 12 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(i*30)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter + (nRadius-12)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter - (nRadius-12)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if i==12 then nXCoord=nXCoord-3 end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nXCoord+1, nYCoord+6, i, 'DejaVu Sans Condensed', 14, 0, 1, 0x000000, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nXCoord, nYCoord+5, i, 'DejaVu Sans Condensed', 14, 0, 1, 0xffffff, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Zdv5shJGT34/T5faSx4-ajI/AAAAAAAABU0/9i9-ZPBSy30/s1600/%D0%A6%D0%B8%D1%84%D1%80%D1%8B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-Zdv5shJGT34/T5faSx4-ajI/AAAAAAAABU0/9i9-ZPBSy30/s400/%D0%A6%D0%B8%D1%84%D1%80%D1%8B.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Добавляем еще больше мелких деталей - рисуем риски на корпусе, а на циферблат наносим надпись “CONKY”:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;--риски на корпусе&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 1, 12 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nTheta = math.rad(i*30+15)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nXCoord = nXCenter + (nRadius-12)*math.sin(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nYCoord = nYCenter - (nRadius-12)*math.cos(nTheta)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if i==12 then nXCoord=nXCoord-3 end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x000000, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+1, nYCoord+1, 1, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord, nYCoord, 1, math.rad(0), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;-- текст на циферблате&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (nXCenter, nYCenter-20, 'CONKY', 'DejaVu Sans Condensed', 14, 0, 0, 0x555555, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qTWKzPYpjUE/T5faiC-br3I/AAAAAAAABU8/P77wEHY5pHs/s1600/%D0%9D%D0%B0%D0%B4%D0%BF%D0%B8%D1%81%D1%8C.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-qTWKzPYpjUE/T5faiC-br3I/AAAAAAAABU8/P77wEHY5pHs/s400/%D0%9D%D0%B0%D0%B4%D0%BF%D0%B8%D1%81%D1%8C.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Играясь с градиентами можно усилить объем, а меняя цвета - раскрасить часы в любой цвет. Это у меня тяга к черно-белому :) При сильном желании и упорстве с помощью связки Lua и Cairo можно нарисовать хоть автомобиль, а уж раскрасить готовые часы может кто угодно.&lt;br /&gt;Осталась заключительная часть - отрисовка стрелок, не переключайтесь!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-5062235440105328042?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-2.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-CF0T6qwlKMw/T5fYYoB6-yI/AAAAAAAABUE/MOxw4tbklHE/s72-c/%D0%A2%D0%B5%D0%BD%D1%8C.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-2825395252154709461</guid><pubDate>Wed, 25 Apr 2012 10:43:00 +0000</pubDate><atom:updated>2012-04-25T14:46:41.951+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Аналоговые часы. часть 1</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;К этому моменту мы научились создавать виджеты с выводом любых данных, как с использованием возможностей системного монитора, так и без них. Это довольно скучный и однообразный процесс. Чтобы внести что-то новое в творческий процесс разберем создание более сложного экземпляра - аналоговых часов.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6wbsvGT3Xiw/T5fNL2Xs4JI/AAAAAAAABT4/5DN_MYkJepw/s1600/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-6wbsvGT3Xiw/T5fNL2Xs4JI/AAAAAAAABT4/5DN_MYkJepw/s400/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;В первую очередь создаем &lt;b&gt;&lt;i&gt;файл .conkyrc:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title WidgetAnalogClock&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type panel&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment middle_right&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 200 200&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_load ~/LuaScript.lua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_draw_hook_pre startlua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Следующим шагом будет &lt;b&gt;&lt;i&gt;заготовка Lua-скрипта:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;require 'cairo'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function conky_startlua()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if conky_window == nil then return end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cr = cairo_create(cs)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nXCenter = conky_window.width/2&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nYCenter = conky_window.height/2&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nRadius = conky_window.width/2 - 10&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nSecond = tonumber(os.date('%S'))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nMinute = tonumber(os.date('%M'))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nHour = tonumber(os.date('%I'))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nHour == 12 then nHour=0 end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;--аналоговые часы&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRGBtoARGB (nColor, nAlpha)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return ((nColor / 0x10000) % 0x100) / 255., ((nColor / 0x100) % 0x100) / 255., (nColor % 0x100) / 255., nAlpha&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fDrawTextCenter (nXCenter, nYCenter, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local extents = cairo_text_extents_t:create()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_font_size (cr, sFontSize)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_text_extents (cr, sText, extents)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nXSpace = nXCenter-(extents.width/2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nYSpace = nYCenter&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to (cr, nXSpace, nYSpace)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, nRotate*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_show_text(cr, sText)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, (0-nRotate)*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, nColor, nAlpha, nWidthLine)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, nWidthLine)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXoCoord, nYoCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Здесь, помимо привычных функций &lt;i&gt;fRGBtoARGB&lt;/i&gt; и &lt;i&gt;fDrawTextCenter&lt;/i&gt;, добавилась &lt;i&gt;function fLine(nXoCoord, nYoCoord, nXCoord, nYCoord, nColor, nAlpha, nWidthLine)&lt;/i&gt;, которая рисует обыкновенную линию с параметрами:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nXoCoord, nYoCoord&lt;/b&gt;&lt;/i&gt; - координаты начала линии;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nXCoord, nYCoord&lt;/b&gt;&lt;/i&gt; - координаты конца линии;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nColor&lt;/b&gt;&lt;/i&gt; - цвет линии;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nAlpha&lt;/b&gt;&lt;/i&gt; - прозрачность;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nWidthLine&lt;/b&gt;&lt;/i&gt; - толщина линии.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Она нам потребовалась в связи с большим количеством линий, а код должен быть краток и лаконичен.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Кроме того в заготовке задаются первоначальные параметры для часов:&lt;/div&gt;&lt;b&gt;&lt;i&gt;nXCenter, nYCenter&lt;/i&gt;&lt;/b&gt; - координаты центра, берется делением ширины и высоты Conky пополам;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nRadius&lt;/b&gt;&lt;/i&gt; - радиус часов, берется за половину ширины Conky, минус 10 пикселей на отступ от края;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nSecond&lt;/b&gt;&lt;/i&gt; - секунды;&lt;br /&gt;&lt;i&gt;&lt;b&gt;nMinute&lt;/b&gt;&lt;/i&gt; - часы;&lt;br /&gt;&lt;b&gt;&lt;i&gt;nHour&lt;/i&gt;&lt;/b&gt; - минуты.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Весь остальной код будет добавляться после строки “--аналоговые часы”. С помощью “--” в Lua можно добавлять комментарии, чтобы потом не заблудиться в тексте. А чтобы не заблудиться среди средств виртуализации почитайте о &lt;a href="http://www.vmstart.ru/tso-kalkulyator/359-hyper-v-3" title="hyper v 3 virtual machine"&gt;&lt;b&gt;&lt;i&gt;hyper v 3 virtual machine&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, всегда полезно узнать что-то новое и необязательно это должны быть Conky/&lt;br /&gt;Совсем скоро опубликую вторую часть, так что не отходите далеко от монитора! :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-2825395252154709461?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-1.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-6wbsvGT3Xiw/T5fNL2Xs4JI/AAAAAAAABT4/5DN_MYkJepw/s72-c/%D0%93%D0%BB%D1%8F%D0%BD%D0%B5%D1%86.png" height="72" width="72" /><thr:total>13</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-6274418995953726745</guid><pubDate>Tue, 24 Apr 2012 17:27:00 +0000</pubDate><atom:updated>2012-04-24T21:36:15.189+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Руководство по Conky v.0.4</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Наконец-то два дня верстки закончены. Добавилось всего 30 страниц, но объем, накопленный за две недели, очень тяжело обработать "за раз". Поэтому в очередной раз планы меняются :) Чтобы не заставлять ждать тех, кто действительно интересуется Conky и судьбой этого руководства, буду выкладывать материалы, накопившиеся за день, "ночные сборки".&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ce8N0667sYU/T5bdEMXHLbI/AAAAAAAABTw/yNO_IkyB_yI/s1600/Conky.v.0.4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-Ce8N0667sYU/T5bdEMXHLbI/AAAAAAAABTw/yNO_IkyB_yI/s400/Conky.v.0.4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bit.ly/JDwMij" target="_blank"&gt;&lt;i&gt;&lt;b&gt;Скачать руководство по Conky&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;На панели слева разместятся еще две ссылки. Это будет полностью проверенная версия и, по соседству с ней, ежедневная/ночная. Таким образом обновления будут выходить чаще и на проверку будет больше времени. Конечно, каждый день скачивать бессмысленно, ибо нового прибавляется не так уж и много. Хотя кто его знает, как пойдет.&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Из старых планов остаются:&lt;br /&gt;&lt;br /&gt;- оформить вменяемую обложку;&lt;br /&gt;- сделать внутреннее содержание;&lt;br /&gt;- добавить предисловие;&lt;br /&gt;- проверка выполнения условий;&lt;br /&gt;- сохранение позиций Conky.&lt;br /&gt;&lt;br /&gt;Из нового:&lt;br /&gt;&lt;br /&gt;- аналоговые часы (они уже практически сделаны);&lt;br /&gt;- красивые виджеты, т.е. полностью отрисованные, а не прямоугольные таблички;&lt;br /&gt;- получение данных с датчиков;&lt;br /&gt;- добавить примеры в архив с руководством.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;На этом пока все. Надеюсь вам удастся почерпнуть что-то новое из Руководства по Conky, если, конечно, вы именно это и искали, а не забрели на сайт, чтобы узнать &lt;a href="http://refskan.com/" title="рейтинг хостинг провайдеров и отзывы"&gt;рейтинг хостинг провайдеров и отзывы&lt;/a&gt;, который становится все актуальней. Сайтов уже столько, что как бы не запутался паук во всемирной паутине :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ждите ночных сборок! До встречи!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-6274418995953726745?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conky-v04.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Ce8N0667sYU/T5bdEMXHLbI/AAAAAAAABTw/yNO_IkyB_yI/s72-c/Conky.v.0.4.png" height="72" width="72" /><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-4109644721476347449</guid><pubDate>Mon, 23 Apr 2012 08:08:00 +0000</pubDate><atom:updated>2012-04-24T14:29:36.823+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Виджет аккумуляторной батареи</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Для виджета, отображающего заряд аккумуляторной батареи мы будем использовать методы из предыдущих глав, а именно:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- прогресс-бар (виджет файловой системы);&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- пороговые значение (виджет беспроводной сети);&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- цифровая индикация (виджет состояния сети).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-k8G6Jn69Oq8/T5UNjJt12ZI/AAAAAAAABTo/I2X0oXiZun8/s1600/WidgetBattery.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-k8G6Jn69Oq8/T5UNjJt12ZI/AAAAAAAABTo/I2X0oXiZun8/s400/WidgetBattery.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Как обычно, вначале код:&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Текст .conkyrc:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title WidgetBattery&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type panel&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment middle_right&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 200 80&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_load ~/LuaScript.lua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_draw_hook_pre startlua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Текст LuaScript.lua:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;require 'cairo'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function conky_startlua()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if conky_window == nil then return end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cr = cairo_create(cs)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, 190, 70, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (10, 10, 190, 70)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0x666666, 0.5))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.4, fRGBtoARGB(0x333333, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x111111, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (12, 12, 187, 67, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x111111, 0.05))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (11, 11, 189, 69, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.2))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (56, 36, 'Батарея', 'DejaVu Sans Condensed', 18, 0, 0, 0x000000, 0.3, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (55, 35, 'Батарея', 'DejaVu Sans Condensed', 18, 0, 0, 0xffffff, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nPerc = tonumber (conky_parse('${battery_percent BAT1}')&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (56, 66, nPerc .. '%', 'DejaVu Sans Condensed', 18, 0, 0, 0x000000, 0.3, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawTextCenter (55, 65, nPerc .. '%', 'DejaVu Sans Condensed', 18, 0, 0, 0xffffff, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (110, 20, 70, 50, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.3))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 4)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, 182, 35)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, 182, 55)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (110, 20, fLineScale (70, 0, 100, nPerc), 50, 3)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nColor1 = 0x00ff00&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nColor2 = 0x009900&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nColor3 = 0x005500&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nPerc &amp;lt;= 50 then&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor1 = 0xffff00&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor2 = 0x999900&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor3 = 0x555500&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nPerc &amp;lt;= 20 then&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor1 = 0xff0000&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor2 = 0x990000&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nColor3 = 0x550000&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (20, 20, 20, 70)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(nColor1, 1))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.5, fRGBtoARGB(nColor2, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(nColor3, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_destroy(cr)&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRoundRect (nXCoord, nYCoord, nWidth, nHeight, nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXCoord+nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth-nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nRadius, nRadius, math.rad(270), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth, nYCoord+nHeight-nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(0), math.rad(90))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nRadius, nYCoord+nHeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(90), math.rad(180))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord+nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nRadius, nRadius, math.rad(180), math.rad(270))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fDrawTextCenter (nXCenter, nYCenter, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local extents = cairo_text_extents_t:create()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_font_size (cr, sFontSize)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_text_extents (cr, sText, extents)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nXSpace = nXCenter-(extents.width/2)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nYSpace = nYCenter&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to (cr, nXSpace, nYSpace)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, nRotate*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_show_text(cr, sText)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, (0-nRotate)*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRGBtoARGB (nColor, nAlpha)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return ((nColor / 0x10000) % 0x100) / 255., ((nColor / 0x100) % 0x100) / 255., (nColor % 0x100) / 255., nAlpha&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fLineScale (nScaleLength, nScaleMin, nScaleMax, nValueScale)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;lt; nScaleMin then nValueScale = nScaleMin end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;gt; nScaleMax then nValueScale = nScaleMax end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsScaleLength = nScaleMax - nScaleMin&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nDivScale = nScaleLength/nAbsScaleLength&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsValueScale = (nValueScale - nScaleMin) * nDivScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale == nScaleMax then nAbsValueScale = nScaleLength end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return nAbsValueScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Пороговые значения здесь необходимы для цветового оповещения пользователя о скором разряде аккумуляторной батареи мобильного устройства. С одной стороны это можно определить по цифрам, но с другой - красный цвет гораздо быстрее заставит отреагировать нежели проценты, на которые обращают внимание слишком поздно.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Такую раскраску можно применить и для виджетов файловой системы, чтобы вовремя подготавливать свободное дисковое пространство под очередную порцию мультимедиа.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Жаль, что подобный "виджет" нельзя сделать для определения качества водопроводной воды, которое с каждой весной все хуже и хуже. Если у вас такие же проблемы, как и у меня - можете узнать &lt;a href="http://coolmart.ru/" title="какой фильтр для воды выбрать"&gt;&lt;b&gt;&lt;i&gt;какой фильтр для воды выбрать&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, чтобы решить этот вопрос раз и навсегда. Или так и будем ждать, когда хоть что-то измениться в этой стране...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-4109644721476347449?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua_23.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-k8G6Jn69Oq8/T5UNjJt12ZI/AAAAAAAABTo/I2X0oXiZun8/s72-c/WidgetBattery.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-2677920281718021766</guid><pubDate>Sun, 22 Apr 2012 06:03:00 +0000</pubDate><atom:updated>2012-04-22T10:03:56.119+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Статус аккумуляторной батареи</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Еще один параметр состояния системы, который &amp;nbsp;необходимо знать пользователю переносных устройств - заряд аккумуляторной батареи и предполагаемое время ее разряда. Кому захочется остаться без любимого нетбука в самый неподходящий момент? Наверно, никому.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-70XHe5JJYc0/T5OdlKZhRKI/AAAAAAAABTg/bk1CCqPZY4o/s1600/Battery.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-70XHe5JJYc0/T5OdlKZhRKI/AAAAAAAABTg/bk1CCqPZY4o/s400/Battery.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Текст .conkyrc:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title Battery&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type normal&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment top_left&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 350 300&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;font Ubuntu:size=10:weight=normal&lt;/i&gt;&lt;br /&gt;&lt;i&gt;color0 ffffff&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${color0}Батарея:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Статус:${goto 200}${battery BAT1}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Статус:${goto 200}${battery_short BAT1}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Заряд:${goto 200}${battery_bar BAT1}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Заряд:${goto 200}${battery_percent BAT1}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Время заряда/разряда:${goto 200}${battery_time BAT1}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;${battery батарея}&lt;/b&gt;&lt;/i&gt; - отображает статус батареи и процент заряда, где “батарея” - название папки по адресу “/proc/acpi/battery/”;&lt;br /&gt;&lt;i&gt;&lt;b&gt;${battery_short батарея}&lt;/b&gt;&lt;/i&gt; - отображает буквенное обозначение стутаса (C - заряд, D - разряд, F - батарея полностью заряжена, N - отсутствует, E - разряжена, U - неизвестно) и заряд батареи в процентах;&lt;br /&gt;&lt;i&gt;&lt;b&gt;${battery_bar ширина, высота батарея}&lt;/b&gt;&lt;/i&gt; - выводит прямоугольный индикатор,&lt;br /&gt;отображающий заряд аккумуляторной баттареи, с заданной высотой и шириной (в пикселях);&lt;br /&gt;&lt;i&gt;&lt;b&gt;${battery_percent батарея}&lt;/b&gt;&lt;/i&gt; - отображает заряд батареи в процентах;&lt;br /&gt;&lt;i&gt;&lt;b&gt;${battery_time батарея}&lt;/b&gt;&lt;/i&gt; - предполагаемое время заряда/разряда батареи.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Конечно, в большинстве случаем эта информация отражена в системном трее, но при ее отсутствии или для добавления какого-либо функционала можно воспользоваться возможностями системного монитора Conky. К тому же, вывести такие данные очень просто.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Для любителей мобильных устройств, помимо информации о заряде аккумуляторной батареи, возможно будут интересны &lt;a href="http://gadgetbum.ru/?cat=5" title="новинки gps"&gt;новинки gps&lt;/a&gt; , которых с каждым днем становиться все больше. Но, несмотря на засилье ноубуков, нетбуков, планшетов и смартфонов, привычный ПК по-прежнему остается на нашем столе. И банальные заметки тоже с вами! :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-2677920281718021766?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/blog-post_22.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-70XHe5JJYc0/T5OdlKZhRKI/AAAAAAAABTg/bk1CCqPZY4o/s72-c/Battery.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-3063257627548827960</guid><pubDate>Sat, 21 Apr 2012 06:56:00 +0000</pubDate><atom:updated>2012-04-21T10:56:29.462+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Conky+Lua. Виджет RSS</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Виджет, отображающий ленту новостей не представляет из себя что-то сложное. RSS - это прежде всего текст, а универсальные функции для его вывода у нас уже есть. Единственный нюанс, который нужно учесть - это длина заголовков. Она может превышать ширину виджета, поэтому их придется обрезать, но об этом ниже. А пока сама конфигурация Conky и Lua-скрипт.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-88ieFE2Uyfc/T5JZ3bhB_1I/AAAAAAAABTY/XZIykhUPniE/s1600/RSSWidget.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-88ieFE2Uyfc/T5JZ3bhB_1I/AAAAAAAABTY/XZIykhUPniE/s400/RSSWidget.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;Текст .conkyrc:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title WidgetRss&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type panel&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment middle_right&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 150&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 200 200&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_load ~/LuaScript.lua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;lua_draw_hook_pre startlua&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Текст LuaScript.lua:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;require 'cairo'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function conky_startlua()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if conky_window == nil then return end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cr = cairo_create(cs)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (10, 10, 190, 190, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local pLin = cairo_pattern_create_linear (10, 10, 190, 190)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.0, fRGBtoARGB(0x666666, 0.5))&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 0.4, fRGBtoARGB(0x333333, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_add_color_stop_rgba (pLin, 1, fRGBtoARGB(0x111111, 0.5))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source (cr, pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_fill(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_pattern_destroy (pLin)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (12, 12, 187, 187, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0x111111, 0.05))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fRoundRect (11, 11, 189, 189, 5)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 0.2))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_stroke(cr)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_line_width (cr, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB(0xffffff, 1))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawText (26, 36, 'RSS', 'DejaVu Sans Condensed', 18, 0, 0, 0x000000, 0.3, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawText (25, 35, 'RSS', 'DejaVu Sans Condensed', 18, 0, 0, 0xffffff, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for i = 0,9 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;sText = fRssRead('http://feeds.feedburner.com/blogspot/fjle', 10, 'item_title', i)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawText (26, 56+i*15, sText .. '...', 'DejaVu Sans Condensed', 12, 0, 0, 0x000000, 0.3, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;fDrawText (25, 55+i*15, sText .. '...', 'DejaVu Sans Condensed', 12, 0, 0, 0xffffff, 1, 0)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_destroy(cr)&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRssRead(sUrl, nInterval, sDesc, nNum)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local sRss = conky_parse('${rss ' .. sUrl .. ' ' .. nInterval .. ' ' .. sDesc ..' ' .. nNum .. '}')&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nLenRss = string.len (sRss)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local i = 20&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local x = string.byte (sRss, i)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for row = 0, 7 do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;local nLenRss = string.len (sRss)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;for a = i, nLenRss do&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;x = string.byte (sRss, i)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if x == 32 then break end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local sView = 'ok'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;i = i + 1&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;end&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;return string.sub(sRss, 1, i-1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fLineScale (nScaleLength, nScaleMin, nScaleMax, nValueScale)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;lt; nScaleMin then nValueScale = nScaleMin end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale &amp;gt; nScaleMax then nValueScale = nScaleMax end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsScaleLength = nScaleMax - nScaleMin&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nDivScale = nScaleLength/nAbsScaleLength&lt;/i&gt;&lt;br /&gt;&lt;i&gt;nAbsValueScale = (nValueScale - nScaleMin) * nDivScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;if nValueScale == nScaleMax then nAbsValueScale = nScaleLength end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return nAbsValueScale&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRoundRect (nXCoord, nYCoord, nWidth, nHeight, nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to(cr, nXCoord+nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth-nRadius, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nRadius, nRadius, math.rad(270), math.rad(360))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nWidth, nYCoord+nHeight-nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nWidth-nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(0), math.rad(90))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord+nRadius, nYCoord+nHeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nHeight-nRadius, nRadius, math.rad(90), math.rad(180))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_line_to(cr, nXCoord, nYCoord+nRadius)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_arc (cr, nXCoord+nRadius, nYCoord+nRadius, nRadius, math.rad(180), math.rad(270))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fDrawText (nXCoord, nYCoord, sText, sFontName, sFontSize, nFontSlant, nFontWeight, nColor, nAlpha, nRotate)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_select_font_face (cr, sFontName, nFontSlant, nFontWeight)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_font_size (cr, sFontSize)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_move_to (cr, nXCoord, nYCoord)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_set_source_rgba(cr, fRGBtoARGB (nColor, nAlpha))&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, nRotate*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_show_text(cr, sText)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;cairo_rotate (cr, (0-nRotate)*math.pi/180)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function fRGBtoARGB (nColor, nAlpha)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;return ((nColor / 0x10000) % 0x100) / 255., ((nColor / 0x100) % 0x100) / 255., (nColor % 0x100) / 255., nAlpha&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;end&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Для разбора заголовков новостей введена функция fRssRead(sUrl, nInterval, sDesc, nNum) с параметрами, повторяющими аналогичные команде Conky - ${rss урл интервал секция позиция}. В полученном заголовке ищется пробел (код 32) с символа, заданного переменной “i”, при его нахождении строка обрезается и возращается в точку вызова функции. Поиск именно пробела, в данном случае, облегчает работу со строками.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;На мой блог все чаще стали попадать пользователи набирающие в поиске любое словосочетание с упоминанием Conky. Куда попадают люди, ищущие &lt;a href="http://dom-2.tv/" title="тнт онлайн смотреть дом 2"&gt;тнт онлайн смотреть дом 2&lt;/a&gt; , я не знаю... может быть в ад или еще хуже. Из-за таких тенденций скоро у обеспеченных людей появятся личные "аквариумы", хотя у некоторых, наверно, уже есть :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-3063257627548827960?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/conkylua-rss.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-88ieFE2Uyfc/T5JZ3bhB_1I/AAAAAAAABTY/XZIykhUPniE/s72-c/RSSWidget.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2051948051894215337.post-2770518670124669187</guid><pubDate>Thu, 19 Apr 2012 16:48:00 +0000</pubDate><atom:updated>2012-04-19T20:48:28.935+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conky</category><title>Загрузка RSS</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Мы уже привыкли, что Conky - это не только системный монитор, но еще и неплохой помощник. С его помощью мы уже научились выводить время, дату и изображения. Пришло время получать информацию из интернета и чуть ниже представлен пример, который отображает ленту новостей этого блога.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9uLD4j7MSXs/T5BAmNSkC-I/AAAAAAAABTQ/cOnFu9vYfmA/s1600/RSS.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-9uLD4j7MSXs/T5BAmNSkC-I/AAAAAAAABTQ/cOnFu9vYfmA/s400/RSS.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Текст .conkyrc:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;own_window yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_title RSS&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_type normal&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_argb_visual yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_transparent yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager&lt;/i&gt;&lt;br /&gt;&lt;i&gt;double_buffer yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;use_xft yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;alignment top_left&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_x 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gap_y 0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;minimum_size 400 300&lt;/i&gt;&lt;br /&gt;&lt;i&gt;max_text_width 100&lt;/i&gt;&lt;br /&gt;&lt;i&gt;update_interval 1.0&lt;/i&gt;&lt;br /&gt;&lt;i&gt;font Ubuntu:size=10:weight=normal&lt;/i&gt;&lt;br /&gt;&lt;i&gt;color0 ffffff&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;TEXT&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${color0}${rss http://feeds.feedburner.com/blogspot/fjle 5 feed_title}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 0}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 1}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 2}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 3}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 4}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 5}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 6}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 7}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 8}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;${rss http://feeds.feedburner.com/blogspot/fjle 5 item_title 9}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Для получения RSS-ленты используется команда &lt;i&gt;&lt;b&gt;${rss урл интервал секция позиция}&lt;/b&gt;&lt;/i&gt;, где:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;урл&lt;/b&gt;&lt;/i&gt; - ссылка на интересующую ленту;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;интервал&lt;/b&gt;&lt;/i&gt; - интервал обновления в минутах;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;секция&lt;/b&gt;&lt;/i&gt; - может принимать значения: &lt;i&gt;&lt;b&gt;feed_title&lt;/b&gt;&lt;/i&gt; - название ленты, &lt;b&gt;&lt;i&gt;item_title&lt;/i&gt;&lt;/b&gt; - заголовок (&lt;b&gt;&lt;i&gt;позиция&lt;/i&gt;&lt;/b&gt; укажет на его порядковый номер), &lt;b&gt;&lt;i&gt;item_desc&lt;/i&gt;&lt;/b&gt; - содержание (&lt;b&gt;&lt;i&gt;позиция&lt;/i&gt;&lt;/b&gt; укажет на его порядковый номер) и &lt;b&gt;&lt;i&gt;item_titles&lt;/i&gt;&lt;/b&gt; - все заголовки (&lt;b&gt;&lt;i&gt;позиция&lt;/i&gt;&lt;/b&gt; устанавливает число пробелов между ними).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Эта возможность Conky позволяет не только читать последние новости, но и получать телепрограмму или прогноз погоды, если, конечно, они представлены в виде RSS-фида. Можно мониторить актуальные места отдыха и даже узнать, где находится &lt;a href="http://zatoka-ua.com/gribovka" title="грибовка"&gt;грибовка&lt;/a&gt;  и другие курорты Черного моря. Вообщем, все, на что способна ваша фантазия. Дерзайте!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2051948051894215337-2770518670124669187?l=ramzport.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://ramzport.blogspot.com/2012/04/rss.html</link><author>noreply@blogger.com (ramzport)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-9uLD4j7MSXs/T5BAmNSkC-I/AAAAAAAABTQ/cOnFu9vYfmA/s72-c/RSS.png" height="72" width="72" /><thr:total>0</thr:total></item></channel></rss>

